?

基于MobileNet的果蔬識別系統

2021-02-19 05:28陳怡帆
現代信息科技 2021年13期
關鍵詞:圖像識別卷積神經網絡深度學習

摘 ?要:我國疆域遼闊,土壤肥沃,氣候溫和,尤其是新疆地區,日照時間充足,盛產水果。造就了我國成為農業生產大國,每年進出口非常多的水果蔬菜。據了解,在大部分農貿市場都靠人工進行果蔬分類,工作量多且效率低下。提出一種基于MobileNet模型的果蔬識別系統,該系統可以快速進行果蔬識別。該項目用了傳統CNN模型和更輕量化的MobileNet模型對12個不同品種的蔬果數據集進行訓練,發現基于MobileNet模型的識別結果正確率更高。

關鍵詞:深度學習;圖像識別;卷積神經網絡;MobileNet

中圖分類號:TP391.4 ? ? 文獻標識碼:A文章編號:2096-4706(2021)13-0155-04

Fruit and Vegetable Recognition System Based on MobileNet

CHEN Yifan

(School of Computer and Software, Jincheng College of Sichuan University, Chengdu, 611731, China)

Abstract: China has a vast territory, fertile soil and mild climate. Especially in Xinjiang, it has sufficient sunshine and is rich in fruits. As a result, China has become a large agricultural production country, importing and exporting a lot of fruits and vegetables every year. It is understood that in most farmers’ markets, fruits and vegetables are classified manually, which has a large of workload and low efficiency. Therefore, this paper puts forward a fruit and vegetable recognition system based on MobileNet model, which can quickly recognize fruits and vegetables. The project uses the traditional CNN model and the lighter MobileNet model to train the data sets of 12 different kinds of fruit and vegetable. It is found that the recognition result based on MobileNet model has a higher accuracy.

Keywords: deep learning; image recognition; convolutional neural network; MobileNet

0 ?引 ?言

近年來,隨著社會的快速發展,經濟貿易的逐漸擴大,我們國家已經成為了一個商品進出口大國,特別是農業商品,每年的進出口量非常之大。在調查過程中,發現國內大部分農貿市場并沒有涉及有水果蔬菜識別領域的系統,大多數地方都采用人工工作,于是本實驗項目設計了一個果蔬識別系統,預期可以用于果蔬識別及分類,有效提高農貿市場工作效率。該設計采用了卷積神經網絡(CNN),CNN已經普遍應用在計算機視覺、自然語言處理領域,并且已經取得了不錯的效果。所以在圖像識別領域,必然離不開廣泛使用的卷積神經網絡。本項目使用了傳統CNN和輕量級MobileNet網絡模型,并借此調用數據集進行訓練,再對訓練后的兩個模型進行測試,并對它們的結果進行對比。

1 ?MobileNet網絡

1.1 ?什么是MobileNet網絡

MobileNet網絡是專注于移動端或者嵌入式設備中的輕量級CNN網絡,相比傳統神經網絡,在準確率小幅降低的前提下大大減少了模型參數和運算量,具體可以在下面公式的推算中證明。MobileNet的基本單元是深度可分離卷積(depth wisese parable convolution),該操作又可以分為兩個操作——深度卷積(depth wise convolution)和逐點卷積(point wise convolution)。

逐點卷積(pointwiseconvolution)其實就是普通的卷積,因為傳統卷積核都是3×3的,但此時的point wise convolution操作采用了1×1的卷積。

1.2 ?與標準卷積網絡的對比

圖1展示了標準卷積和MobileNet的深度可分離卷積的兩個組成—深度卷積和逐點卷積。

(c)逐點卷積

由上圖我們可以看出:

對于圖1(a)的標準卷積(standard convolution)計算量為 :

Dk×Dk×M×N×DF×DF

對于圖1(b)的深度卷積計算量為:

Dk×Dk×M×DF×DF

對于圖1(c)的逐點卷積計算量為:

M×N×DF×DF

最后我們將屬于MobileNet網絡的深度卷積和逐點卷積的計算量加起來除以標準卷積的計算量,可得以下式子:

由此式可以得出結論:當使用3×3的卷積核時,忽略極小項1/N,如果使用標準卷積,其計算量是可分離深度卷積的9倍。由此可知,如果使用MobileNet網絡,其核心深度可分離卷積可大大幫助減少運算量,使其成為更輕量化的模型。

2 ?訓練過程

2.1 ?數據集處理

本實驗項目借助Tensorflow框架。對12個不同類別的果蔬數據集進行訓練,為了提高模型的泛化能力,對數據集采用數據增強手段對數據集進行處理,從而得到更多的圖像。通過數據分割,把數據分為訓練集和測試集。因為訓練集和驗證集的數據不能一樣,所以本實驗劃分訓練集占80%,驗證集占20%。對兩個模型訓練,都是先分別傳入訓練集的目錄和測試集的目錄,加載數據集,統一把數據圖像處理成224x224的大小傳入模型做訓練,為了模型一次訓練16張圖片,batchsize設置為16,設置成16可以防止模型過擬合同時保證模型的訓練速度更快。

