<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD Journal Publishing DTD v2.3 20070202//EN" "journalpublishing.dtd">
<article article-type="research-article" dtd-version="2.3" xml:lang="EN" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink">
<front>
<journal-meta>
<journal-id journal-id-type="publisher-id">Front. Earth Sci.</journal-id>
<journal-title>Frontiers in Earth Science</journal-title>
<abbrev-journal-title abbrev-type="pubmed">Front. Earth Sci.</abbrev-journal-title>
<issn pub-type="epub">2296-6463</issn>
<publisher>
<publisher-name>Frontiers Media S.A.</publisher-name>
</publisher>
</journal-meta>
<article-meta>
<article-id pub-id-type="publisher-id">1079447</article-id>
<article-id pub-id-type="doi">10.3389/feart.2022.1079447</article-id>
<article-categories>
<subj-group subj-group-type="heading">
<subject>Earth Science</subject>
<subj-group>
<subject>Original Research</subject>
</subj-group>
</subj-group>
</article-categories>
<title-group>
<article-title>Rock image classification using deep residual neural network with transfer learning</article-title>
<alt-title alt-title-type="left-running-head">Chen et al.</alt-title>
<alt-title alt-title-type="right-running-head">
<ext-link ext-link-type="uri" xlink:href="https://doi.org/10.3389/feart.2022.1079447">10.3389/feart.2022.1079447</ext-link>
</alt-title>
</title-group>
<contrib-group>
<contrib contrib-type="author">
<name>
<surname>Chen</surname>
<given-names>Weihao</given-names>
</name>
<xref ref-type="aff" rid="aff1">
<sup>1</sup>
</xref>
<uri xlink:href="https://loop.frontiersin.org/people/2060585/overview"/>
</contrib>
<contrib contrib-type="author" corresp="yes">
<name>
<surname>Su</surname>
<given-names>Lumei</given-names>
</name>
<xref ref-type="aff" rid="aff1">
<sup>1</sup>
</xref>
<xref ref-type="aff" rid="aff2">
<sup>2</sup>
</xref>
<xref ref-type="corresp" rid="c001">&#x2a;</xref>
</contrib>
<contrib contrib-type="author">
<name>
<surname>Chen</surname>
<given-names>Xinqiang</given-names>
</name>
<xref ref-type="aff" rid="aff1">
<sup>1</sup>
</xref>
</contrib>
<contrib contrib-type="author">
<name>
<surname>Huang</surname>
<given-names>Zhihao</given-names>
</name>
<xref ref-type="aff" rid="aff1">
<sup>1</sup>
</xref>
<uri xlink:href="https://loop.frontiersin.org/people/2097694/overview"/>
</contrib>
</contrib-group>
<aff id="aff1">
<sup>1</sup>
<institution>School of Electrical Engineering and Automation</institution>, <institution>Xiamen University of Technology</institution>, <addr-line>Xiamen</addr-line>, <country>China</country>
</aff>
<aff id="aff2">
<sup>2</sup>
<institution>Xialong Institute of Engineering and Technology</institution>, <addr-line>Longyan</addr-line>, <country>China</country>
</aff>
<author-notes>
<fn fn-type="edited-by">
<p>
<bold>Edited by:</bold> <ext-link ext-link-type="uri" xlink:href="https://loop.frontiersin.org/people/1794204/overview">Abbas Maghsoudi</ext-link>, Amirkabir University of Technology, Iran</p>
</fn>
<fn fn-type="edited-by">
<p>
<bold>Reviewed by:</bold> <ext-link ext-link-type="uri" xlink:href="https://loop.frontiersin.org/people/775907/overview">Kalpana Bhatt</ext-link>, Purdue University, United States</p>
<p>
<ext-link ext-link-type="uri" xlink:href="https://loop.frontiersin.org/people/639576/overview">Sadegh Karimpouli</ext-link>, University of Zanjan, Iran</p>
</fn>
<corresp id="c001">&#x2a;Correspondence: Lumei Su, <email>sulumei@163.com</email>
</corresp>
<fn fn-type="other">
<p>This article was submitted to Environmental Informatics and Remote Sensing, a section of the journal Frontiers in Earth Science</p>
</fn>
</author-notes>
<pub-date pub-type="epub">
<day>16</day>
<month>01</month>
<year>2023</year>
</pub-date>
<pub-date pub-type="collection">
<year>2022</year>
</pub-date>
<volume>10</volume>
<elocation-id>1079447</elocation-id>
<history>
<date date-type="received">
<day>25</day>
<month>10</month>
<year>2022</year>
</date>
<date date-type="accepted">
<day>22</day>
<month>11</month>
<year>2022</year>
</date>
</history>
<permissions>
<copyright-statement>Copyright &#xa9; 2023 Chen, Su, Chen and Huang.</copyright-statement>
<copyright-year>2023</copyright-year>
<copyright-holder>Chen, Su, Chen and Huang</copyright-holder>
<license xlink:href="http://creativecommons.org/licenses/by/4.0/">
<p>This is an open-access article distributed under the terms of the Creative Commons Attribution License (CC BY). The use, distribution or reproduction in other forums is permitted, provided the original author(s) and the copyright owner(s) are credited and that the original publication in this journal is cited, in accordance with accepted academic practice. No use, distribution or reproduction is permitted which does not comply with these terms.</p>
</license>
</permissions>
<abstract>
<p>Rock image classification is a significant part of geological research. Compared with traditional image classification methods, rock image classification methods based on deep learning models have the great advantage in terms of automatic image features extraction. However, the rock classification accuracies of existing deep learning models are unsatisfied due to the weak feature extraction ability of the network model. In this study, a deep residual neural network (ResNet) model with the transfer learning method is proposed to establish the corresponding rock automatic classification model for seven kinds of rock images. ResNet34 introduces the residual structure to make it have an excellent effect in the field of image classification, which extracts high-quality rock image features and avoids information loss. The transfer learning method abstracts the deep features from the shallow features, and better express the rock texture features for classification in the case of fewer rock images. To improve the generalization of the model, a total of 3,82,536 rock images were generated for training <italic>via</italic> image slicing and data augmentation. The network parameters trained on the Texture Library dataset which contains 47 types of texture images and reflect the characteristics of rocks are used for transfer learning. This pre-trained weight is loaded when training the ResNet34 model with the rock dataset. Then the model parameters are fine-tuned to transfer the model to the rock classification problem. The experimental results show that the accuracy of the model without transfer learning reached 88.1%, while the model using transfer learning achieved an accuracy of 99.1%. Aiming at geological engineering field investigation, this paper studies the embedded deployment application of the rock classification network. The proposed rock classification network model is transplanted to an embedded platform. By designing a rock classification system, the off-line rock classification is realized, which provides a new solution for the rock classification problem in the geological survey. The deep residual neural network and transfer learning method used in this paper can automatically classify rock features without manually extracting. These methods reduce the influence of subjective factors and make the rock classification process more automatic and intelligent.</p>
</abstract>
<kwd-group>
<kwd>deep learning</kwd>
<kwd>image recognition</kwd>
<kwd>rock classification</kwd>
<kwd>transfer learning</kwd>
<kwd>convolutional neural network</kwd>
</kwd-group>
</article-meta>
</front>
<body>
<sec id="s1">
<title>1 Introduction</title>
<p>Rock classification is the basis for studying geological reservoir characteristics and plays an essential role in vast fields, such as geotechnical engineering, mineralogy, petrology, rock mechanics, and mineral resource prospecting (<xref ref-type="bibr" rid="B22">Karimpouli and Tahmasebi, 2019</xref>; <xref ref-type="bibr" rid="B14">Guo et al., 2022</xref>; <xref ref-type="bibr" rid="B18">Houshmand et al., 2022</xref>). The efficiency of rock classification is closely associated with the efficiency of geological surveys and therefore needs urgent attention. Rocks classification can be accomplished <italic>via</italic> traditional methods, including remote sensing, electromagnetic field, geochemistry, hand specimen and thin section analysis (<xref ref-type="bibr" rid="B34">Ru and Jiong, 2019</xref>). These traditional methods are based on human observation, manual operation and empirical classification. Rock classification using traditional methods mainly extracts useful information features from rock images by professionals through specialized equipment, relying on people&#x2019;s experience and equipment sensitivity. These methods are often limited by the professionalism of experimental equipment and the theoretical level of researchers, resulting in much time spent, low efficiency and many other problems.</p>
<p>Rock classification using traditional machine learning methods usually need to manually design feature extraction methods and input rock features into the classifier for training, to realize rock classification. <xref ref-type="bibr" rid="B37">Singh et al. (2010)</xref> used a multilayer perceptron to extract 27 features from basalt rock slice images and achieved the classification of 140 rock sample slice images. <xref ref-type="bibr" rid="B13">Gon&#xe7;alves and Leta (2010)</xref> proposed a neuro-fuzzy hierarchical classification method based on binary space division for macroscopic rock structure classification, and the final classification accuracy reached 73%. <xref ref-type="bibr" rid="B28">M&#x142;ynarczuk et al. (2013)</xref> used the nearest neighbor algorithm and k-nearest neighbor algorithm to realize the classification of 9 different types of rocks. <xref ref-type="bibr" rid="B35">Sharif et al. (2015)</xref> proposed an autonomous rock classification system based on Bayesian image analysis for planetary geological exploration. The rock sample surface was described by 13 Haralick texture parameters and the information was automatically catalogued into a 5-bin data structure, then the Bayesian probability was calculated and the recognition result was output. <xref ref-type="bibr" rid="B31">Patel and Chatterjee (2016)</xref> realized the classification of limestone by extracting color, shape and texture features from limestone images and inputting them into a probabilistic neural network. <xref ref-type="bibr" rid="B39">Wang and Sun (2021)</xref> proposed a rock classification method using geometric features of rock particles instead of local structural features, which effectively solved the problem of fuzzy boundaries.</p>
<p>With the development of artificial intelligence, machine learning and deep learning are widely used in various image classification problems. Since traditional machine learning need to manually extract rock features from a huge training dataset, the training work is difficult and rather laborious. Using deep learning methods to construct automatic rock classification models has become a new way for rock classification (<xref ref-type="bibr" rid="B10">Fan et al., 2020</xref>; <xref ref-type="bibr" rid="B9">Falivene et al., 2022</xref>). <xref ref-type="bibr" rid="B6">Cheng et al. (2017)</xref> proposed an automatic rock grain size classification method based on the convolutional neural network. The convolutional neural network was trained with 4,800 samples from the Ordos Basin, which contains three categories, and the classification of rock slice samples under the microscope was realized. But its image data are thin sections of rock casts taken under a polarizing microscope, and the production of the data set is relatively complex and not easy to obtain. Based on the Inception-v3 network model, <xref ref-type="bibr" rid="B46">Zhang et al. (2018)</xref> used transfer learning to establish a classification model of rock images, which could identify and classify three types of rocks with obvious characteristics: granite, breccia and phyllite, and the accuracy of test data reached more than 85%. <xref ref-type="bibr" rid="B3">Bai et al. (2018)</xref> built a deep learning model for rock recognition based on the convolutional neural network and trained it on 1,000 rock pictures collected on the network or taken in real life, achieving a recognition accuracy of 63%. <xref ref-type="bibr" rid="B2">Bai et al. (2019)</xref> also used the VGG network model to establish a rock slice image recognition model to classify rock slice images of six common rocks such as granite and dolomite, and the recognition accuracy reached 82%. <xref ref-type="bibr" rid="B21">Imamverdiyev and Sukhostat, 2019</xref> proposed a new 1D-CNN model trained on multiple optimization algorithms, which is suitable for the lithofacies classification of complex landforms. <xref ref-type="bibr" rid="B36">Shuteng and YongZhang (2018)</xref> designed a targeted U-net convolutional neural network model to automatically extract deep feature information of minerals under the mineral phase microscope and realize under-mirror ore mineral intelligent recognition and classification. <xref ref-type="bibr" rid="B11">Feng et al. (2019)</xref> established a rock recognition model based on the AlexNet twin convolutional neural network for fresh rock sections. Its advantage lies in the comprehensive consideration of global image information and local texture information of rocks, but its disadvantages are the large model and the lack of high classification accuracy. <xref ref-type="bibr" rid="B19">Hu et al. (2020)</xref> trained a lithology recognition model with an accuracy of 90% by applying image data in big geological data and based on deep learning. <xref ref-type="bibr" rid="B45">Zeng et al. (2021)</xref> used a two-layer fully connected neural network to increase the dimension of the scalar Mohs hardness, and used EfficientNet-b4 to extract the feature of the ore image, then fused the results of the two layers and finally sent them into the fully connected layer to complete the classification of 36 different types of ores. <xref ref-type="bibr" rid="B25">Liang et al. (2021)</xref> first used a ViT network structure that evolved from transformers to classify seven different types of ores. <xref ref-type="bibr" rid="B23">Koeshidayatullah et al. (2022)</xref> proposed a novel FaciesViT model based on the transformer framework for automatic core facies classification, which is much better than CNN and hybrid CNN-ViT models, and does not require preprocessing and feature extraction. In addition to rock images of natural scenes, many scholars also use microscopic rock images and spectral images for rock classification. <xref ref-type="bibr" rid="B20">Iglesias et al. (2019)</xref> used ResNet18 to classify the polarized light microscopic images of five ores, including amphibole, quartz, garnet, biotite, and olivine. The final model accuracy reached 89%. <xref ref-type="bibr" rid="B40">Xiao et al. (2021)</xref> first used the visible infrared reflectance spectrometer to obtain the spectral image of the ore, and then input it into the custom dilated convolutional neural network for training, and realized the classification of five kinds of ore such as hematite and magnetite.</p>
<p>Although the previous models have realized rock classification based on deep learning, the used models have redundancy and poor generalization. They can achieve low classification accuracy and do not consider the actual deployment and application of the model for geological exploration scenarios. To address these problems, a rock image classification method based on the pre-trained residual neural network (ResNet) by the way of transfer learning is proposed. ResNet can avoid feature loss of the convolution layer during information transmission, and can learn new features based on input features with better performance. In this study, ResNet is used to extract the deep feature information of rock images in order to classify all kinds of rocks. Transfer learning can reduce training time and consumption cost in the case of insufficient datasets, and achieve the goal of faster and better classification effect on small datasets. The texture feature is an important distinguishing point of all kinds of rocks. The Texture Library dataset is used to pre-train ResNet34 so that the model can extract texture features of rock images more quickly and effectively. The experimental results indicate that the model has high classification accuracy and good generalization ability. Finally, considering the application of geological surveys and construction sites, a rock classification system was developed. The rock classification model was deployed on the embedded device to achieve high accuracy of offline rock classification.</p>
</sec>
<sec sec-type="materials" id="s2">
<title>2 Materials</title>
<p>The rock dataset is provided by Guangdong TipDM Intelligent Technology Co., Ltd and includes the information for 315 rock images. The rock samples were obtained by taking pictures of rock debris and drill core samples under the white light from an industrial camera at the mud logging site. The rock dataset consists of 7 categories of rock images: black coal, gray black mudstone, gray argillaceous siltstone, gray fine sandstone, light gray fine sandstone, dark gray silty mudstone and dark gray mudstone. The number of rock images varies by type and each image has dimensions of 4,096 &#xd7; 3,000 pixels. Different types of rocks have slight differences in morphological characteristics. Sandstone is very small and contains a lot of sand grains. Mudstone is mostly lamellar and easily broken into fragments. The specific number is shown in <xref ref-type="fig" rid="F1">Figure 1</xref> and the corresponding characteristics of the seven rocks are shown in <xref ref-type="table" rid="T1">Table 1</xref>.</p>
<fig id="F1" position="float">
<label>FIGURE 1</label>
<caption>
<p>The specific numbers of different rock images.</p>
</caption>
<graphic xlink:href="feart-10-1079447-g001.tif"/>
</fig>
<table-wrap id="T1" position="float">
<label>TABLE 1</label>
<caption>
<p>The characteristics of seven types of rocks.</p>
</caption>
<table>
<thead valign="top">
<tr>
<th align="left">Figure</th>
<th align="left">Category</th>
<th align="left">Color</th>
<th align="left">Characteristic</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td align="left">
<inline-graphic xlink:href="FEART_feart-2022-1079447_wc_tfx1.tif"/>
</td>
<td align="left">Black coal</td>
<td align="left">Black</td>
<td align="left">Lumpy, Granular</td>
</tr>
<tr>
<td align="left">
<inline-graphic xlink:href="FEART_feart-2022-1079447_wc_tfx2.tif"/>
</td>
<td align="left">Dark gray mudstone</td>
<td align="left">Gray black</td>
<td align="left">Argillaceous structure, Massive structure</td>
</tr>
<tr>
<td align="left">
<inline-graphic xlink:href="FEART_feart-2022-1079447_wc_tfx3.tif"/>
</td>
<td align="left">Dark gray silty mudstone</td>
<td align="left">Dark gray</td>
<td align="left">Silty and muddy structure, Bedding structure</td>
</tr>
<tr>
<td align="left">
<inline-graphic xlink:href="FEART_feart-2022-1079447_wc_tfx4.tif"/>
</td>
<td align="left">Gray black mudstone</td>
<td align="left">Dark gray</td>
<td align="left">Cryptocrystalline structure, Massive structure</td>
</tr>
<tr>
<td align="left">
<inline-graphic xlink:href="FEART_feart-2022-1079447_wc_tfx5.tif"/>
</td>
<td align="left">Grey argillaceous siltstone</td>
<td align="left">Gray</td>
<td align="left">Silty structure, Massive structure</td>
</tr>
<tr>
<td align="left">
<inline-graphic xlink:href="FEART_feart-2022-1079447_wc_tfx6.tif"/>
</td>
<td align="left">Grey fine sandstone</td>
<td align="left">Gray</td>
<td align="left">Fine grain structure, Massive structure</td>
</tr>
<tr>
<td align="left">
<inline-graphic xlink:href="FEART_feart-2022-1079447_wc_tfx7.tif"/>
</td>
<td align="left">Light gray fine sandstone</td>
<td align="left">Light gray</td>
<td align="left">Fine sand structure, Massive structure</td>
</tr>
</tbody>
</table>
</table-wrap>
<p>Datasets in deep learning are usually divided into the training set, validation set and test set, and different data subsets have different functions in model training. The training set is used to input data into the model to obtain results, then compare with the data labels to calculate the loss function, and finally update the parameters of the model through backpropagation to improve the performance of feature extraction and classification, so the training set accounts for the largest amount of data. The validation set is used to improve the training efficiency of the model. If the various hyperparameters are set or the model design is not reasonable when the model is under training, the model can respond to the accuracy of the validation set through the output, and then stop the training and make improvements in time. After the model is trained, the performance of the model can be evaluated using the test set. Similarly, the rock image dataset is randomly partitioned into the training set, validation set, and test set. If the ratio of the training set and validation set is too large, the model may overlearn and the model training time will grow, increasing the burden of model training, but a small ratio may also lead to model undertraining. The proportion of training, validation, and testing images in each label is set to 80%, 15%, and 5%, respectively. The dataset structure is shown in <xref ref-type="table" rid="T2">Table 2</xref>.</p>
<table-wrap id="T2" position="float">
<label>TABLE 2</label>
<caption>
<p>Details of the rock dataset.</p>
</caption>
<table>
<thead valign="top">
<tr>
<th align="left">Dataset</th>
<th align="left">Number (Initial)</th>
<th align="left">Number (After image slicing)</th>
<th align="left">Number (After data augmentation)</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td align="left">Training</td>
<td align="char" char=".">253</td>
<td align="char" char=".">27,324</td>
<td align="char" char=".">3,82,536</td>
</tr>
<tr>
<td align="left">Validation</td>
<td align="char" char=".">47</td>
<td align="char" char=".">47</td>
<td align="char" char=".">47</td>
</tr>
<tr>
<td align="left">Test</td>
<td align="char" char=".">15</td>
<td align="char" char=".">15</td>
<td align="char" char=".">15</td>
</tr>
<tr>
<td align="left">Total</td>
<td align="char" char=".">315</td>
<td align="char" char=".">27,386</td>
<td align="char" char=".">3,82,598</td>
</tr>
</tbody>
</table>
</table-wrap>
</sec>
<sec sec-type="methods" id="s3">
<title>3 Methods</title>
<p>In order to fully extract the textural characteristics of different rocks, a rock image classification method based on the pre-trained residual neural network generated from transfer learning is proposed. <xref ref-type="fig" rid="F2">Figure 2</xref> presents the flowchart of the methods in this research.</p>
<fig id="F2" position="float">
<label>FIGURE 2</label>
<caption>
<p>Flowchart of the methods.</p>
</caption>
<graphic xlink:href="feart-10-1079447-g002.tif"/>
</fig>
<sec id="s3-1">
<title>3.1 The architecture of ResNet-34</title>
<p>Deep convolutional neural networks have made remarkable achievements in image classification, object detection, semantic segmentation and other fields. With the advancement of technology, more and more deep neural network models with better effects are constantly emerging (<xref ref-type="bibr" rid="B27">Luo and Wang, 2021</xref>). However, it is found that not the deeper the number of network layers, the better the model effect. The increase in network depth not only does not make the accuracy achieved by the traditional network higher, but also produces problems such as gradient disappearance, gradient explosion, and degradation.</p>
<p>Residual neural networks (i.e., ResNet) enable feature information from the input or learned in the shallow layers of the network to flow into the deeper layers by employing shortcut connections (<xref ref-type="bibr" rid="B16">He et al., 2016a</xref>). As the depth of the network increases, ResNet ensures the validity of gradient information by shortcut connections to prevent gradient disappearance and performance degradation caused by too deep layers of the network. Residual neural networks have achieved impressive results in image classification competitions such as ImageNet (<xref ref-type="bibr" rid="B17">He et al., 2016b</xref>) and MS COCO (<xref ref-type="bibr" rid="B8">Dai et al., 2016</xref>). In this study, ResNet is used to extract deep feature information from rock images to avoid the feature loss of the convolutional layer caused by gradient disappearance and gradient explosion in the process of information transmission.</p>
<p>ResNet consists of multiple residual blocks. The residual block not only has sequential convolutional layers, but also skips some convolutional layers through shortcut connections alongside the convolutional layers, and passes the data from the input residual block directly to the output, which is added with the result of the operation through the convolutional layer. Each residual structural unit can be defined as follows:<disp-formula id="e1">
<mml:math id="m1">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi mathvariant="bold-italic">H</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mi mathvariant="bold-italic">F</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:math>
<label>(1)</label>
</disp-formula>Where <inline-formula id="inf1">
<mml:math id="m2">
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> is the input data, <inline-formula id="inf2">
<mml:math id="m3">
<mml:mrow>
<mml:mi>F</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> is the mapping function of the identity residuals and <inline-formula id="inf3">
<mml:math id="m4">
<mml:mrow>
<mml:mi>H</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> is the mapped solution function.</p>
<p>The residual block is shown in <xref ref-type="fig" rid="F3">Figure 3</xref>. Shortcut connection skips two layers of 3 &#xd7; 3 convolutional layer connected to the output. The output of the main line through the convolution operation is added to the input through the shortcut. Then the result is output through the ReLU activation function (<xref ref-type="bibr" rid="B29">Nair and Hinton, 2010</xref>).</p>
<fig id="F3" position="float">
<label>FIGURE 3</label>
<caption>
<p>Examples of residual blocks with shortcut connections for the residual network (ResNet).</p>
</caption>
<graphic xlink:href="feart-10-1079447-g003.tif"/>
</fig>
<p>
<xref ref-type="fig" rid="F4">Figure 4</xref> shows the ResNet architecture with 34 layers (i.e. ResNet34). The rock image input to resnet34 is first passed through a 7 &#xd7; 7 convolutional layer and a 3 &#xd7; 3 max pooling layer (both with a stride of 2), and then fed into 16 residual blocks. All of these residual blocks have a total of 32 layers. Finally, the network ends with an average pooling layer, a fully connected layer, and a softmax layer.</p>
<fig id="F4" position="float">
<label>FIGURE 4</label>
<caption>
<p>Detailed architectures for ResNet34.</p>
</caption>
<graphic xlink:href="feart-10-1079447-g004.tif"/>
</fig>
</sec>
<sec id="s3-2">
<title>3.2 Batch normalization</title>
<p>It is common for deep learning networks to consist of many layers. As the number of network layers increases, a significant deviation in data distribution across a layer will exacerbate, making it harder to optimize the model (<xref ref-type="bibr" rid="B42">Yan et al., 2020</xref>). Batch normalization (BN) can solve this problem well. Using batch normalization, data is divided into different groups and parameters are updated accordingly (<xref ref-type="bibr" rid="B41">Xiao et al., 2019</xref>). In the same group, the gradient direction is determined jointly, reducing randomness as the gradient declines. Furthermore, since the batch has fewer samples than the entire dataset, the amount of calculation has been significantly reduced. Batch normalization can avoid data offset because the batch normalization layer normalizes the input prior to the activation function.</p>
<p>In the ResNet34 rock image classification model we used, the BN is added before the ReLU activation function and after the convolutional layer. With the BN algorithm, parameter changes resulting from a different data distribution are minimized and the convergence speed during model training is accelerated. The formulas of batch normalization are as follows:<disp-formula id="e2">
<mml:math id="m5">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msup>
<mml:mover accent="true">
<mml:mi mathvariant="bold-italic">x</mml:mi>
<mml:mo>&#x5e;</mml:mo>
</mml:mover>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msup>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msup>
<mml:mi mathvariant="bold-italic">x</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msup>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold-italic">E</mml:mi>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:msup>
<mml:mi mathvariant="bold-italic">x</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
<mml:msqrt>
<mml:mrow>
<mml:mi mathvariant="bold-italic">V</mml:mi>
<mml:mi mathvariant="bold-italic">a</mml:mi>
<mml:mi mathvariant="bold-italic">r</mml:mi>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:msup>
<mml:mi mathvariant="bold-italic">x</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:msqrt>
</mml:mfrac>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:math>
<label>(2)</label>
</disp-formula>
<disp-formula id="e3">
<mml:math id="m6">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msup>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msup>
<mml:mo>&#x3d;</mml:mo>
<mml:msup>
<mml:mi mathvariant="bold-italic">&#x3b3;</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msup>
<mml:msup>
<mml:mover accent="true">
<mml:mi mathvariant="bold-italic">x</mml:mi>
<mml:mo>&#x5e;</mml:mo>
</mml:mover>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msup>
<mml:mo>&#x2b;</mml:mo>
<mml:msup>
<mml:mi mathvariant="bold-italic">&#x3b2;</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:math>
<label>(3)</label>
</disp-formula>Where, <inline-formula id="inf4">
<mml:math id="m7">
<mml:mrow>
<mml:msup>
<mml:mi>x</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:math>
</inline-formula> is the characteristic distribution statistic of the current layer network. <inline-formula id="inf5">
<mml:math id="m8">
<mml:mrow>
<mml:mi>E</mml:mi>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:msup>
<mml:mi>x</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> is the mean value of data in current layer. <inline-formula id="inf6">
<mml:math id="m9">
<mml:mrow>
<mml:msqrt>
<mml:mrow>
<mml:mi>V</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>r</mml:mi>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:msup>
<mml:mi>x</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:msqrt>
</mml:mrow>
</mml:math>
</inline-formula> is the standard variance of data in current layer. <inline-formula id="inf7">
<mml:math id="m10">
<mml:mrow>
<mml:msup>
<mml:mi>&#x3b3;</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf8">
<mml:math id="m11">
<mml:mrow>
<mml:msup>
<mml:mi>&#x3b2;</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:math>
</inline-formula> are the learning parameters of the model.</p>
<p>Through <xref ref-type="disp-formula" rid="e3">Eq. 3</xref>, the distribution of eigenvalues will be re-adjusted to a standard normal distribution and the eigenvalues are kept within the input-sensitive interval of the activation function, avoiding the disappearance of the gradient and speeding up the convergence.</p>
</sec>
<sec id="s3-3">
<title>3.3 ReLU activation function</title>
<p>The activation function is used to add nonlinear factors to the model because linear models are less expressive. In the absence of activation functions, the input of each layer node in the network is a linear function of the output of the upper layer, that is, inputs and outputs are linearly correlated (<xref ref-type="bibr" rid="B26">Liu et al., 2022</xref>). After adding the activation function, it is possible to apply neural networks to many nonlinear models arbitrarily because they can approach many nonlinear functions arbitrarily. As a result of the ReLU activation function, neurons are activated nonlinearly based on the feature map of the convolution layer output, enabling better learning by avoiding overfitting (<xref ref-type="bibr" rid="B33">Ran et al., 2019</xref>).</p>
<p>For each convolutional layer of ResNet34, the ReLU activation function is used:<disp-formula id="e4">
<mml:math id="m12">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi mathvariant="bold-italic">f</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mi mathvariant="bold">max</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mn mathvariant="bold">0</mml:mn>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mfenced open="{" close="" separators="|">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mi mathvariant="bold-italic">x</mml:mi>
<mml:mo>&#x3e;</mml:mo>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mn mathvariant="bold">0</mml:mn>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">x</mml:mi>
<mml:mo>&#x2264;</mml:mo>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:math>
<label>(4)</label>
</disp-formula>Where <inline-formula id="inf9">
<mml:math id="m13">
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> is the input data. The ReLU activation function sets the output of some neurons in the network to zero, makes the network sparse and reduces the dependence between parameters, which solves the problem of overfitting. Another advantage of ReLU is that it is less computationally intensive and time consuming compared to other activation functions such as sigmoid, which involve exponential operations.</p>
</sec>
<sec id="s3-4">
<title>3.4 Softmax classifier</title>
<p>Softmax classifier is used in the establishment of the rock classification model. The input rock images can be converted into the corresponding category possibilities by the softmax classifier (<xref ref-type="bibr" rid="B32">Pham and Shin, 2020</xref>). At the end of ResNet34, the softmax classification function is added after the fully connected layer of the network, so that the output of the network is a one-dimensional vector of size 7, which represents the seven types of rocks to be classified in this study. The seven values in each one-dimensional vector reflect the rock class probability to which the input image belongs, so the sum of the seven values is 100%. The formula is as follows:<disp-formula id="e5">
<mml:math id="m14">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi mathvariant="bold">p</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">z</mml:mi>
<mml:mi mathvariant="bold-italic">i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:msup>
<mml:mi mathvariant="bold-italic">e</mml:mi>
<mml:msub>
<mml:mi mathvariant="bold-italic">z</mml:mi>
<mml:mi mathvariant="bold-italic">i</mml:mi>
</mml:msub>
</mml:msup>
<mml:mrow>
<mml:msubsup>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi mathvariant="bold-italic">j</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
<mml:mi mathvariant="bold-italic">n</mml:mi>
</mml:msubsup>
<mml:mtext>&#x200a;</mml:mtext>
<mml:msup>
<mml:mi mathvariant="bold-italic">e</mml:mi>
<mml:msub>
<mml:mi mathvariant="bold-italic">z</mml:mi>
<mml:mi mathvariant="bold-italic">j</mml:mi>
</mml:msub>
</mml:msup>
</mml:mrow>
</mml:mfrac>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">j</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn mathvariant="bold">1,2,3</mml:mn>
<mml:mo>,</mml:mo>
<mml:mo>&#x22ef;</mml:mo>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">n</mml:mi>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:math>
<label>(5)</label>
</disp-formula>Where, <inline-formula id="inf10">
<mml:math id="m15">
<mml:mrow>
<mml:mi mathvariant="normal">p</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi>z</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> is the probability of being identified as the <inline-formula id="inf11">
<mml:math id="m16">
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> category, and <inline-formula id="inf12">
<mml:math id="m17">
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> is the number of distinct categories. The numerator maps input real value to zero to infinity and the denominator adds up all the results and normalizes them, as shown in <xref ref-type="disp-formula" rid="e5">Eq. 5</xref>.</p>
</sec>
<sec id="s3-5">
<title>3.5 Adaptive moment estimation</title>
<p>Adaptive moment estimation (Adam) is a stochastic optimization algorithm based on the adaptive estimation of low-order moments (<xref ref-type="bibr" rid="B15">Hang et al., 2019</xref>; <xref ref-type="bibr" rid="B43">Yang et al., 2019</xref>). The algorithm adaptively adjusted the learning rate update parameters through the first moment estimation and the second moment estimation of the gradient. In the past, many conventional deep neural networks use stochastic gradient descent algorithm (SGD), which iteratively updates the weights of the neural network until it reaches the global optimal solution. However, the model using SGD algorithm has a slow convergence speed in the early stage, and it is prone to decline in accuracy. The Adam algorithm is improved on the basis of SGD algorithm. The learning rate during network training is usually kept constant when using an optimization algorithm such as SGD, but Adam optimizes the network by iteratively updating the weights of the neural network and adaptively adjusting the learning rate as the network is trained, which makes the network converge faster and learn better.</p>
<p>In order to adjust the parameters of the rock classification model more efficiently and make it converge faster during training, Adam is chosen as the optimization algorithm. The updating formulas of Adam algorithm are as follows:<disp-formula id="e6">
<mml:math id="m18">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3b8;</mml:mi>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3b8;</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">t</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msup>
<mml:mi mathvariant="bold-italic">&#x3b1;</mml:mi>
<mml:mo>&#x2a;</mml:mo>
</mml:msup>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mover accent="true">
<mml:mi mathvariant="bold-italic">m</mml:mi>
<mml:mo>&#x5e;</mml:mo>
</mml:mover>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:msqrt>
<mml:mrow>
<mml:msub>
<mml:mover accent="true">
<mml:mi mathvariant="bold-italic">v</mml:mi>
<mml:mo>&#x5e;</mml:mo>
</mml:mover>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="bold-italic">&#x3b5;</mml:mi>
</mml:mrow>
</mml:msqrt>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:math>
<label>(6)</label>
</disp-formula>
<disp-formula id="e7">
<mml:math id="m19">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">g</mml:mi>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mo>&#x2207;</mml:mo>
<mml:mover accent="true">
<mml:mi mathvariant="bold-italic">L</mml:mi>
<mml:mo>&#x5e;</mml:mo>
</mml:mover>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3b8;</mml:mi>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:math>
<label>(7)</label>
</disp-formula>
<disp-formula id="e8">
<mml:math id="m20">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">m</mml:mi>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3b2;</mml:mi>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:msub>
<mml:mo>&#x2a;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">m</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">t</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mn mathvariant="bold">1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3b2;</mml:mi>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2a;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">g</mml:mi>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:math>
<label>(8)</label>
</disp-formula>
<disp-formula id="e9">
<mml:math id="m21">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">v</mml:mi>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3b2;</mml:mi>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:msub>
<mml:mo>&#x2a;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">v</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">t</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mn mathvariant="bold">1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3b2;</mml:mi>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2a;</mml:mo>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">g</mml:mi>
<mml:mi mathvariant="bold-italic">t</mml:mi>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:msubsup>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:math>
<label>(9)</label>
</disp-formula>
<disp-formula id="e10">
<mml:math id="m22">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mover accent="true">
<mml:mi mathvariant="bold-italic">m</mml:mi>
<mml:mo>&#x5e;</mml:mo>
</mml:mover>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:msub>
<mml:mi mathvariant="bold-italic">m</mml:mi>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mn mathvariant="bold">1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">&#x3b2;</mml:mi>
<mml:mn mathvariant="bold">1</mml:mn>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:math>
<label>(10)</label>
</disp-formula>
<disp-formula id="e11">
<mml:math id="m23">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mover accent="true">
<mml:mi mathvariant="bold-italic">v</mml:mi>
<mml:mo>&#x5e;</mml:mo>
</mml:mover>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:msub>
<mml:mi mathvariant="bold-italic">v</mml:mi>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mn mathvariant="bold">1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">&#x3b2;</mml:mi>
<mml:mn mathvariant="bold">2</mml:mn>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:math>
<label>(11)</label>
</disp-formula>Where, <inline-formula id="inf13">
<mml:math id="m24">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> is the number of times, <inline-formula id="inf14">
<mml:math id="m25">
<mml:mrow>
<mml:mi>&#x3b1;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> is the learning rate, <inline-formula id="inf15">
<mml:math id="m26">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3b8;</mml:mi>
<mml:mi>t</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the update parameter for the solution, <inline-formula id="inf16">
<mml:math id="m27">
<mml:mrow>
<mml:mi>&#x3b5;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> is a very small constant which is set to prevent the denominator of <xref ref-type="disp-formula" rid="e6">Eq. 6</xref> from being zero, <inline-formula id="inf17">
<mml:math id="m28">
<mml:mrow>
<mml:mover accent="true">
<mml:mi>L</mml:mi>
<mml:mo>&#x5e;</mml:mo>
</mml:mover>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3b8;</mml:mi>
<mml:mi>t</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> is the loss function with parameter <inline-formula id="inf18">
<mml:math id="m29">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3b8;</mml:mi>
<mml:mi>t</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf19">
<mml:math id="m30">
<mml:mrow>
<mml:msub>
<mml:mi>g</mml:mi>
<mml:mi>t</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the gradient of the partial derivative of the loss function <inline-formula id="inf20">
<mml:math id="m31">
<mml:mrow>
<mml:mover accent="true">
<mml:mi>L</mml:mi>
<mml:mo>&#x5e;</mml:mo>
</mml:mover>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3b8;</mml:mi>
<mml:mi>t</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> with respect to <inline-formula id="inf21">
<mml:math id="m32">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3b8;</mml:mi>
<mml:mi>t</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>. <inline-formula id="inf22">
<mml:math id="m33">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3b2;</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the exponential decay rate of the first moment estimate. <inline-formula id="inf23">
<mml:math id="m34">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3b2;</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the exponential decay rate of the second moment estimate. <inline-formula id="inf24">
<mml:math id="m35">
<mml:mrow>
<mml:msub>
<mml:mi>m</mml:mi>
<mml:mi>t</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the estimate of the first moment of the gradient in momentum form. <inline-formula id="inf25">
<mml:math id="m36">
<mml:mrow>
<mml:msub>
<mml:mi>v</mml:mi>
<mml:mi>t</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the second moment estimate of the gradient in momentum form. <inline-formula id="inf26">
<mml:math id="m37">
<mml:mrow>
<mml:msub>
<mml:mover accent="true">
<mml:mi>m</mml:mi>
<mml:mo>&#x5e;</mml:mo>
</mml:mover>
<mml:mi>t</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the bias correction of <inline-formula id="inf27">
<mml:math id="m38">
<mml:mrow>
<mml:msub>
<mml:mi>m</mml:mi>
<mml:mi>t</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf28">
<mml:math id="m39">
<mml:mrow>
<mml:msub>
<mml:mover accent="true">
<mml:mi>v</mml:mi>
<mml:mo>&#x5e;</mml:mo>
</mml:mover>
<mml:mi>t</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the bias correction of <inline-formula id="inf29">
<mml:math id="m40">
<mml:mrow>
<mml:msub>
<mml:mi>v</mml:mi>
<mml:mi>t</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>. By default, <italic>&#x3b1;</italic> &#x3d; 0.001, <inline-formula id="inf30">
<mml:math id="m41">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3b2;</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0.9</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf31">
<mml:math id="m42">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3b2;</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0.999</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf32">
<mml:math id="m43">
<mml:mrow>
<mml:mi>&#x3b5;</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:msup>
<mml:mn>10</mml:mn>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>8</mml:mn>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:math>
</inline-formula>.</p>
</sec>
<sec id="s3-6">
<title>3.6 Transfer learning</title>
<p>Training convolutional neural networks usually require very large labeled datasets to achieve high accuracy. However, it is often difficult to obtain such data and it takes a lot of time to label the data. Due to the existence of these difficulties, the transfer learning method used in many studies to solve the cross-domain image classification problem has proven very effective. Transfer learning considers the correlation between different tasks, so that the knowledge obtained in the previous task can be directly applied to the new task through small transformation or even without any modification. Transfer learning is conducive to the construction of the mathematical model of the target task and reduces the dependence on the target task dataset (<xref ref-type="bibr" rid="B12">Gao et al., 2021</xref>). At present, the more complete convolutional neural networks such as VGG, AlexNet, GoogLeNet and so on are pre-trained on the public image dataset of computer vision (<xref ref-type="bibr" rid="B7">Dabrowski and Michalik, 2017</xref>; <xref ref-type="bibr" rid="B1">Ali et al., 2020</xref>).</p>
<p>Since the model needs multiple rounds of iteration in the training process, and the number of rock pictures in this study is small, it will lead to the overfitting problem and low classification accuracy of the model. Consequently, transfer learning is a viable strategy (<xref ref-type="fig" rid="F5">Figure 5</xref>). Given a labelled source domain <inline-formula id="inf33">
<mml:math id="m44">
<mml:mrow>
<mml:msub>
<mml:mi>D</mml:mi>
<mml:mi>S</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> and learning task <inline-formula id="inf34">
<mml:math id="m45">
<mml:mrow>
<mml:msub>
<mml:mi>T</mml:mi>
<mml:mi>S</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, a target domain <inline-formula id="inf35">
<mml:math id="m46">
<mml:mrow>
<mml:msub>
<mml:mi>D</mml:mi>
<mml:mi>T</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> and learning task <inline-formula id="inf36">
<mml:math id="m47">
<mml:mrow>
<mml:msub>
<mml:mi>T</mml:mi>
<mml:mi>T</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, transfer learning aims to help improve the learning of the target predictive function <inline-formula id="inf37">
<mml:math id="m48">
<mml:mrow>
<mml:mi>f</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mo>&#xb7;</mml:mo>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> in <inline-formula id="inf38">
<mml:math id="m49">
<mml:mrow>
<mml:msub>
<mml:mi>D</mml:mi>
<mml:mi>T</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> using the knowledge in <inline-formula id="inf39">
<mml:math id="m50">
<mml:mrow>
<mml:msub>
<mml:mi>D</mml:mi>
<mml:mi>S</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf40">
<mml:math id="m51">
<mml:mrow>
<mml:msub>
<mml:mi>T</mml:mi>
<mml:mi>S</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, where <inline-formula id="inf41">
<mml:math id="m52">
<mml:mrow>
<mml:msub>
<mml:mi>D</mml:mi>
<mml:mi>S</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is Texture Library dataset, <inline-formula id="inf42">
<mml:math id="m53">
<mml:mrow>
<mml:msub>
<mml:mi>D</mml:mi>
<mml:mi>T</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is rock dataset (<xref ref-type="bibr" rid="B30">Pan, 2017</xref>).</p>
<fig id="F5" position="float">
<label>FIGURE 5</label>
<caption>
<p>Demonstration of transfer learning.</p>
</caption>
<graphic xlink:href="feart-10-1079447-g005.tif"/>
</fig>
<p>As shown in <xref ref-type="fig" rid="F6">Figure 6</xref>, transfer learning is used to optimize the rock image classification. Transfer learning in the rock image classification model includes pre-training and fine-tuning. Firstly, the ResNet34 model is pre-trained on the Texture Library dataset, the rock dataset is used to fine-tune the ResNet34 model afterwards.</p>
<fig id="F6" position="float">
<label>FIGURE 6</label>
<caption>
<p>Schematic diagram of transfer learning in rock classification.</p>
</caption>
<graphic xlink:href="feart-10-1079447-g006.tif"/>
</fig>
<p>The supervised learning architecture is used for pre-training. Pre-training usually requires a large enough dataset to help the model learn common features, and the learned features are parameterized to be ported to similar tasks for reuse (<xref ref-type="bibr" rid="B47">Zhu et al., 2021</xref>; <xref ref-type="bibr" rid="B44">Yi et al., 2022</xref>). The Texture Library dataset which contains 47 texture types total of 78,960 images is selected as the source domain for pre-training (<xref ref-type="fig" rid="F7">Figure 7</xref>). The rock dataset and the Texture Library dataset are not identical, but the images of both have similar texture features, so the two dataset domains are related. Using the Texture Library dataset as the input of the pre-trained model for ResNet34, the characteristics of rocks can be well reflected. Therefore, it is reasonable to adopt the ResNet34 model pre-trained with the Texture Library dataset for rock image classification.</p>
<fig id="F7" position="float">
<label>FIGURE 7</label>
<caption>
<p>Example images of the Texture Library dataset: <bold>(A)</bold> Marble, <bold>(B)</bold> Brick grain, <bold>(C)</bold> Soil grain, <bold>(D)</bold> Bean vermicelli.</p>
</caption>
<graphic xlink:href="feart-10-1079447-g007.tif"/>
</fig>
<p>For fine-tuning, the parameters trained on the Texture Library dataset are used as initial values. The parameters of each layer of the network are frozen except for the last fully connected layer, and then input rock dataset and retrain the last fully connected layer to complete the fine-tuning.</p>
<p>In this study, the transfer learning method based on ResNet34 was applied to the rock image classification model. The ResNet34 pre-training weight parameters obtained by pre-training on the texture dataset are fine-tuned to speed up the convergence speed of the rock image classification network training, and spend less time training to obtain a model that can classify rock images. Transfer learning is used to simplify the original image training process, making the model learning more efficient and flexible.</p>
</sec>
</sec>
<sec id="s4">
<title>4 Experiments and results</title>
<sec id="s4-1">
<title>4.1 Data pre-processing</title>
<p>In the rock dataset used in the experiment, the number of rock images is too small and the pixel is too large. The number of samples in each rock category is uneven, which will affect the recognition accuracy, so the rock training set is preprocessed.</p>
<sec id="s4-1-1">
<title>4.1.1 Image slicing</title>
<p>Image information is composed of the spatial arrangement of pixels, so the features of an image are mainly represented by local adjacent pixels (<xref ref-type="bibr" rid="B38">Su et al., 2020</xref>). Large-scale images can represent more image detail information, so that the differences between images are more obvious. Image classification should make full use of image detail information. Therefore, we use the image slicing method to slice the 253 training sets at first. The original rock images acquired from the industrial camera contain 4,096 &#xd7; 3,000 pixels and are sliced into 9 rows and 12 columns, meaning that each original image is divided into 108 sub-images. The size of each sub-image is 322 &#xd7; 322 pixels. The original image and its cut part images are shown in <xref ref-type="fig" rid="F8">Figure 8A</xref>.</p>
<fig id="F8" position="float">
<label>FIGURE 8</label>
<caption>
<p>Data pre-processing of rock images: <bold>(A)</bold> Image slicing <bold>(B)</bold> Data augmentation.</p>
</caption>
<graphic xlink:href="feart-10-1079447-g008.tif"/>
</fig>
</sec>
<sec id="s4-1-2">
<title>4.1.2 Data augmentation</title>
<p>rAfter image slicing, the training dataset is expanded to 27,324 images. The dataset used consisted of a relatively small number of images for training network. The data augmentation used in this study to expand the dataset were rotation, horizontal flip, vertical flip, blur, movement, brightness adjustment and Gaussian noise addition. The schematic of the data augmentation is shown in <xref ref-type="fig" rid="F8">Figure 8B</xref>. The total number of training sets reached 382,536 by applying these transformations which fully expanded the original training set. The number of training set after pre-processing is also shown in <xref ref-type="table" rid="T2">Table 2</xref>.</p>
<sec id="s4-1-2-1">
<title>4.1.2.1 Image resizing</title>
<p>Resizing changes the distance between different pixels in the image, typically along the <italic>x</italic>-axis and <italic>y</italic>-axis, and the matrix expression for image resizing is as follows:<disp-formula id="e12">
<mml:math id="m54">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:msup>
<mml:mi mathvariant="bold-italic">x</mml:mi>
<mml:mo>&#x2032;</mml:mo>
</mml:msup>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:msup>
<mml:mi mathvariant="bold">y</mml:mi>
<mml:mo>&#x2032;</mml:mo>
</mml:msup>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:msub>
<mml:mi mathvariant="bold-italic">S</mml:mi>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:msub>
</mml:mtd>
<mml:mtd>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:msub>
<mml:mi mathvariant="bold-italic">S</mml:mi>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:msub>
</mml:mtd>
<mml:mtd>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:math>
<label>(12)</label>
</disp-formula>Where, <inline-formula id="inf43">
<mml:math id="m55">
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>y</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:math>
</inline-formula> is the original image and <inline-formula id="inf44">
<mml:math id="m56">
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msup>
<mml:mi>x</mml:mi>
<mml:mo>&#x2032;</mml:mo>
</mml:msup>
<mml:mo>,</mml:mo>
<mml:msup>
<mml:mi mathvariant="normal">y</mml:mi>
<mml:mo>&#x2032;</mml:mo>
</mml:msup>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:math>
</inline-formula> is the resized image. <inline-formula id="inf45">
<mml:math id="m57">
<mml:mrow>
<mml:msub>
<mml:mi>S</mml:mi>
<mml:mi>x</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf46">
<mml:math id="m58">
<mml:mrow>
<mml:msub>
<mml:mi>S</mml:mi>
<mml:mi>y</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> are the scaling factors along the <italic>x</italic>-axis and <italic>y</italic>-axis, respectively. The scaling factors are chosen randomly from 0.5 to 2.</p>
</sec>
<sec id="s4-1-2-2">
<title>4.1.2.2 Image rotation</title>
<p>Rotation is the process of rotating an image around a point to form a new image. The pixel values of the image before and after rotation remain unchanged. When the selected rotation point is the coordinate origin, the matrix expression for image rotation is as follows:<disp-formula id="e13">
<mml:math id="m59">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:msup>
<mml:mi mathvariant="bold-italic">x</mml:mi>
<mml:mo>&#x2032;</mml:mo>
</mml:msup>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:msup>
<mml:mi mathvariant="bold">y</mml:mi>
<mml:mo>&#x2032;</mml:mo>
</mml:msup>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi mathvariant="bold">cos</mml:mi>
<mml:mo>&#x2061;</mml:mo>
<mml:mi mathvariant="bold-italic">&#x3b8;</mml:mi>
</mml:mrow>
</mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mi mathvariant="bold">s</mml:mi>
<mml:mi mathvariant="bold">i</mml:mi>
<mml:mi mathvariant="bold-italic">n</mml:mi>
<mml:mi mathvariant="bold-italic">&#x3b8;</mml:mi>
</mml:mrow>
</mml:mtd>
<mml:mtd>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold">s</mml:mi>
<mml:mi mathvariant="bold">i</mml:mi>
<mml:mi mathvariant="bold-italic">n</mml:mi>
<mml:mi mathvariant="bold-italic">&#x3b8;</mml:mi>
</mml:mrow>
</mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mi mathvariant="bold">cos</mml:mi>
<mml:mo>&#x2061;</mml:mo>
<mml:mi mathvariant="bold-italic">&#x3b8;</mml:mi>
</mml:mrow>
</mml:mtd>
<mml:mtd>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:math>
<label>(13)</label>
</disp-formula>Where, <inline-formula id="inf47">
<mml:math id="m60">
<mml:mrow>
<mml:mi>&#x3b8;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> is the rotation angle, The rotation angle is randomly selected from 0&#xb0; to 360&#xb0;.</p>
</sec>
<sec id="s4-1-2-3">
<title>4.1.2.3 Image movement</title>
<p>The matrix expression of image movement is as follows:<disp-formula id="e14">
<mml:math id="m61">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:msup>
<mml:mi mathvariant="bold-italic">x</mml:mi>
<mml:mo>&#x2032;</mml:mo>
</mml:msup>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:msup>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mo>&#x2032;</mml:mo>
</mml:msup>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:msub>
<mml:mi mathvariant="bold-italic">t</mml:mi>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:msub>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:msub>
<mml:mi mathvariant="bold-italic">t</mml:mi>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:msub>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:math>
<label>(14)</label>
</disp-formula>Where, <inline-formula id="inf48">
<mml:math id="m62">
<mml:mrow>
<mml:msub>
<mml:mi>t</mml:mi>
<mml:mi>x</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf49">
<mml:math id="m63">
<mml:mrow>
<mml:msub>
<mml:mi>t</mml:mi>
<mml:mi>y</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> are the amount of translation to translate the image along the <italic>x</italic>-axis and <italic>y</italic>-axis, respectively. The amount of translation is chosen randomly from 30 to 80 pixels.</p>
</sec>
<sec id="s4-1-2-4">
<title>4.1.2.4 Image flip</title>
<p>The matrix expression for the horizontal flip is as follows:<disp-formula id="e15">
<mml:math id="m64">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:msup>
<mml:mi mathvariant="bold-italic">x</mml:mi>
<mml:mo>&#x2032;</mml:mo>
</mml:msup>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:msup>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mo>&#x2032;</mml:mo>
</mml:msup>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:mtd>
<mml:mtd>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mi mathvariant="bold-italic">w</mml:mi>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:math>
<label>(15)</label>
</disp-formula>
</p>
<p>The matrix expression for the vertical flip is as follows:<disp-formula id="e16">
<mml:math id="m65">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:msup>
<mml:mi mathvariant="bold-italic">x</mml:mi>
<mml:mo>&#x2032;</mml:mo>
</mml:msup>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:msup>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mo>&#x2032;</mml:mo>
</mml:msup>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:mtd>
<mml:mtd>
<mml:mi mathvariant="bold-italic">h</mml:mi>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:math>
<label>(16)</label>
</disp-formula>Where w is the width of the image and h is the height of the image.</p>
</sec>
<sec id="s4-1-2-5">
<title>4.1.2.5 Brightness change</title>
<p>The change of image brightness belongs to the pixel transformation of the image, that is, the linear transformation is performed on each point of the two-dimensional matrix represented by the image. The transformation formula is as follows:<disp-formula id="e17">
<mml:math id="m66">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi mathvariant="bold-italic">g</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">j</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mi mathvariant="bold-italic">&#x3b1;</mml:mi>
<mml:mo>&#x22c5;</mml:mo>
<mml:mi mathvariant="bold-italic">f</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">j</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="bold-italic">&#x3b2;</mml:mi>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:math>
<label>(17)</label>
</disp-formula>Where <inline-formula id="inf50">
<mml:math id="m67">
<mml:mrow>
<mml:mi>f</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> is the pixel of the original image, <inline-formula id="inf51">
<mml:math id="m68">
<mml:mrow>
<mml:mi>g</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> is the pixel of the output image, and <inline-formula id="inf52">
<mml:math id="m69">
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf53">
<mml:math id="m70">
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> denote the pixel located in row <inline-formula id="inf54">
<mml:math id="m71">
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> and column <inline-formula id="inf55">
<mml:math id="m72">
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>. <inline-formula id="inf56">
<mml:math id="m73">
<mml:mrow>
<mml:mi>&#x3b1;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> is the gain parameter and <inline-formula id="inf57">
<mml:math id="m74">
<mml:mrow>
<mml:mi>&#x3b2;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> is the bias parameter. The brightness of the output image <inline-formula id="inf58">
<mml:math id="m75">
<mml:mrow>
<mml:mi>g</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> is determined by <inline-formula id="inf59">
<mml:math id="m76">
<mml:mrow>
<mml:mi>&#x3b2;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>, and the contrast of the image is determined by <inline-formula id="inf60">
<mml:math id="m77">
<mml:mrow>
<mml:mi>&#x3b1;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>.</p>
</sec>
<sec id="s4-1-2-6">
<title>4.1.2.6 Noise addition</title>
<p>Due to the random interference of the external environment such as light and dust, the acquired rock image will contain noise. In order to simulate the real environment, Gaussian noise is added to the image. The probability density function of Gaussian noise is as follows:<disp-formula id="e18">
<mml:math id="m78">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi mathvariant="bold-italic">p</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">z</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mn mathvariant="bold">1</mml:mn>
<mml:mrow>
<mml:msqrt>
<mml:mrow>
<mml:mn mathvariant="bold">2</mml:mn>
<mml:mi mathvariant="bold-italic">&#x3c0;</mml:mi>
</mml:mrow>
</mml:msqrt>
<mml:mi mathvariant="bold-italic">&#x3c3;</mml:mi>
</mml:mrow>
</mml:mfrac>
<mml:mi mathvariant="bold">exp</mml:mi>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mfrac>
<mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>z</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>&#x3bc;</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:msup>
<mml:mrow>
<mml:mn mathvariant="bold">2</mml:mn>
<mml:msup>
<mml:mi mathvariant="bold-italic">&#x3c3;</mml:mi>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:msup>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:math>
<label>(18)</label>
</disp-formula>Where <inline-formula id="inf61">
<mml:math id="m79">
<mml:mrow>
<mml:mi>z</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> is the gray value of the image pixel, <inline-formula id="inf62">
<mml:math id="m80">
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> is the mean value of the pixel value, and <inline-formula id="inf63">
<mml:math id="m81">
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> is the standard deviation of the pixel value. In the process of adding noise, a Gaussian noise with a mean value of 0 and a variance <inline-formula id="inf64">
<mml:math id="m82">
<mml:mrow>
<mml:msup>
<mml:mi>&#x3c3;</mml:mi>
<mml:mn>2</mml:mn>
</mml:msup>
</mml:mrow>
</mml:math>
</inline-formula> of 0.01 is selected.</p>
</sec>
</sec>
</sec>
<sec id="s4-2">
<title>4.2 Evaluation metrics</title>
<p>The primary measures used to evaluate training effectiveness are classification accuracy and loss value. The classification accuracy is the percentage of the currently trained images that are accurately classified. It is formulated by <xref ref-type="disp-formula" rid="e19">Eq. 19</xref>:<disp-formula id="e19">
<mml:math id="m83">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi mathvariant="bold-italic">A</mml:mi>
<mml:mi mathvariant="bold-italic">c</mml:mi>
<mml:mi mathvariant="bold-italic">c</mml:mi>
<mml:mi mathvariant="bold-italic">u</mml:mi>
<mml:mi mathvariant="bold-italic">a</mml:mi>
<mml:mi mathvariant="bold-italic">r</mml:mi>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">N</mml:mi>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:math>
<label>(19)</label>
</disp-formula>Where, <inline-formula id="inf65">
<mml:math id="m84">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> is the number of samples whose predicted category is consistent with the actual category. <inline-formula id="inf66">
<mml:math id="m85">
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> is the total number of samples. The effect of the model is measured by calculating the ratio of the number of samples correctly classified by the model to the total number of samples, and the goal is to measure the effect of the model.</p>
<p>Through the calculation of the loss function, the parameters of our model are updated. The goal is to reduce the optimization error, that is, to reduce the empirical risk of the model under the joint effect of the loss function and the optimization algorithm (<xref ref-type="bibr" rid="B5">Chen et al., 2021</xref>). The cross-entropy is used as the loss function to evaluate the difference between the predicted value and the true value (<xref ref-type="bibr" rid="B24">Li et al., 2020</xref>). The loss value in this work is calculated by cross entropy, as follows:<disp-formula id="e20">
<mml:math id="m86">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi mathvariant="bold-italic">L</mml:mi>
<mml:mi mathvariant="bold-italic">o</mml:mi>
<mml:mi mathvariant="bold-italic">s</mml:mi>
<mml:mi mathvariant="bold-italic">s</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">N</mml:mi>
</mml:mrow>
</mml:mfrac>
<mml:mrow>
<mml:munder>
<mml:mstyle displaystyle="true">
<mml:mo>&#x2211;</mml:mo>
</mml:mstyle>
<mml:mi mathvariant="bold-italic">i</mml:mi>
</mml:munder>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">L</mml:mi>
<mml:mi mathvariant="bold-italic">i</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mo>&#x2212;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">N</mml:mi>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mrow>
<mml:mrow>
<mml:munder>
<mml:mstyle displaystyle="true">
<mml:mo>&#x2211;</mml:mo>
</mml:mstyle>
<mml:mi mathvariant="bold-italic">i</mml:mi>
</mml:munder>
<mml:mrow>
<mml:munderover>
<mml:mstyle displaystyle="true">
<mml:mo>&#x2211;</mml:mo>
</mml:mstyle>
<mml:mrow>
<mml:mi mathvariant="bold-italic">c</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
<mml:mi mathvariant="bold-italic">M</mml:mi>
</mml:munderover>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mi mathvariant="bold-italic">c</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mi mathvariant="bold">log</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">p</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mi mathvariant="bold-italic">c</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mrow>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:math>
<label>(20)</label>
</disp-formula>Where, <inline-formula id="inf67">
<mml:math id="m87">
<mml:mrow>
<mml:mi>M</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> is the number of categories. <inline-formula id="inf68">
<mml:math id="m88">
<mml:mrow>
<mml:msub>
<mml:mi>y</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>c</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the indicator variable and takes the value of <inline-formula id="inf69">
<mml:math id="m89">
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula> or <inline-formula id="inf70">
<mml:math id="m90">
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>. If the category is the same as the category of sample <inline-formula id="inf71">
<mml:math id="m91">
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> then it takes <inline-formula id="inf72">
<mml:math id="m92">
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>, and <italic>vice versa</italic> it takes <inline-formula id="inf73">
<mml:math id="m93">
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>. <inline-formula id="inf74">
<mml:math id="m94">
<mml:mrow>
<mml:msub>
<mml:mi>p</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>c</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the predicted probability that observation sample <inline-formula id="inf75">
<mml:math id="m95">
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> belongs to category <inline-formula id="inf76">
<mml:math id="m96">
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>. The function is convex and has good convergence properties when solved by gradient descent, and the global optimum can be obtained when solving the derivative. The loss value reflects the learning effect during the training of the model. The smaller the loss value is, the better the learning effect is.</p>
</sec>
<sec id="s4-3">
<title>4.3 Experiment details</title>
<p>The device information used in the experiment is as follows: the CPU model is Intel Xeon Silver 4,110 with 16&#xa0;GB memory, and the GPU model is GeForce RTX 2080Ti with 11G memory. Windows10 was used as the operating system and Python 3.6 was used as the programming language. The deep learning framework is Pytorch, version 10.1 for CUDA, and version 7.6.5 for CuDNN.</p>
<p>The activation function selects the ReLU function. The optimizer selects is Adam. The learning rate is set to 0.001. The number of training epochs is 60 and the batch size is set to 16.</p>
<p>Different degrees of data preprocessing methods were used to conduct ablation experiments to explore the effectiveness of each preprocessing method. Resnet34 and three other different neural networks were trained to explore which worked best. The Texture Library dataset is selected as the source domain for transfer learning. The model parameter files are obtained after training. The other layers of the Resnet34 network are frozen except for the structural parameters of the fully connected layer. The pre-trained weights obtained from training on the texture dataset are loaded when the network is trained with the rock dataset. The prediction results are compared with the true label in each step so that the classification accuracy and loss value are both calculated to upload to the TensorBoard visual training tool.</p>
</sec>
<sec id="s4-4">
<title>4.4 Results analysis</title>
<sec id="s4-4-1">
<title>4.4.1 The effectiveness of data pre-processing</title>
<p>The original data in this paper has been pre-processed by image slicing and data augmentation. In order to verify the effectiveness of data pre-processing, we conduct ablation experiments. The ResNet34 network was used to conduct four groups of experiments on different training sets: 1) no data pre-processing is used; 2) using image slicing; 3) using data augmentation; 4) using image slicing and data augmentation both on the training set. The highest accuracy achieved by each method in 60 epochs is shown in <xref ref-type="table" rid="T3">Table 3</xref>.</p>
<table-wrap id="T3" position="float">
<label>TABLE 3</label>
<caption>
<p>Comparison of training results for different data preprocessing methods.</p>
</caption>
<table>
<thead valign="top">
<tr>
<th align="left">Method</th>
<th align="left">Number of images in the training set</th>
<th align="left">The highest accuracy achieved in 60 epochs (%)</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td align="left">ResNet34 &#x2b; Original training set</td>
<td align="char" char=".">253</td>
<td align="char" char=".">73.8</td>
</tr>
<tr>
<td align="left">ResNet34 &#x2b; IS</td>
<td align="char" char=".">27,324</td>
<td align="char" char=".">76.2</td>
</tr>
<tr>
<td align="left">ResNet34 &#x2b; DA</td>
<td align="char" char=".">3,542</td>
<td align="char" char=".">84.4</td>
</tr>
<tr>
<td align="left">ResNet34 &#x2b; IS &#x2b; DA</td>
<td align="char" char=".">3,82,536</td>
<td align="char" char=".">88.1</td>
</tr>
</tbody>
</table>
</table-wrap>
<p>After different degrees of image pre-processing, the classification accuracy of the network is improved in different degrees. Compared with the original training set, the accuracy of the training set after image slicing and data augmentation is improved by 14.3%. The result indicates that pre-processing of small sample data sets can make the network extract more comprehensive rock features and improve the generalization ability of the model. And it proves that the data pre-processing method in this paper can improve the overall accuracy of the classification network.</p>
</sec>
<sec id="s4-4-2">
<title>4.4.2 The effectiveness of residual networks</title>
<p>Four different network models to apply to rock classification in order to compare which network has the best effect are trained respectively. The training is visualized in the Pytorch framework using the TensorBoard tool.</p>
<p>
<xref ref-type="fig" rid="F9">Figure 9</xref> illustrates the loss and accuracy changes for four deep learning methods (AlexNet, VGG16, GoogleLeNet, and ResNet34) as experiment steps increase. It shows that each of the four convolutional neural networks converges as the training process of rock image classification proceeds. In addition, it can be reflected from <xref ref-type="fig" rid="F9">Figure 9A</xref> that the rock accuracy of the four networks from high to low is ResNet34, VGG16, GoogLeNet, and AlexNet. While the loss values (<xref ref-type="fig" rid="F9">Figure 9B</xref>) are the opposite, from large to small are AlexNet, GoogLeNet, VGG16, and ResNet34.</p>
<fig id="F9" position="float">
<label>FIGURE 9</label>
<caption>
<p>The accuracy <bold>(A)</bold> and the loss <bold>(B)</bold> values of four different models over different epochs.</p>
</caption>
<graphic xlink:href="feart-10-1079447-g009.tif"/>
</fig>
<p>The residual neural network has the highest accuracy and the lowest loss value, which is because the residual network uses residual structure to solve the model degradation problem of deep neural network. In conclusion, the ResNet34 network performs better than other networks in rock image classification.</p>
</sec>
<sec id="s4-4-3">
<title>4.4.3 The effectiveness of transfer learning</title>
<p>In order to explore whether the model using transfer learning performs better, the rock classification model using transfer learning method and the model without transfer learning method are trained respectively. The change of accuracy and loss value during the training process is shown in <xref ref-type="fig" rid="F10">Figure 10</xref>. Compared with the training results with and without transfer learning, the first accuracy and the highest accuracy of the training epochs and the corresponding loss value are shown in <xref ref-type="table" rid="T4">Table 4</xref>. Combined with the graph, it can be observed that the model training without transfer learning has a low accuracy of 59.0% in the early stage. The highest accuracy reaches 88.1% after 60 epochs and the corresponding loss value is 0.217. In the model using transfer learning, the accuracy of the first epoch reaches 67.5% and the accuracy fluctuates slightly during the training process. The highest accuracy reached 99.1% which achieves an 11% improvement compared with the model without transfer learning, and the corresponding loss value is 0.085.</p>
<fig id="F10" position="float">
<label>FIGURE 10</label>
<caption>
<p>The accuracy <bold>(A)</bold> and the loss <bold>(B)</bold> values of the models over different epochs.</p>
</caption>
<graphic xlink:href="feart-10-1079447-g010.tif"/>
</fig>
<table-wrap id="T4" position="float">
<label>TABLE 4</label>
<caption>
<p>Comparison of training results with or without transfer learning.</p>
</caption>
<table>
<thead valign="top">
<tr>
<th align="left">Training results</th>
<th align="left">Without transfer learning</th>
<th align="left">With transfer learning</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td align="left">The accuracy in the first epoch</td>
<td align="char" char=".">59.0%</td>
<td align="char" char=".">67.5%</td>
</tr>
<tr>
<td align="left">The loss value in the first epoch</td>
<td align="char" char=".">1.214</td>
<td align="char" char=".">1.037</td>
</tr>
<tr>
<td align="left">The accuracy after 60 epochs</td>
<td align="char" char=".">88.1%</td>
<td align="char" char=".">99.1%</td>
</tr>
<tr>
<td align="left">The loss value after 60 epochs</td>
<td align="char" char=".">0.217</td>
<td align="char" char=".">0.085</td>
</tr>
</tbody>
</table>
</table-wrap>
<p>The accuracy and loss values reflect that the effect of the network model trained by transfer learning is obviously better than the original model. The model using transfer learning has high initial accuracy and high final accuracy. This is because the pre-training network based on the Texture Library dataset has learned rich texture spatial structure features and morphological correlation. The parameters of the pre-training model can be directly used in the model training, which can save training time and improve the precision of rock classification.</p>
</sec>
<sec id="s4-4-4">
<title>4.4.4 Reality testing</title>
<p>A total of 15 images covering 7 types of rocks from the testing dataset were classified by the model which had the weights with the highest accuracy using transfer learning method. The rock images to be recognized were fed into the rock prediction program, and the classification result was given in the form of names and probabilities. The test result of rock classification is shown in <xref ref-type="fig" rid="F11">Figure 11</xref>. All 15 images were correctly predicted with probabilities above 82%, and most of them were even above 95%.</p>
<fig id="F11" position="float">
<label>FIGURE 11</label>
<caption>
<p>The test result of rock classification.</p>
</caption>
<graphic xlink:href="feart-10-1079447-g011.tif"/>
</fig>
<p>Since the shooting angle and distance of rocks in the survey site are not fixed, the classification effect of rock images with different views is tested in this paper. Considering that the imaging resolution of each camera is not the same in practical applications, it is also necessary to test the effect of different resolutions of images on the rock classification results.</p>
<p>To simulate the camera changes at different resolutions, the image resolution was changed while keeping the view of the image unchanged. The original images of the test set are all 4,096 &#xd7; 3,000 pixels. The original 15 test set images were down sampled multiple times to reduce the image resolution. The average accuracy of classifying 15 rock images is used as the evaluation criterion, and the experimental results are shown in <xref ref-type="fig" rid="F12">Figure 12A</xref>.</p>
<fig id="F12" position="float">
<label>FIGURE 12</label>
<caption>
<p>The accuracy and the loss the influence of image resolution on the classification results <bold>(A)</bold> and the influence of the change of image field of view on the classification results <bold>(B)</bold>.</p>
</caption>
<graphic xlink:href="feart-10-1079447-g012.tif"/>
</fig>
<p>It can be seen that the classification accuracy starts to suffer when the image is below 512 &#xd7; 375 pixels. This is because the images of the original training set are processed to 322 &#xd7; 322 pixels through image slicing in the previous data preprocessing, so the network can accurately identify the input images with a resolution higher than 322 &#xd7; 322. When the resolution of an image is lower than 322 &#xd7; 322 pixels, the reduction of image features affects the rock classification results.</p>
<p>In order to simulate the change in the distance between the camera and the rock sample, the view of the image is changed while keeping the image resolution unchanged. The above experimental results show that the rock classification model can accurately classify rocks when the input image is in the pixels range of 4,096 &#xd7; 3,000 to 512 &#xd7; 375. However, the accuracy starts to decrease after pixels are below 512 &#xd7; 375. Therefore 512 &#xd7; 375 pixels are used as the minimum image resolution limit. After arbitrarily cropping an image with the same proportion as the original rock image and greater than 512 &#xd7; 375 pixels, a random brightness change is added to simulate the field light change. And it is down sampled to 512 &#xd7; 375 pixels to control the image resolution consistency, then input into the classification network for classification test. A total of 10 tests were performed, and the test set for each classification was 15 images. The experimental results are shown in <xref ref-type="fig" rid="F12">Figure 12B</xref>.</p>
<p>The accuracy of rock classification does not change significantly due to the data pre-processing we have used. The pre-processing can improve the robustness and generalization of the model. Therefore, the model can adapt to the changes of different resolutions, shooting angles and shooting scenes. It indicates that the model learns more about rock lithological features with the increase in data volume. This result also shows that the model has good robustness and generalization ability.</p>
</sec>
<sec id="s4-4-5">
<title>4.4.5 Comprehensive analysis</title>
<p>Ablation experiments were conducted to verify the effectiveness of the data preprocessing done in this paper. Since the original rock data set is too small, image segmentation and data augmentation can significantly improve the accuracy of rock classification. The effectiveness of residual neural networks is verified by the comparative experiment of AlexNet, VGG16, GoogLeNet, and ResNet34. The effectiveness of transfer learning is verified by the comparative experiment between transfer learning and non-transfer learning. The practical usability of the rock classification model was verified by testing 15 images containing all seven types of rocks. All 15 images were correctly predicted with probabilities above 82%, and most of them were even above 95%. By simulating and testing the actual situation of camera view changes and resolution changes, it is verified that the model has good robustness, slight scene changes will not affect the accuracy of rock classification, and the effectiveness of data preprocessing is also shown. These experimental results indicate that the model using transfer learning with the pre-trained residual neural network has higher classification accuracy and good generalization ability.</p>
</sec>
</sec>
</sec>
<sec id="s5">
<title>5 Deployment and application of rock classification network</title>
<p>Geological survey work often needs to be carried out on the construction site or in off-line conditions. Geological investigators need to carry all kinds of geological exploration equipment, such as GPS measurement, positioning instruments, measuring instruments and so on. It is inconvenient to take equipment with a certain weight and volume such as workstations, and it is impossible to obtain timely feedback on rock types through the network to guide the following investigation. Deploying the rock image classification model proposed in this paper to the embedded end device can effectively solve this problem.</p>
<p>In this paper, rock image classification is shifted from theoretical research to practical applications. The trained rock classification network model is transplanted to Nvidia Jetson TX2 embedded platform, the TensorRT inference optimizer is used to accelerate the model, and the front-end interface that integrates all aspects of the system is developed, which makes the system both portable and easy to use, and meets the requirements of geological survey field deployment.</p>
<sec id="s5-1">
<title>5.1 Design of rock classification system</title>
<p>A rock classification system is constructed based on the designed rock image classification model. The overall framework is shown in <xref ref-type="fig" rid="F13">Figure 13A</xref>, and the specific functions of the system are as follows: 1) Get an image of the rock. Images are acquired in real-time from connected industrial cameras, or rock images are fetched from local data. Real-time detection and local data acquisition are introduced to meet the requirements of the geological survey sites. 2) Rock image preprocessing. The rock images that need to be input into the classification network are preprocessed first, the brightness of the rock images that are too bright or too dark is corrected, and the rock images are smoothed to remove the sharp noise, reduce the level of detail, and enhance the recognition effect of the image under different proportions. The preprocessed rock image is used as the input image of the subsequent classification network, and improving the image identifiability is beneficial to improve the accuracy of rock classification. 3) Rock image classification. The rock classification network is loaded, and the preprocessed rock images are input for inference to obtain the rock classification results. If it is necessary to extend the rock category or use a better-trained rock model, the rock classification model can be updated by replacing the original model weights with the newly trained model weights. 4) The obtained rock classification results are stored or displayed on the visual interface.</p>
<fig id="F13" position="float">
<label>FIGURE 13</label>
<caption>
<p>The rock classification system: <bold>(A)</bold> System framework diagram <bold>(B)</bold> Visual interface.</p>
</caption>
<graphic xlink:href="feart-10-1079447-g013.tif"/>
</fig>
</sec>
<sec id="s5-2">
<title>5.2 System deployment</title>
<p>The preliminary development of the rock classification model proposed in this paper is carried out on the PC side, but the size of the PC side is huge, and it is not suitable for deployment in the industrial survey site. In contrast, embedded devices with deep learning computing capabilities are more in line with the needs of geological exploration. To consider the practical application, we port the algorithm from the PC to the embedded platform. Considering that there is usually no network support in the actual survey site, this paper adopts the offline deployment mode. After the model is trained in the PC server in advance, it is deployed on the embedded device.</p>
<p>This paper implements the deployment process of the rock classification network on Nvidia Jetson TX2. Nvidia Jetson TX2 is an embedded AI computing device launched by Nvidia Corporation. Its GPU adopts Nvidia Pascal architecture, has 8 GB memory and 32 GB storage space, and is equipped with a variety of standard hardware interfaces. Jetson TX2 is compact and energy efficient, making it ideal for smart edge devices such as robots, drones, and smart cameras.</p>
<p>The deep learning network model trained on the PC usually has a large number of parameters, and it is easy to cause problems of slow inference speed and poor real-time performance of the model when deployed on embedded devices with weak performance. In order to accelerate the reasoning of the model on embedded devices, the TensorRT framework developed by Nvidia is used to accelerate the reasoning. NVIDIA TensorRT is a special optimizer for neural network inference, which is mostly used in image classification, object detection and other fields. It uses a scheme to optimize the trained model, which can provide low latency and high throughput for deep learning model inference applications deployed in the production environment.</p>
<p>The steps for porting the rock classification algorithm are as follows: First, set up the software development environment on Jetson TX2 and install the libraries that the application depends on to run. Since the trained model is generated by the Pytorch framework and cannot be directly applied to the TensorRT framework, the Pytorch model is first converted to the ONNX (OpenNeural Network Exchange) format to make it suitable for the TensorRT framework. ONNX is a standard format for representing deep learning models that can be transferred between different frameworks (<xref ref-type="bibr" rid="B4">Chang et al., 2020</xref>). Many model formats can only be converted to ONNX to work with the TensorRT framework. Finally, the visual interface integrating each function was developed.</p>
<p>The user interface design of this paper takes into account that this system is mainly provided for geological exploration personnel. From the perspective of practical application, the code is encapsulated, and the PYQT module in Python is used for visual interface design. The rocks are classified through the visual interface, and the classification results are displayed and saved, which reduces the threshold of use and facilitates the use of engineers. The main interface is shown in <xref ref-type="fig" rid="F13">Figure 13B</xref>.</p>
</sec>
</sec>
<sec sec-type="conclusion" id="s6">
<title>6 Conclusion</title>
<p>In this study, a deep residual neural network model with transfer learning method is proposed to classify rock images quickly and accurately. The dataset is expanded by image slicing and data augment, and the Resnet34 is pre-trained by the Texture Library dataset for transfer learning. The comparative analysis shows that the model using transfer learning in ResNet34 structure for rock image classification has an excellent effect, and the classification accuracy is as high as 99.1%, which achieves an 11% improvement compared with the model without transfer learning. The excellent performance of the rock classification model is mainly due to the introduction of the residual module and the application of transfer learning. The pre-trained network based on the texture dataset learns rich texture spatial structure features and morphological correlation. Finally, a rock classification system is designed and deployed on embedded devices to meet geological survey tasks. The system extracts feature by the convolutional neural network without manual operation, which reduces the influence of subjective factors. This system has low requirements for rock image acquisition configuration and environment, which fully demonstrates its robustness and generalization ability.</p>
<p>Our future study will further increase the number of rock categories and ensure that the classification accuracy is further improved when more rock types are added, as the types and number of rock datasets in this paper are limited due to the limitations of shooting conditions.</p>
</sec>
</body>
<back>
<sec sec-type="data-availability" id="s7">
<title>Data availability statement</title>
<p>Publicly available datasets were analyzed in this study. This data can be found here: <ext-link ext-link-type="uri" xlink:href="http://www.olegvolk.net/gallery/various/textures">http://www.olegvolk.net/gallery/various/textures</ext-link>.</p>
</sec>
<sec id="s8">
<title>Author contributions</title>
<p>WC was responsible for the implementation of the proposed method and the writing of the manuscript. LS was responsible for making important revisions to the manuscript to make it clearer and more reasonable, and proposed ideas for method improvement. XC was responsible for constructing the initial research idea and analyzing the rationality of the experimental results. ZH was responsible for the grammar checking and language polishing of the manuscript.</p>
</sec>
<sec id="s9">
<title>Funding</title>
<p>This work is financially supported in part by the National Natural Science Foundation of China under Grant 61903315 and the Foundation for Science and Technology Cooperation Program of Longyan under Grant 2020LYF16004; in part by the Natural Science Foundation of the Department of Science and Technology of Fujian Province under Grant 2022J011255.</p>
</sec>
<ack>
<p>The authors thank all editors and reviewers for their comments and suggestions. For this study, special thanks to the GuangDong TipDM Intelligent Technology Co., Ltd. for providing the data.</p>
</ack>
<sec sec-type="COI-statement" id="s10">
<title>Conflict of interest</title>
<p>The authors declare that the research was conducted in the absence of any commercial or financial relationships that could be construed as a potential conflict of interest.</p>
</sec>
<sec sec-type="disclaimer" id="s11">
<title>Publisher&#x2019;s note</title>
<p>All claims expressed in this article are solely those of the authors and do not necessarily represent those of their affiliated organizations, or those of the publisher, the editors and the reviewers. Any product that may be evaluated in this article, or claim that may be made by its manufacturer, is not guaranteed or endorsed by the publisher.</p>
</sec>
<ref-list>
<title>References</title>
<ref id="B1">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Ali</surname>
<given-names>S. B.</given-names>
</name>
<name>
<surname>Wate</surname>
<given-names>R.</given-names>
</name>
<name>
<surname>Kujur</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Singh</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Kumar</surname>
<given-names>S.</given-names>
</name>
</person-group> (<year>2020</year>). &#x201c;<article-title>Wall crack detection using transfer learning-based cnn models</article-title>,&#x201d; in <conf-name>2020 IEEE 17th India Council International Conference (INDICON)</conf-name> (<publisher-name>IEEE</publisher-name>), <fpage>1</fpage>&#x2013;<lpage>7</lpage>.</citation>
</ref>
<ref id="B2">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Bai</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Wei</surname>
<given-names>X.</given-names>
</name>
<name>
<surname>Liu</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Wu</surname>
<given-names>C.</given-names>
</name>
<name>
<surname>Chen</surname>
<given-names>L.</given-names>
</name>
</person-group> (<year>2019</year>). <article-title>Rock thin section image recognition and classification based on vgg model</article-title>. <source>Geol. Bull. China</source> <volume>38</volume>, <fpage>2053</fpage>&#x2013;<lpage>2058</lpage>.</citation>
</ref>
<ref id="B3">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Bai</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Yao</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Li</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Xu</surname>
<given-names>D.</given-names>
</name>
<name>
<surname>Wei</surname>
<given-names>X.</given-names>
</name>
</person-group> (<year>2018</year>). <article-title>Mineral composition analysis of rock image based on deep learning feature extraction</article-title>. <source>China Min. Mag.</source> <volume>27</volume>, <fpage>178</fpage>&#x2013;<lpage>182</lpage>.</citation>
</ref>
<ref id="B4">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Chang</surname>
<given-names>Y.-M.</given-names>
</name>
<name>
<surname>Liao</surname>
<given-names>W.-C.</given-names>
</name>
<name>
<surname>Wang</surname>
<given-names>S.-C.</given-names>
</name>
<name>
<surname>Yang</surname>
<given-names>C.-C.</given-names>
</name>
<name>
<surname>Hwang</surname>
<given-names>Y.-S.</given-names>
</name>
</person-group> (<year>2020</year>). <article-title>A framework for scheduling dependent programs on gpu architectures</article-title>. <source>J. Syst. Archit.</source> <volume>106</volume>, <fpage>101712</fpage>. <pub-id pub-id-type="doi">10.1016/j.sysarc.2020.101712</pub-id>
</citation>
</ref>
<ref id="B5">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Chen</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Yang</surname>
<given-names>T.</given-names>
</name>
<name>
<surname>Zhang</surname>
<given-names>D.</given-names>
</name>
<name>
<surname>Huang</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Tian</surname>
<given-names>Y.</given-names>
</name>
</person-group> (<year>2021</year>). <article-title>Deep learning based classification of rock structure of tunnel face</article-title>. <source>Geosci. Front.</source> <volume>12</volume>, <fpage>395</fpage>&#x2013;<lpage>404</lpage>. <pub-id pub-id-type="doi">10.1016/j.gsf.2020.04.003</pub-id>
</citation>
</ref>
<ref id="B6">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Cheng</surname>
<given-names>G.</given-names>
</name>
<name>
<surname>Guo</surname>
<given-names>W.</given-names>
</name>
<name>
<surname>Fan</surname>
<given-names>P.</given-names>
</name>
</person-group> (<year>2017</year>). <article-title>Study on rock image classification based on convolution neural network</article-title>. <source>J. Xi&#x2019;an Shiyou Univ. Nat. Sci. Ed.</source> <volume>32</volume>, <fpage>116</fpage>&#x2013;<lpage>122</lpage>.</citation>
</ref>
<ref id="B7">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Dabrowski</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Michalik</surname>
<given-names>T.</given-names>
</name>
</person-group> (<year>2017</year>). <article-title>How effective is transfer learning method for image classification</article-title>. <conf-name>Position papers of the Federated Conference on Computer Science and Information Systems</conf-name>, <fpage>3</fpage>&#x2013;<lpage>9</lpage>.</citation>
</ref>
<ref id="B8">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Dai</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>He</surname>
<given-names>K.</given-names>
</name>
<name>
<surname>Sun</surname>
<given-names>J.</given-names>
</name>
</person-group> (<year>2016</year>). &#x201c;<article-title>Instance-aware semantic segmentation via multi-task network cascades</article-title>,&#x201d; in <conf-name>Proceedings of the IEEE conference on computer vision and pattern recognition</conf-name>, <fpage>3150</fpage>&#x2013;<lpage>3158</lpage>.</citation>
</ref>
<ref id="B9">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Falivene</surname>
<given-names>O.</given-names>
</name>
<name>
<surname>Auchter</surname>
<given-names>N. C.</given-names>
</name>
<name>
<surname>de Lima</surname>
<given-names>R. P.</given-names>
</name>
<name>
<surname>Kleipool</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Solum</surname>
<given-names>J. G.</given-names>
</name>
<name>
<surname>Zarian</surname>
<given-names>P.</given-names>
</name>
<etal/>
</person-group> (<year>2022</year>). <article-title>Lithofacies identification in cores using deep learning segmentation: Turbidite deposits (gulf of Mexico and north sea) and the geoscientists role</article-title>. <source>AAPG Bull.</source>
</citation>
</ref>
<ref id="B10">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Fan</surname>
<given-names>G.</given-names>
</name>
<name>
<surname>Chen</surname>
<given-names>F.</given-names>
</name>
<name>
<surname>Chen</surname>
<given-names>D.</given-names>
</name>
<name>
<surname>Li</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Dong</surname>
<given-names>Y.</given-names>
</name>
</person-group> (<year>2020</year>). <article-title>A deep learning model for quick and accurate rock recognition with smartphones</article-title>. <source>Mob. Inf. Syst.</source> <volume>2020</volume>, <fpage>1</fpage>&#x2013;<lpage>14</lpage>. <pub-id pub-id-type="doi">10.1155/2020/7462524</pub-id>
</citation>
</ref>
<ref id="B11">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Feng</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Gong</surname>
<given-names>X.</given-names>
</name>
<name>
<surname>Xu</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Xie</surname>
<given-names>Z.</given-names>
</name>
<name>
<surname>Cai</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Lv</surname>
<given-names>X.</given-names>
</name>
</person-group> (<year>2019</year>). <article-title>Lithology recognition based on fresh rock images and twins convolution neural network</article-title>. <source>Geogr. Geo-Information Sci.</source> <volume>35</volume>, <fpage>89</fpage>&#x2013;<lpage>94</lpage>.</citation>
</ref>
<ref id="B12">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Gao</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Qi</surname>
<given-names>D.</given-names>
</name>
<name>
<surname>Mu</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Chen</surname>
<given-names>J.</given-names>
</name>
</person-group> (<year>2021</year>). <article-title>A transfer residual neural network based on resnet-34 for detection of wood knot defects</article-title>. <source>Forests</source> <volume>12</volume>, <fpage>212</fpage>. <pub-id pub-id-type="doi">10.3390/f12020212</pub-id>
</citation>
</ref>
<ref id="B13">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Gon&#xe7;alves</surname>
<given-names>L. B.</given-names>
</name>
<name>
<surname>Leta</surname>
<given-names>F. R.</given-names>
</name>
</person-group> (<year>2010</year>). <article-title>Macroscopic rock texture image classification using a hierarchical neuro-fuzzy class method</article-title>. <source>Math. problems Eng.</source> <volume>2010</volume>, <fpage>1</fpage>&#x2013;<lpage>23</lpage>. <pub-id pub-id-type="doi">10.1155/2010/163635</pub-id>
</citation>
</ref>
<ref id="B14">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Guo</surname>
<given-names>W.</given-names>
</name>
<name>
<surname>Dong</surname>
<given-names>C.</given-names>
</name>
<name>
<surname>Lin</surname>
<given-names>C.</given-names>
</name>
<name>
<surname>Wu</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Zhang</surname>
<given-names>X.</given-names>
</name>
<name>
<surname>Liu</surname>
<given-names>J.</given-names>
</name>
</person-group> (<year>2022</year>). <article-title>Rock physical modeling of tight sandstones based on digital rocks and reservoir porosity prediction from seismic data</article-title>. <source>Front. Earth Sci. (Lausanne).</source> <volume>10</volume>, <fpage>932929</fpage>. <pub-id pub-id-type="doi">10.3389/feart.2022.932929</pub-id>
</citation>
</ref>
<ref id="B15">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Hang</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Zhang</surname>
<given-names>D.</given-names>
</name>
<name>
<surname>Chen</surname>
<given-names>P.</given-names>
</name>
<name>
<surname>Zhang</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Wang</surname>
<given-names>B.</given-names>
</name>
</person-group> (<year>2019</year>). <article-title>Classification of plant leaf diseases based on improved convolutional neural network</article-title>. <source>Sensors</source> <volume>19</volume>, <fpage>4161</fpage>. <pub-id pub-id-type="doi">10.3390/s19194161</pub-id>
</citation>
</ref>
<ref id="B16">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>He</surname>
<given-names>K.</given-names>
</name>
<name>
<surname>Zhang</surname>
<given-names>X.</given-names>
</name>
<name>
<surname>Ren</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Sun</surname>
<given-names>J.</given-names>
</name>
</person-group> (<year>2016a</year>). &#x201c;<article-title>Deep residual learning for image recognition</article-title>,&#x201d; in <conf-name>Proceedings of the IEEE conference on computer vision and pattern recognition</conf-name>, <fpage>770</fpage>&#x2013;<lpage>778</lpage>.</citation>
</ref>
<ref id="B17">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>He</surname>
<given-names>K.</given-names>
</name>
<name>
<surname>Zhang</surname>
<given-names>X.</given-names>
</name>
<name>
<surname>Ren</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Sun</surname>
<given-names>J.</given-names>
</name>
</person-group> (<year>2016b</year>). &#x201c;<article-title>Identity mappings in deep residual networks</article-title>,&#x201d; in <conf-name>European conference on computer vision</conf-name> (<publisher-name>Springer</publisher-name>), <fpage>630</fpage>&#x2013;<lpage>645</lpage>.</citation>
</ref>
<ref id="B18">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Houshmand</surname>
<given-names>N.</given-names>
</name>
<name>
<surname>GoodFellow</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Esmaeili</surname>
<given-names>K.</given-names>
</name>
<name>
<surname>Calder&#xf3;n</surname>
<given-names>J. C. O.</given-names>
</name>
</person-group> (<year>2022</year>). <article-title>Rock type classification based on petrophysical, geochemical, and core imaging data using machine and deep learning techniques</article-title>. <source>Appl. Comput. Geosciences</source> <volume>16</volume>, <fpage>100104</fpage>. <pub-id pub-id-type="doi">10.1016/j.acags.2022.100104</pub-id>
</citation>
</ref>
<ref id="B19">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Hu</surname>
<given-names>Q.</given-names>
</name>
<name>
<surname>Ye</surname>
<given-names>W.</given-names>
</name>
<name>
<surname>Wang</surname>
<given-names>Q.</given-names>
</name>
<name>
<surname>Chen</surname>
<given-names>Y.</given-names>
</name>
</person-group> (<year>2020</year>). <article-title>Recognition of lithology with big data of geological images</article-title>. <source>J. Eng. Geol.</source> <volume>28</volume>, <fpage>1433</fpage>&#x2013;<lpage>1440</lpage>.</citation>
</ref>
<ref id="B20">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Iglesias</surname>
<given-names>J. C. &#xc1;.</given-names>
</name>
<name>
<surname>Santos</surname>
<given-names>R. B. M.</given-names>
</name>
<name>
<surname>Paciornik</surname>
<given-names>S.</given-names>
</name>
</person-group> (<year>2019</year>). <article-title>Deep learning discrimination of quartz and resin in optical microscopy images of minerals</article-title>. <source>Miner. Eng.</source> <volume>138</volume>, <fpage>79</fpage>&#x2013;<lpage>85</lpage>. <pub-id pub-id-type="doi">10.1016/j.mineng.2019.04.032</pub-id>
</citation>
</ref>
<ref id="B21">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Imamverdiyev</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Sukhostat</surname>
<given-names>L.</given-names>
</name>
</person-group> (<year>2019</year>). <article-title>Lithological facies classification using deep convolutional neural network</article-title>. <source>J. Petroleum Sci. Eng.</source> <volume>174</volume>, <fpage>216</fpage>&#x2013;<lpage>228</lpage>. <pub-id pub-id-type="doi">10.1016/j.petrol.2018.11.023</pub-id>
</citation>
</ref>
<ref id="B22">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Karimpouli</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Tahmasebi</surname>
<given-names>P.</given-names>
</name>
</person-group> (<year>2019</year>). <article-title>Segmentation of digital rock images using deep convolutional autoencoder networks</article-title>. <source>Comput. geosciences</source> <volume>126</volume>, <fpage>142</fpage>&#x2013;<lpage>150</lpage>. <pub-id pub-id-type="doi">10.1016/j.cageo.2019.02.003</pub-id>
</citation>
</ref>
<ref id="B23">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Koeshidayatullah</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Al-Azani</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Baraboshkin</surname>
<given-names>E. E.</given-names>
</name>
<name>
<surname>Alfarraj</surname>
<given-names>M.</given-names>
</name>
</person-group> (<year>2022</year>). <article-title>Faciesvit: Vision transformer for an improved core lithofacies prediction</article-title>. <source>Front. Earth Sci. (Lausanne).</source> <volume>10</volume>, <fpage>992442</fpage>. <pub-id pub-id-type="doi">10.3389/feart.2022.992442</pub-id>
</citation>
</ref>
<ref id="B24">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Li</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Zhang</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Wu</surname>
<given-names>Z.</given-names>
</name>
<name>
<surname>Ling</surname>
<given-names>Z.</given-names>
</name>
<name>
<surname>Cao</surname>
<given-names>X.</given-names>
</name>
<name>
<surname>Guo</surname>
<given-names>K.</given-names>
</name>
<etal/>
</person-group> (<year>2020</year>). <article-title>Autonomous martian rock image classification based on transfer deep learning methods</article-title>. <source>Earth Sci. Inf.</source> <volume>13</volume>, <fpage>951</fpage>&#x2013;<lpage>963</lpage>. <pub-id pub-id-type="doi">10.1007/s12145-019-00433-9</pub-id>
</citation>
</ref>
<ref id="B25">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Liang</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Cui</surname>
<given-names>Q.</given-names>
</name>
<name>
<surname>Luo</surname>
<given-names>X.</given-names>
</name>
<name>
<surname>Xie</surname>
<given-names>Z.</given-names>
</name>
</person-group> (<year>2021</year>). <article-title>Research on classification of fine-grained rock images based on deep learning</article-title>. <source>Comput. Intell. Neurosci.</source> <volume>2021</volume>, <fpage>1</fpage>&#x2013;<lpage>11</lpage>. <pub-id pub-id-type="doi">10.1155/2021/5779740</pub-id>
</citation>
</ref>
<ref id="B26">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Liu</surname>
<given-names>Y.-Z.</given-names>
</name>
<name>
<surname>Ren</surname>
<given-names>S.-F.</given-names>
</name>
<name>
<surname>Zhao</surname>
<given-names>P.-F.</given-names>
</name>
</person-group> (<year>2022</year>). <article-title>Application of the deep neural network to predict dynamic responses of stiffened plates subjected to near-field underwater explosion</article-title>. <source>Ocean. Eng.</source> <volume>247</volume>, <fpage>110537</fpage>. <pub-id pub-id-type="doi">10.1016/j.oceaneng.2022.110537</pub-id>
</citation>
</ref>
<ref id="B27">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Luo</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Wang</surname>
<given-names>Z.</given-names>
</name>
</person-group> (<year>2021</year>). &#x201c;<article-title>An improved resnet algorithm based on cbam</article-title>,&#x201d; in <conf-name>2021 International Conference on Computer Network Electronic and Automation (ICCNEA)</conf-name>, <conf-loc>Xi&#x27;an, China</conf-loc>, <conf-date>24-26 September 2021</conf-date> (<publisher-name>IEEE</publisher-name>), <fpage>121</fpage>&#x2013;<lpage>125</lpage>.</citation>
</ref>
<ref id="B28">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>M&#x142;ynarczuk</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>G&#xf3;rszczyk</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>&#x15a;lipek</surname>
<given-names>B.</given-names>
</name>
</person-group> (<year>2013</year>). <article-title>The application of pattern recognition in the automatic classification of microscopic rock images</article-title>. <source>Comput. Geosciences</source> <volume>60</volume>, <fpage>126</fpage>&#x2013;<lpage>133</lpage>. <pub-id pub-id-type="doi">10.1016/j.cageo.2013.07.015</pub-id>
</citation>
</ref>
<ref id="B29">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Nair</surname>
<given-names>V.</given-names>
</name>
<name>
<surname>Hinton</surname>
<given-names>G. E.</given-names>
</name>
</person-group> (<year>2010</year>). &#x201c;<article-title>Rectified linear units improve restricted Boltzmann machines</article-title>,&#x201d; in <conf-name>Icml</conf-name>.</citation>
</ref>
<ref id="B30">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Pan</surname>
<given-names>J.</given-names>
</name>
</person-group> (<year>2017</year>). &#x201c;<article-title>Review of metric learning with transfer learning</article-title>,&#x201d; in <conf-name>AIP Conference Proceedings</conf-name> (<publisher-loc>Melville, NY</publisher-loc>: <publisher-name>AIP Publishing LLC</publisher-name>), <fpage>020040</fpage>.<volume>1864</volume>.</citation>
</ref>
<ref id="B31">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Patel</surname>
<given-names>A. K.</given-names>
</name>
<name>
<surname>Chatterjee</surname>
<given-names>S.</given-names>
</name>
</person-group> (<year>2016</year>). <article-title>Computer vision-based limestone rock-type classification using probabilistic neural network</article-title>. <source>Geosci. Front.</source> <volume>7</volume>, <fpage>53</fpage>&#x2013;<lpage>60</lpage>. <pub-id pub-id-type="doi">10.1016/j.gsf.2014.10.005</pub-id>
</citation>
</ref>
<ref id="B32">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Pham</surname>
<given-names>C.</given-names>
</name>
<name>
<surname>Shin</surname>
<given-names>H.-S.</given-names>
</name>
</person-group> (<year>2020</year>). <article-title>A feasibility study on application of a deep convolutional neural network for automatic rock type classification</article-title>. <source>Tunn. Undergr. space</source> <volume>30</volume>, <fpage>462</fpage>&#x2013;<lpage>472</lpage>.</citation>
</ref>
<ref id="B33">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Ran</surname>
<given-names>X.</given-names>
</name>
<name>
<surname>Xue</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Zhang</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Liu</surname>
<given-names>Z.</given-names>
</name>
<name>
<surname>Sang</surname>
<given-names>X.</given-names>
</name>
<name>
<surname>He</surname>
<given-names>J.</given-names>
</name>
</person-group> (<year>2019</year>). <article-title>Rock classification from field image patches analyzed using a deep convolutional neural network</article-title>. <source>Mathematics</source> <volume>7</volume>, <fpage>755</fpage>. <pub-id pub-id-type="doi">10.3390/math7080755</pub-id>
</citation>
</ref>
<ref id="B34">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Ru</surname>
<given-names>Z.</given-names>
</name>
<name>
<surname>Jiong</surname>
<given-names>M.</given-names>
</name>
</person-group> (<year>2019</year>). <article-title>Identification and evaluation of logging methods for quartz sandstone gas reservoir in yulin gas field</article-title>. <source>J. Liaoning Univ. Petroleum Chem. Technol.</source> <volume>39</volume>, <fpage>65</fpage>.</citation>
</ref>
<ref id="B35">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Sharif</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Ralchenko</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Samson</surname>
<given-names>C.</given-names>
</name>
<name>
<surname>Ellery</surname>
<given-names>A.</given-names>
</name>
</person-group> (<year>2015</year>). <article-title>Autonomous rock classification using bayesian image analysis for rover-based planetary exploration</article-title>. <source>Comput. Geosciences</source> <volume>83</volume>, <fpage>153</fpage>&#x2013;<lpage>167</lpage>. <pub-id pub-id-type="doi">10.1016/j.cageo.2015.05.011</pub-id>
</citation>
</ref>
<ref id="B36">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>ShuTeng</surname>
<given-names>X.</given-names>
</name>
<name>
<surname>YongZhang</surname>
<given-names>Z.</given-names>
</name>
</person-group> (<year>2018</year>). <article-title>Artificial intelligence identification of ore minerals under microscope based on deep learning algorithm</article-title>. <source>Acta Petrol. Sin.</source> <volume>34</volume>, <fpage>3244</fpage>&#x2013;<lpage>3252</lpage>.</citation>
</ref>
<ref id="B37">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Singh</surname>
<given-names>N.</given-names>
</name>
<name>
<surname>Singh</surname>
<given-names>T.</given-names>
</name>
<name>
<surname>Tiwary</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Sarkar</surname>
<given-names>K. M.</given-names>
</name>
</person-group> (<year>2010</year>). <article-title>Textural identification of basaltic rock mass using image processing and neural network</article-title>. <source>Comput. Geosci.</source> <volume>14</volume>, <fpage>301</fpage>&#x2013;<lpage>310</lpage>. <pub-id pub-id-type="doi">10.1007/s10596-009-9154-x</pub-id>
</citation>
</ref>
<ref id="B38">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Su</surname>
<given-names>C.</given-names>
</name>
<name>
<surname>Xu</surname>
<given-names>S.-j.</given-names>
</name>
<name>
<surname>Zhu</surname>
<given-names>K.-y.</given-names>
</name>
<name>
<surname>Zhang</surname>
<given-names>X.-c.</given-names>
</name>
</person-group> (<year>2020</year>). <article-title>Rock classification in petrographic thin section images based on concatenated convolutional neural networks</article-title>. <source>Earth Sci. Inf.</source> <volume>13</volume>, <fpage>1477</fpage>&#x2013;<lpage>1484</lpage>. <pub-id pub-id-type="doi">10.1007/s12145-020-00505-1</pub-id>
</citation>
</ref>
<ref id="B39">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Wang</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Sun</surname>
<given-names>S.</given-names>
</name>
</person-group> (<year>2021</year>). <article-title>Image-based rock typing using grain geometry features</article-title>. <source>Comput. Geosciences</source> <volume>149</volume>, <fpage>104703</fpage>. <pub-id pub-id-type="doi">10.1016/j.cageo.2021.104703</pub-id>
</citation>
</ref>
<ref id="B40">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Xiao</surname>
<given-names>D.</given-names>
</name>
<name>
<surname>Le</surname>
<given-names>B. T.</given-names>
</name>
<name>
<surname>Ha</surname>
<given-names>T. T. L.</given-names>
</name>
</person-group> (<year>2021</year>). <article-title>Iron ore identification method using reflectance spectrometer and a deep neural network framework</article-title>. <source>Spectrochimica Acta Part A Mol. Biomol. Spectrosc.</source> <volume>248</volume>, <fpage>119168</fpage>. <pub-id pub-id-type="doi">10.1016/j.saa.2020.119168</pub-id>
</citation>
</ref>
<ref id="B41">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Xiao</surname>
<given-names>Q.</given-names>
</name>
<name>
<surname>Li</surname>
<given-names>W.</given-names>
</name>
<name>
<surname>Kai</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Chen</surname>
<given-names>P.</given-names>
</name>
<name>
<surname>Zhang</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Wang</surname>
<given-names>B.</given-names>
</name>
</person-group> (<year>2019</year>). <article-title>Occurrence prediction of pests and diseases in cotton on the basis of weather factors by long short term memory network</article-title>. <source>BMC Bioinforma.</source> <volume>20</volume>, <fpage>1</fpage>&#x2013;<lpage>15</lpage>. <pub-id pub-id-type="doi">10.1186/s12859-019-3262-y</pub-id>
</citation>
</ref>
<ref id="B42">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Yan</surname>
<given-names>Q.</given-names>
</name>
<name>
<surname>Yang</surname>
<given-names>B.</given-names>
</name>
<name>
<surname>Wang</surname>
<given-names>W.</given-names>
</name>
<name>
<surname>Wang</surname>
<given-names>B.</given-names>
</name>
<name>
<surname>Chen</surname>
<given-names>P.</given-names>
</name>
<name>
<surname>Zhang</surname>
<given-names>J.</given-names>
</name>
</person-group> (<year>2020</year>). <article-title>Apple leaf diseases recognition based on an improved convolutional neural network</article-title>. <source>Sensors</source> <volume>20</volume>, <fpage>3535</fpage>. <pub-id pub-id-type="doi">10.3390/s20123535</pub-id>
</citation>
</ref>
<ref id="B43">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Yang</surname>
<given-names>B.</given-names>
</name>
<name>
<surname>Wang</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Sha</surname>
<given-names>Z.</given-names>
</name>
<name>
<surname>Wang</surname>
<given-names>B.</given-names>
</name>
<name>
<surname>Chen</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Yao</surname>
<given-names>X.</given-names>
</name>
<etal/>
</person-group> (<year>2019</year>). <article-title>Evaluation of aboveground nitrogen content of winter wheat using digital imagery of unmanned aerial vehicles</article-title>. <source>Sensors</source> <volume>19</volume>, <fpage>4416</fpage>. <pub-id pub-id-type="doi">10.3390/s19204416</pub-id>
</citation>
</ref>
<ref id="B44">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Yi</surname>
<given-names>X.</given-names>
</name>
<name>
<surname>Li</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Zhang</surname>
<given-names>R.</given-names>
</name>
<name>
<surname>Gongqiu</surname>
<given-names>Z.</given-names>
</name>
<name>
<surname>He</surname>
<given-names>X.</given-names>
</name>
<name>
<surname>Liu</surname>
<given-names>L.</given-names>
</name>
<etal/>
</person-group> (<year>2022</year>). <article-title>Rock mass structural surface trace extraction based on transfer learning</article-title>. <source>Open Geosci.</source> <volume>14</volume>, <fpage>98</fpage>&#x2013;<lpage>110</lpage>. <pub-id pub-id-type="doi">10.1515/geo-2022-0337</pub-id>
</citation>
</ref>
<ref id="B45">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Zeng</surname>
<given-names>X.</given-names>
</name>
<name>
<surname>Xiao</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Ji</surname>
<given-names>X.</given-names>
</name>
<name>
<surname>Wang</surname>
<given-names>G.</given-names>
</name>
</person-group> (<year>2021</year>). <article-title>Mineral identification based on deep learning that combines image and mohs hardness</article-title>. <source>Minerals</source> <volume>11</volume>, <fpage>506</fpage>. <pub-id pub-id-type="doi">10.3390/min11050506</pub-id>
</citation>
</ref>
<ref id="B46">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Zhang</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Li</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Han</surname>
<given-names>S.</given-names>
</name>
</person-group> (<year>2018</year>). <article-title>Automatic identification and classification in lithology based on deep learning in rock images</article-title>. <source>Yanshi Xuebao/Acta Petrol. Sin.</source> <volume>34</volume>, <fpage>333</fpage>&#x2013;<lpage>342</lpage>.</citation>
</ref>
<ref id="B47">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Zhu</surname>
<given-names>W.</given-names>
</name>
<name>
<surname>Braun</surname>
<given-names>B.</given-names>
</name>
<name>
<surname>Chiang</surname>
<given-names>L. H.</given-names>
</name>
<name>
<surname>Romagnoli</surname>
<given-names>J. A.</given-names>
</name>
</person-group> (<year>2021</year>). <article-title>Investigation of transfer learning for image classification and impact on training sample size</article-title>. <source>Chemom. Intelligent Laboratory Syst.</source> <volume>211</volume>, <fpage>104269</fpage>. <pub-id pub-id-type="doi">10.1016/j.chemolab.2021.104269</pub-id>
</citation>
</ref>
</ref-list>
</back>
</article>