## 2 Methodology
### CNN-Based Models  
CNN architectures are mainly composed of the convolutional layer, the pooling layer, and the fully connected layer. The convolutional layer is used to extract features. The pooling layer is a process of subsampling, which can extract important features and reduce the parameters. The full connection layer implements linear transformation in high dimensional space, and softmax is used as the classifier. The structure of the VGG network is relatively simple, mainly composed of a \(3\times 3\) convolution layer, maximum pooling layer, and fully connected layer. VGG-19 consists of sixteen \(3\times 3\) convolution layers, five maximum pooling layers, and three fully connected layers. SqueezeNet is a lightweight convolutional neural network which is mainly divided into three parts: The first part is a \(3\times 3\) convolutional layer. The second part consists of several fire modules and the number of filters per fire module are gradually increased from the beginning to the end of the network. A fire module comprises the following: a squeeze convolution layer (which has only \(1\times 1\) filters), feeding into an expand layer that has a mix of \(1\times 1\) and \(3\times 3\) convolution filters. The third part consists of a \(1\times 1\) convolutional layer, a global average pooling layer, and a fully connected layer. MobileNet V2 is an efficient lightweight neural network. Its core structure is the inverted residual block. The inverted residual block first increases the number of channels through \(1\times 1\) convolution, then depthwise separable convolution is used to extract features. \begin{table}
\begin{tabular}{c c c c c} \hline \hline  & **Loose\_1** & **Water\_1** & **Poor\_1** & **Total** \\ \hline
**Training set** & 3001 & 7242 & 8979 & 19,222 \\
**Validation set** & 500 & 1207 & 1496 & 3203 \\
**Test set** & 1501 & 3607 & 4505 & 9613 \\ \hline \hline \end{tabular}
\end{table} 
Table 2: The number of samples in the training, validation, and test set. Figure 3: Three-dimensional distribution plot of the dataset after t-SNE dimensionality reduction. Finally, another \(1\times 1\) convolution is used to reduce the number of channels. There are shortcut connections between the input and output of the inverted residual block, only in the case that the size of the input and output feature maps is the same. MobileNet V2 consists of a 3 \(\times\) 3 convolutional layer, multiple inverted residual blocks, a \(1\times 1\) convolutional layer, a global averaging pooling layer, and a fully connected layer. The core structure of EfficientNet is the Mobile Inverted Bottleneck Convolution (MBConv) module which combines the depthwise separable convolution and squeeze-and-excitation (SE) networks. The MBConv module mainly consists of a \(1\times 1\) convolution, a depthwise separable convolution, an SE module, and a \(1\times 1\) convolution. There are shortcut connections between the input and output of the MBConv module, only in the case that the size of the input and output feature maps is the same. EfficientNet B0 consists of a \(3\times 3\) convolutional layer, multiple MBConv modules, a \(1\times 1\) convolutional layer, a global averaging pooling layer, and a fully connected layer. The core idea of DenseNet is to introduce direct connections from any layer to all subsequent layers. This direct connection promotes feature reuse, enhances feature propagation, and helps to alleviate the problem of gradient disappearance. DenseNet consists of several basic components: an initial convolutional layer, multiple dense blocks, transition layers, a global averaging pooling layer, and a fully connected layer. Each dense block consists of multiple dense layers, and each dense layer consists of a \(1\times 1\) convolution and a \(3\times 3\) convolution. The transition layers are used between dense blocks to reduce the number of channels by \(1\times 1\) convolution and the size of the feature map by the average pooling layer. ResNet alleviates the problem of gradient vanishing and gradient exploding.