2.2 ?構建模型

加載完數據集然后就是構建模型了,這是訓練過程中最重要的一步。本實驗對兩個模型都做了歸一化的處理,為了方便模型調整,把像素值0~255統一處理到0~1之間,但兩個模型的優化器不一樣,本次實驗在傳統CNN模型的訓練中采用的是廣泛使用的SGD優化器,而在MobileNet模型訓練采用的是一個比較新型的Adam優化器。這兩個優化器之間各有千秋,SGD優化器最大的缺點是loss下降速度慢,而且可能會在溝壑的兩邊持續震蕩,停留在一個局部最優點。這一點可以在后面的圖像中明顯看出。而Adam是新出的優化器,經歷了幾代優化器(例如SGD、SGDM、NAG、AdaGrad、AdaDelta)才誕生,顯然是前面幾代優化器的集大成者。那么SGD-M在SGD基礎上增加了一階動量,AdaGrad和AdaDelta在SGD基礎上增加了二階動量。把一階動量和二階動量都用起來,就是Adam了。而在本實驗項目的結果中可以通過后面的表格看出確實Adam優化器的下降函數曲線更快也更平穩,不會出現使用傳統SGD優化器的問題。同時MobileNet的訓練過程中采用了遷移學習的思想,因為是用MobileNet網絡,所以該訓練過程中采用了MobileNetV2的特征層,對主干模型的輸出進行全局平均池化(這一步的目的是替代全連接層,可以減少參數數量,防止過擬合),然后通過全連接層映射到最后的分類目錄上。兩個模型的損失函數都采用交叉熵損失函數。該項目最重要的就是構建兩個模型,下文給出實現上述操作的代碼。

2.3 ?構建CNN模型

構建CNN模型的代碼具體為:

def model_load(IMG_SHAPE=(224, 224, 3), class_num=12):

# 搭建模型

model = tf.keras.models.Sequential([

tf.keras.layers.experimental.preprocessing.Rescaling(1. / 255, input_shape=IMG_SHAPE),

# 卷積層,該卷積層的輸出為32個通道,卷積核的大小是3*3,激活函數為relu

tf.keras.layers.Conv2D(32, (3, 3), activation=’relu’),

# 添加池化層,池化的kernel大小是2*2

tf.keras.layers.MaxPooling2D(2, 2),

# Add another convolution

# 卷積層,輸出為64個通道,卷積核大小為3*3,激活函數為relu

tf.keras.layers.Conv2D(64, (3, 3), activation=’relu’),

# 池化層,最大池化,對2*2的區域進行池化操作

tf.keras.layers.MaxPooling2D(2, 2),

tf.keras.layers.Flatten(),

tf.keras.layers.Dense(128, activation=’relu’),

# 通過softmax函數將模型輸出為類名長度的神經元上,激活函數采用softmax對應概率值

tf.keras.layers.Dense(class_num, activation=’softmax’)

])

model.summary()

# 指明模型的訓練參數,優化器為sgd優化器,損失函數為交叉熵損失函數

model.compile(optimizer=’sgd’, loss=’categorical_crossentropy’, metrics=[‘accuracy’])

return model

2.4 ?構建MobileNet模型

構建MobileNet模型的代碼具體為:

def model_load(IMG_SHAPE=(224, 224, 3), class_num=12):

base_model = tf.keras.applications.MobileNetV2(input_shape=IMG_SHAPE,

include_top=False,

weights=’imagenet’)

base_model.trainable = False

model = tf.keras.models.Sequential([

# 進行歸一化的處理

tf.keras.layers.experimental.preprocessing.Rescaling(1. / 127.5, offset=-1, input_shape=IMG_SHAPE),

base_model,

# 對主干模型的輸出進行全局平均池化

tf.keras.layers.GlobalAveragePooling2D(),

tf.keras.layers.Dense(class_num, activation=’softmax’)

])

model.summary()

# 模型訓練的優化器為adam優化器,模型的損失函數為交叉熵損失函數

model.compile(optimizer=’adam’, loss=’categorical_crossentropy’, metrics=[‘accuracy’])

return model

2.5 ?繪制訓練圖像

為了直觀演示訓練過程,訓練完分別繪制兩個模型訓練過程的曲線。包括準確率和loss圖像。圖2是CNN的準確率和loss圖像,圖3是MobileNet訓練的準確率和loss圖像。

對上面兩圖分析,可以明顯看出共同點,隨著訓練epoch(輪數)的增加,Accuracy(準確率)都是逐漸上升,CrossEntropyloss(交叉熵損失)也隨訓練輪次逐漸下降。但可以明顯看出,圖3的MobileNet模型訓練中,它的準確率幾乎是陡然上升,大概是只訓練了5輪就大概達到了接近100%的正確率,而在圖2模型的訓練過程中,幾乎是16輪訓練完才勉強達到了75%的正確率。在loss下降的圖像中可以看出MobileNet的下降是平穩快速無震蕩,而CNN模型下降得慢而且有震蕩。所以圖像顯示本實驗對MobileNet的訓練過程非常好,該曲線符合一般模型訓練圖像走勢,并沒有過擬合情況的發生。

