閆建偉,張樂偉,趙源,張富貴
(1.貴州大學機械工程學院,貴陽市,550025;2.國家林業(yè)和草原局刺梨工程技術(shù)研究中心,貴陽市,550025)
近年來,隨著深度學習理論研究的不斷深入,基于Anchor目標檢測框架已成為國內(nèi)外卷積神經(jīng)網(wǎng)絡領域研究的熱點。當前,對基于Anchor的目標檢測框架的研究主要分為兩類:一類是基于區(qū)域候選框的二階段目標檢測框架(two stage)算法,該方法先在圖像上生成若干可能包含目標的候選區(qū)域,然后通過卷積神經(jīng)網(wǎng)絡(Convolutional Neural Network,CNN)分別對這些候選區(qū)域提取特征,最后通過卷積神經(jīng)網(wǎng)絡進行目標位置的回歸與類別的識別,典型的算法有R-CNN(Region Convolutional Neural Network)[1]、SPPNet(Spatial Pyramid Pooling Networks)[2]、Fast RCNN[3-4]、Faster RCNN[5-6]、FPN(Feature Pyramid Networks)[7]、R-FCN(Region-based Fully Convolutional Network)[8]等;另一類為一階段目標檢測框架(one stage)算法,該方法直接從圖片獲得預測結(jié)果,將整個目標檢測任務整合成一個端到端的任務,而且只處理一次圖像即可得到目標的類別與位置信息,典型的算法有SSD(Single Shot multibox Detector)[9]、YOLO(You Only Look Once)[10-12]、DSSD(Deconvolutional Single Shot Detector)[13]、FSSD(Feature fusion Single Shot multibox Detector)[14]以及RetinaNet[15]等。二階段目標檢測算法比一階段目標檢測算法具有更高的準確率和定位精度,而一階目標檢測算法RetinaNet在COCO測試集上的結(jié)果高于二階目標檢測模型[15]。在RetinaNet目標檢測算法方面,宋歡歡等[16]將其網(wǎng)絡層數(shù)增加到152層,并且加入了MobileNet的設計思想,對其加速和壓縮,有效地提高了準確率。劉革等[17]為了提高模型的前向推斷速度,用MobileNet V3替換ResNet-50[18]用于基礎特征提取網(wǎng)絡。張物華等[19]在基礎特征提取網(wǎng)絡中加入特征通道注意力機制模塊,突出特征圖中的特征通道,以提高精度。王璐璐等[20]在C3、C4層加入通道注意力模塊,同時,為緩解網(wǎng)絡的過擬合問題,在通道注意力模塊的全連接層加入隨機失活機制,從而增強網(wǎng)絡的魯棒性。謝學立等[21]在RetinaNet結(jié)構(gòu)中分別添加bottom-up短連接通路以及全局上下文上采樣模塊,用來增強檢測層特征的結(jié)構(gòu)性和語義性。以上改進雖然準確率有一定提高,但檢測效率卻顯著降低了。
針對生產(chǎn)車間刺梨果實識別,人工分揀分級效率低,無法滿足工業(yè)化加工刺梨果實的要求,本文擬選擇一階目標檢測算法中的RetinaNet目標檢測算法,以RetinaNet模型為基礎,改進bias公式以及運用K-means++聚類算法,并增強數(shù)據(jù)和合理調(diào)節(jié)參數(shù),以期實現(xiàn)對刺梨加工車間的果實進行高精度、快速識別。
本文刺梨果實圖像于2019年9月28日在貴州省龍里縣谷腳鎮(zhèn)茶香村刺梨產(chǎn)業(yè)示范園區(qū)采集,品種為貴龍5號,共采集圖片807幅。對刺梨果實用尼康(Nikon)D750單反相機進行拍照,原始圖像格式為.JPG,分辨率為6 016像素×4 016像素。刺梨果實圖像采集樣本示例如圖1所示。
圖1 刺梨果實圖像樣本示例
本文從拍攝到的807幅刺梨果實照片中,將刺梨果實分為6類。通過ACDSee20軟件將807幅大小為6 016像素×4 016像素的原圖裁剪為多幅大小為902像素×602像素的完全包含刺梨果實的樣本,對裁剪后的樣本進行上下翻轉(zhuǎn)以及旋轉(zhuǎn)45°、90°和270°,最終得到7 426 幅刺梨樣本。再使用LabelImg軟件對7 426 幅刺梨樣本進行樣本標簽制作。
刺梨果實圖像分級簡圖,如圖2所示。
1.1
針對采摘后的刺梨果實進行分級,按顏色、果實好壞等情況,將刺梨果實圖像分為6類:1.1、1.2、2.1、2.2、3.1、3.2;其中,1.、2.、3.等按照顏色不同進行分級[1.:顏色為青色、2.:顏色為金黃、3.:非以上兩種情況]。.1、.2等按照果實好壞進行分級[.1:非壞果、.2:壞果]。分類后各類刺梨照片數(shù)量較均衡,有利于后期處理。
RetinaNet模型由特征提取網(wǎng)絡、特征金字塔網(wǎng)絡、子網(wǎng)絡等三個模塊構(gòu)成,其網(wǎng)絡結(jié)構(gòu)如圖3所示。圖3中A表示特征提取網(wǎng)絡,使用深度殘差網(wǎng)絡ResNet來完成對圖像特征的初步提??;B表示特征金字塔網(wǎng)絡,將A中產(chǎn)生的特征圖進行重新組合,完成對圖像特征的精細化提取,以便能更好地表達圖像信息;C表示子網(wǎng)絡,用于對待檢測的目標圖像分類和定位。
圖3 RetinaNet的網(wǎng)絡結(jié)構(gòu)
由于RetinaNet的核心是Focal Loss,在Focal Loss中,用于分類卷積的bias,可以在訓練的初始階段提高positive的分類概率以及決定神經(jīng)云產(chǎn)生的正負激勵的難易程度。針對其無法準確取值,在原有式(1)的基礎進行了改進,改進后的計算公式如式(2)所示。
bias=log[(1-π)/π]
(1)
bias=αlog[(1-π)/π]β+γ
(2)
α、β、γ可以控制bias的取值,根據(jù)實際情況,最終得出α=1.0、β=1.1、γ=0.0、π=0.01,使得預測圖像目標的準確性上升。
Anchor機制可有效解決目標檢測任務中存在的尺度及寬高比例變化范圍過大等問題。由于原始RetinaNet使用的是非刺梨樣本的數(shù)據(jù)集,所以原始RetinaNet所選定的Anchor尺度和寬高比例在本文的檢測任務中并不適用。
本文運用K-means++聚類算法[22],使其更加適合刺梨樣本,定位框更加精準。通過對刺梨數(shù)據(jù)集的真實標注框進行聚類操作,真實標注框長寬映射到模型輸入大小下的聚類結(jié)果如圖4所示。
圖4 真實boxes長寬聚類值
由圖4可知,有三個聚類簇,刺梨的寬高聚集在[35,33]、[40,39]以及[45,44]附近。
因此,本文將[90×90,125×125,160×160,195×195,230×230]作為對應的5個特征層的Anchor尺寸,以[0.5,1.0,1.5]作為Anchor的長寬比。
改進后的卷積神經(jīng)網(wǎng)絡模型,對刺梨果實進行識別的訓練步驟如圖5所示。
待訓練的刺梨果實圖片,首先在特征提取網(wǎng)絡圖5(a)中由深度殘差網(wǎng)絡ResNet50來完成對圖像特征的初步提取;其次在特征金字塔網(wǎng)絡圖5(b)中,將圖5(a)中產(chǎn)生的特征圖進行重新組合,以便能更好地表達圖像信息;最后在子網(wǎng)絡圖5(c)、圖5(d)中,運用K-means++聚類算法優(yōu)化Anchor參數(shù),以及對其中的bias公式進行改進,使其分類和定位更加準確。
圖5 卷積神經(jīng)網(wǎng)絡模型改進后的訓練步驟
電腦配置:Windows 10、64位操作系統(tǒng)。筆記本電腦,GeForce GTX 1050 Ti 顯卡,8 G顯存;Intel(R)Core(TM)i5-8300H處理器,主頻2.30 GHz,磁盤內(nèi)存128 GB,編程語言是Python編程語言。
從7 426幅刺梨樣本中,選出90%即6 683幅刺梨樣本進行訓練,余下10%即743幅刺梨樣本進行最終檢測。采用RetinaNet算法,在Keras框架下,并且設置該模型的batch-size為1、epochs為50、steps為1 000。
4.2.1 準確率和損失率對比
樣本識別準確率Acc的計算如式(3)所示,即預測正確的樣本比例。
(3)
式中:TP——正樣本被正確識別為正樣本;
TN——負樣本被正確識別為負樣本;
N——測試的樣本數(shù)。
改進前后RetinaNet目標檢測算法在不同訓練輪次的準確率和損失率如圖6、圖7所示。
圖6 原始RetinaNet目標檢測算法在不同輪次的平均Acc與loss曲線
圖7 改進后RetinaNet目標檢測算法在不同輪次的平均Acc與loss曲線
由圖6、圖7可知,由于改進了RetinaNet目標檢測算法的核心部分Focal Loss中的bias公式,針對刺梨果實的圖像識別,改進的RetinaNet目標檢測算法訓練集、測試集的準確率都在90%以上,相對于原始RetinaNet目標檢測算法,訓練集、測試集的準確率均提高1.80%;訓練集損失率與測試集損失率的收斂趨勢相同,訓練集、測試集的損失率降低了1.27%??梢?,改進的RetinaNet目標檢測算法對刺梨果實的圖像識別具有較高的識別率。
4.3.2 標記框?qū)Ρ?/p>
隨機選取一張未經(jīng)訓練的刺梨果實照片(像素大?。?02×602)如圖8所示,分別在原始RetinaNet目標檢測算法與改進RetinaNet目標檢測算法進行識別,識別效果(只保留置信度為80%以上的識別框)如圖9、圖10所示。
圖8 未經(jīng)訓練照片
圖9 原始RetinaNet目標檢測算法識別效果
圖10 改進后RetinaNet目標檢測算法識別效果
由圖9、圖10可知,改進后的RetinaNet目標檢測算法相對于原始RetinaNet目標檢測算法有較好的效果:可以使Anchor尺寸更加接近真實值,從而降低模型的訓練難度;識別準確率有不同程度提高;在識別準確率80%以上時,可以檢測出更多的刺梨果實;原始RetinaNet目標檢測算法中錯誤的標記框不再出現(xiàn)。
4.3.3 6種不同刺梨果實分級對比
在未經(jīng)過訓練的刺梨樣本中,按照6種不同刺梨果實分級方式,隨機各選取出1種,裁剪拼接成像素大小為902×602的圖片,如圖11所示,將其分別在原始RetinaNet目標檢測算法與改進RetinaNet目標檢測算法進行識別,識別結(jié)果如圖12、圖13所示。
圖11 6種刺梨果實拼接
圖12 原始RetinaNet目標檢測算法識別效果
圖13 改進后RetinaNet目標檢測算法識別效果
從未經(jīng)訓練的588幅刺梨果實樣本中隨機選取若干照片,分別在原始RetinaNet目標檢測算法和改進后的RetinaNet目標檢測算法中進行分類識別。圖片像素對檢測時間有一定的影響,提供檢測的單幅照片像素為300×300;含有單個刺梨果實。6類刺梨果實對比情況如表1所示。
改進前后6類刺梨果實識別準確率及檢測時間對比如表1所示,改進后的RetinaNet目標檢測算法對6類刺梨果實的識別準確率均有提高,提高的幅度從0.14%、0.68%、1.32%、1.83%、2.60%到4.21%不等,識別準確率最高提高了4.21%,識別準確率平均提高了1.80%。
表1 改進前后6類刺梨果實識別準確率及檢測時間對比
單個刺梨果實檢測時間為由60.99 ms縮減到57.91 ms,降低了3.08 ms,與原始RetinaNet目標檢測算法檢測時間相比縮短了5.05%。
1)本文針對原始RetinaNet目標檢測算法進行了改進,通過改進RetinaNet框架中Focal loss的bias公式、運用維度聚類算法找出Anchor的較好尺寸來改進原始的RetinaNet目標檢測算法。本文訓練出來的識別模型對加工車間下的刺梨果實準確率較高,能夠為刺梨果實的快速識別奠定基礎。
2)通過改進,與原始RetinaNet目標檢測算法相比,本文改進RetinaNet算法使標記框更加準確;識別準確率更高,最高提升了4.21%,平均提高了1.80%。單幅單個刺梨果實檢測時間由60.99 ms縮減到57.91 ms,降低了3.08 ms。本文改進RetinaNet算法平均識別準確率均有不同程度提高,檢測時間均有不同程度降低。
3)本文改進RetinaNet目標檢測算法,為工業(yè)生產(chǎn)刺梨加工車間的刺梨果實快速識別提供參考。