3 ?實驗分析及結果

3.1 ?實驗分析

Heatmap作為目前最常見的一種可視化手段,因其豐富的色彩變化和生動飽滿的信息表達被廣泛應用于各種大數據分析場景,所以在測試模型的過程中選擇了繪制heatmap圖。模型訓練好后我們調用模型對驗證集的數據進行測試,測試完將結果顯示在heatmap圖上。該圖可以直觀反映對數據集的測試結果,如圖4圖5所示。同時可以對比兩個模型訓練結果及識別情況,圖4是經典CNN模型的heatmap,圖5是MobileNet模型的heatmap。

通過上面兩圖可以明顯看出,在訓練完CNN模型后,測試結果顯示對蔬果識別并不準確,尤其是在對大蔥、梨、西紅柿等蔬果的識別,識別正確的概率非常低。由此可見此模型對數據集訓練后用來識別的效果并不理想。而圖5是用輕量化網絡模型MobileNet對數據集訓練后的測試結果。通過對顏色的深淺可以明顯看出,在對12個不同蔬果種類的測試中,對8個種類蔬果的識別準確率都達到了100%,只有少數把土豆識別成芒果,大蔥識別出韭菜等錯誤,原因可能是這兩種蔬果顏色、形狀等特征相似,如果訓練更多蔬果的特征圖會改善此問題。由此可得出結論,MobileNet網絡模型在本實驗項目中,得到識別正確結果的準確率比較高,總錯誤率不超過0.3%。所以該系統采用MobileNet網絡模型更好。

3.2 ?實驗結果

模型訓練完畢后,我們隨便在網絡上搜索果蔬的網圖,運行此程序進行識別,在通過測試了蘋果、香蕉以及錯誤率最高的芒果后,得出結果都是正確識別,如圖6圖7所示。但可能隨著測試次數的增加,會有識別錯誤情況以及錯誤概率的提升。因為驗證集的測試結果顯示并不是每張圖都是完全正確識別,還是有小部分錯誤識別的狀況,造成錯誤識別的原因可能是數據集或訓練epoch的原因,如果提高數據集數量和訓練的epoch次數會使識別準確率更高,如果要達到每張圖都能完全正確識別的狀態還有待進一步地優化提升。

4 ?結 ?論

本實驗項目設計并實現了一種基于MobileNet的果蔬識別系統,訓練模型采用了MobileNetV2的特征層,Adam優化器和交叉熵損失函數。訓練結果顯示相比傳統CNN模型,MobileNet模型的精度更高,但本實驗中通過測試發現識別正確率還有待提升,為了能夠投入商業化應用還有待進一步優化,以提高果蔬檢測的準確度和穩定性。

參考文獻:

[1] HOWARD A G,ZHU M L,CHEN B,etal. MobileNets:Efficient Convolutional Neural Networks for Mobile Vision Applications [J/OL].arXiv:1704.04861 [cs.CV].https: //arxiv.org/abs/1704.04861.

[2] 高淑萍,趙清源,齊小剛,等.改進MobileNet的圖像分類方法研究 [J].智能系統學報,2021,16(1):11-20.

[3] 陸飛,沈世斌,蘇曉云,等.基于改進Mask R-CNN的交通監控視頻車輛檢測算法 [J].南京師范大學學報(工程技術版),2020,20(4):44-50.

[4] 張焯林,曹飛龍.基于MobileNet的輕量級網絡構建及其超分辨率圖像重建 [J].中國計量大學學報,2019,30(1):56-64+103.

[5] 高洋,陳萬米,林城.基于SSD-MobileNet的投籃機器人目標識別算法 [J].工業控制計算機,2021,34(6):51-53.

[6] 江南大學.基于MobileNetV3的實時人臉檢測方法:CN110647817A [P].2020-01-03.

[7] 張陶寧,陳恩慶,肖文福.一種改進MobileNet_YOLOv3網絡的快速目標檢測方法 [J].小型微型計算機系統,2021,42(5):1008-1014.

[8] 張駿,朱標,吉濤.基于MobileNet-SSD的紅外人臉檢測算法 [J].激光與紅外,2021,51(1):107-113.

作者簡介:陳怡帆(2000—),男,漢族,四川南充人,本科在讀,研究方向:機器學習。

猜你喜歡
圖像識別卷積神經網絡深度學習
基于計算機視覺的圖像識別技術研究
人工智能背景下圖像識別技術淺析
基于字典學習的正則化魯棒稀疏表示腫瘤細胞圖像識別
基于深度卷積神經網絡的物體識別算法
MOOC與翻轉課堂融合的深度學習場域建構
圖像識別交互系統
大數據技術在反恐怖主義中的應用展望
深度學習算法應用于巖石圖像處理的可行性研究
基于深度卷積網絡的人臉年齡分析算法與實現
基于卷積神經網絡的樹葉識別的算法的研究
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合