黃河清,胡嘉沛,李震,3,魏志威,呂石磊,3
(1.華南農(nóng)業(yè)大學(xué)電子工程學(xué)院與人工智能學(xué)院,廣東 廣州 510642;2.國家柑橘產(chǎn)業(yè)技術(shù)體系機械化研究室,廣東 廣州 510642; 3.廣東省農(nóng)情信息監(jiān)測工程技術(shù)研究中心,廣東 廣州 510642)
近年來,深度學(xué)習(xí)目標檢測[1]作為機器學(xué)習(xí)的重要組成部分,為人工智能領(lǐng)域提供了強大的算法支持,在農(nóng)業(yè)視覺領(lǐng)域不斷改進優(yōu)化[2]。果實識別對智慧農(nóng)業(yè)[3]、農(nóng)業(yè)自動化與智能化具有極其重要的作用。已有采用目標檢測算法對果實識別的研究工作,具體是由卷積神經(jīng)網(wǎng)絡(luò)(CNN)[4-5]來提取圖像特征,使用圖像金字塔(FPN)對神經(jīng)網(wǎng)絡(luò)各層獲得的特征進行融合,獲得更好的檢測效果。劉芳等[6]通過改進YOLO目標檢測算法來對復(fù)雜環(huán)境下的番茄果實檢測,檢測精度達到97.13%,檢測時間為7.79 ms,滿足檢測的精確性和實時性。荊偉斌等[8]使用以VGG為主干網(wǎng)路的Faster-RCNN多目標檢測模型對蘋果測圖果實識別,檢測精度達到91%,單幅圖像識別可以達到1.6 s,識別效果較好。李善軍等[9]使用單階段目標檢測器SSD-Resnet18對柑橘果實進行實時分類檢測,模型的檢測精度達到87.89%,平均檢測時間達到20.27 ms,在達到精度標準的情況下滿足檢測的實時性。薛月菊等[10]使用改進的YOLOv2目標檢測算法識別未成熟的芒果,在前景和背景顏色差別極小的情況下,仍獲得了良好的檢測效果。趙德安等[11]使用YOLO深度卷積網(wǎng)絡(luò),兼顧效率與準確率的同時,檢測召回率可以達到90%,準確率為97%。
當(dāng)前深度學(xué)習(xí)目標檢測模型較多且對不同的數(shù)據(jù)集滿足一定的魯棒性,但模型層數(shù)的增加會導(dǎo)致參數(shù)和計算量成倍地增加,很難應(yīng)用到手機端、嵌入式端等計算能力有限的移動端。研究者通過使用輕量級神經(jīng)網(wǎng)絡(luò)架構(gòu)[12]加速模型,或是使用剪枝方法[16]來對模型壓縮,增加模型實用性。邵偉平等[17]通過融合MobileNet與YOLOv3算法改進得到輕量級神經(jīng)網(wǎng)絡(luò)設(shè)計,模型大小方面減小了90%,識別時間為16 ms;李蘭等[18]通過將SSD模型中的VGG16網(wǎng)絡(luò)更換為輕量級的Mobilenet,更加快速準確地檢測工地表面缺陷;這類方法會占用犧牲大量顯存來換取檢測速度,但在邊緣端訪存量有限,無法有效移植應(yīng)用。孫彥麗等[19]通過剪枝量化卷積神經(jīng)網(wǎng)路,將輕量級網(wǎng)絡(luò)再次壓縮,解決了模型難以移植到移動端的問題??子萚20]使用L2范數(shù)的方法將目標檢測模型進一步剪枝,優(yōu)化存儲空間,準確識別復(fù)雜背景下的花卉目標,這類方法都是使用基于Anchor-based的方法,引入了大量的超參數(shù),占用內(nèi)存較多,且對較小目標的覆蓋性較差。為了保證目標檢測模型在檢測性能不變的情況下,減少模型的計算量和所占用空間,移植到邊緣端并適用于果園場景,已經(jīng)成為需要解決的關(guān)鍵問題。
本研究基于FCOS[21]的思想,設(shè)計了一種以Darknet19為主干網(wǎng)絡(luò),連接特征金字塔進行特征的多尺度融合,增加模型魯棒性,訓(xùn)練完成后將每一層的權(quán)重以通道(channel)為基準計算特征的L2 normalization,將小于30%的通道刪除,微調(diào)優(yōu)化得到最后權(quán)重,減少模型參數(shù)和計算量,為模型移植到算力有限的移動端提供技術(shù)支持。
本模型使用的訓(xùn)練環(huán)境為Window10,處理器為E5-2620 V4@2.10 GHz,八核,16 GB RAM,顯卡為Nvidia GeForce RTX 2080TI,結(jié)合OpenCV圖像處理數(shù)據(jù)庫,使用CUDA 10.2版本并行計算框架配合CUDNN 7.3版本的深度神經(jīng)網(wǎng)絡(luò)加速庫。
本模型使用自制的柑橘數(shù)據(jù)集進行訓(xùn)練,柑橘圖像采集地為廣東省梅州市某柑橘果園,通過手機相機在距離柑橘果實約1 m的地方拍攝柑橘圖像500張,使用LabelImg工具對其進行標注后將圖像進行數(shù)據(jù)增強,通過添加高斯噪聲、亮度調(diào)節(jié)、數(shù)據(jù)翻轉(zhuǎn)操作,經(jīng)篩選后共得到柑橘圖像1 500張作為自制數(shù)據(jù)集,并將其按照75%、10%、15%比例分為訓(xùn)練集、驗證集、測試集。
使用預(yù)先在COCO數(shù)據(jù)集上使用的Darknet19模型預(yù)訓(xùn)練權(quán)重進行遷移學(xué)習(xí),得到初始的預(yù)訓(xùn)練參數(shù),加快模型訓(xùn)練速度與擬合速度,使用warm up方法調(diào)整學(xué)習(xí)率,增加模型性能。將第一次訓(xùn)練好的模型按照設(shè)定好的映射字典,將模型層分開計算每層權(quán)重值,將權(quán)重中最小的輸出通道按一定比例剪掉,再送入模型進行微調(diào),模型的訓(xùn)練流程圖如圖1所示。
圖1 模型的訓(xùn)練流程圖Fig.1 Training flow chart of the model
本模型先從主干網(wǎng)絡(luò)backbone出發(fā),因柑橘檢測所需訓(xùn)練的類別僅為一類,并不像COCO、VOC數(shù)據(jù)集那樣種類豐富多樣,不需要太過復(fù)雜且深層的網(wǎng)絡(luò)結(jié)構(gòu)就可以達到較好的效果,因此選用Darknet 19作為主要網(wǎng)絡(luò)結(jié)構(gòu)。本研究使用的Darknet 19有11個卷積層,自帶歸一化層(Batch normalization),使用LeakyReLU激活函數(shù),相比于ReLU,給所有的負值賦予了一個非零斜率,沒有多余的復(fù)雜運算;結(jié)構(gòu)簡單輕巧,需要較少的依賴庫,移植效果較好,可較為方便對其改進與擴展。本研究中LeakyReLU激活函數(shù)的公式如式(1)所示。為提高模型性能,防止檢測中出現(xiàn)的重復(fù)框會導(dǎo)致訓(xùn)練難以收斂的問題,使用特征金字塔將模型不同層的特征圖融合,得到更豐富完整的圖像特征,增加模型訓(xùn)練時的豐富程度。
f(x)=max(0.01x,x)
(1)
為了使參數(shù)、計算量更少,本模型使用FCOS目標檢測網(wǎng)絡(luò)中無錨框(anchor-free)思想。Anchor的使用會引入各種需要優(yōu)化的超參數(shù),大量的錨框增加會增加在計算交并比時的計算機內(nèi)存和顯存占用。使用Anchor-free可以對區(qū)域進行回歸,對內(nèi)存的占用、使用的算力消耗都有所降低,顯著地減少了模型所需要設(shè)置的超參數(shù),增加模型擴展性。通過消除錨框,本研究提出的模型避免了對復(fù)雜交并比(IOU)的運算以及訓(xùn)練時匹配真實框與錨框的計算,減少模型內(nèi)存占用。在模型效果較好的YOLO中,不僅需要設(shè)置錨框的數(shù)量、尺寸和比例,還要解決錨框帶來的正負樣本不均衡問題。在本模型中,通過將分類層初始化,使用Fcoal Loss作為損失函數(shù),使用參數(shù)來調(diào)節(jié)訓(xùn)練時數(shù)據(jù)的正負樣本數(shù),降低易識別的負樣本在訓(xùn)練中所占用的權(quán)重比,對數(shù)據(jù)集中的難訓(xùn)練樣本進行挖掘,來解決柑橘圖像中正負樣本比例不一致的問題,保證模型訓(xùn)練朝優(yōu)良方向進行,加快模型收斂速度。Fcoal Loss損失函數(shù)如式(2-4)所示。
(2)
(3)
(4)
式(2)為二分類的交叉熵損失,交叉熵可以判別模型性能。其中,y′是模型經(jīng)過激活函數(shù)的輸出,當(dāng)激活函數(shù)為Sigmoid函數(shù)時,范圍為0到1 之間,對于本文所用的正常柑橘訓(xùn)練樣本來說,輸出的概率越大則損失越小,而對于可區(qū)分的柑橘負樣本來說,輸出概率越小則損失越小。式(3)在式(2)的基礎(chǔ)上增加了參數(shù)γ,當(dāng)γ大于0時可以減少易分類樣本給模型的損失,使網(wǎng)絡(luò)更加專注訓(xùn)練難以區(qū)分的樣本,降低模型的優(yōu)化難度,解決了模型處理數(shù)據(jù)集中不均衡樣本的問題。式(4)添加了超參數(shù)α來平衡正負樣本的重要性,使樣本數(shù)據(jù)更加均衡,一般γ取2,α取0.25。
本研究設(shè)計的模型結(jié)構(gòu)如圖2所示。
圖2 模型設(shè)計結(jié)構(gòu)Fig.2 The model design structure
其中,CBLM表示Conv2d+Batchnorm2d+LeakyReLU+MaxPooling;CBL表示Conv2d+Batchnorm2d+LeakyReLU;P3、P4、P5表示FPN多尺度提取特征,將特征融合,增加模型輸入豐富度。
在現(xiàn)有的大多數(shù)深度學(xué)習(xí)技術(shù)中,往往依賴很多難以移植到移動端或嵌入式端的過參數(shù)化模型。因此,在不影響精度的情況下,為了優(yōu)化模型,減少模型參數(shù)與計算量、降低模型占用和使用訪存就至關(guān)重要。本模型將主干網(wǎng)絡(luò)Darknet 19每一層的權(quán)重以通道為基準,使用L2 正則化分析每個權(quán)重的值,將其中最小的30%的通道刪除優(yōu)化,生成低存儲低占用的精簡模型,再進行模型微調(diào)。L2 正則化的公式如式(5)所示,L表示在原來的損失基礎(chǔ)上加上權(quán)重的平方和,其中E表示未包含正則化的訓(xùn)練樣本誤差,w為模型中的權(quán)重值,可以將其限制為0,γ可以控制正則化的趨之大小,當(dāng)參數(shù)增大時,將會較大程度的約束模型復(fù)雜度。
(5)
模型剪枝流程圖如圖3所示。
圖3 模型剪枝流程圖Fig.3 The model pruning flowchart
剪枝后的將模型有所改變的通道數(shù)整理,如表1所示(只顯示權(quán)重部分,偏執(zhí)項所剪枝的通道與權(quán)重一致)。
表1 剪枝前后的通道數(shù)對比Table 1 Comparison of channel numbers before and after pruning
因自制的柑橘集中數(shù)據(jù)較為單一,本研究在模型訓(xùn)練和數(shù)據(jù)增強部分做出優(yōu)化。模型在剛開始訓(xùn)練時,每個數(shù)據(jù)點對于神經(jīng)網(wǎng)絡(luò)模型來說較為新穎,模型會較快的進行數(shù)據(jù)矯正,學(xué)習(xí)到一些本不屬于柑橘的固有特征,使得模型過擬合。為了使模型更加穩(wěn)定的訓(xùn)練,保證模型深層訓(xùn)練時不會過于震蕩,增加模型穩(wěn)定性,本模型訓(xùn)練時使用SGD優(yōu)化,添加warm up策略,在模型訓(xùn)練初始時使用較小的學(xué)習(xí)率,先細微的學(xué)習(xí)模型特征,當(dāng)損失趨于穩(wěn)定時,使用較大的學(xué)習(xí)率正常訓(xùn)練模型,可以較為良好地減緩模型訓(xùn)練初期時潛在發(fā)生的過擬合現(xiàn)象。
本研究對柑橘數(shù)據(jù)集進行數(shù)據(jù)翻轉(zhuǎn)、亮度調(diào)節(jié)、添加高斯噪聲3種數(shù)據(jù)增強操作,加入模型訓(xùn)練的先驗知識,提高模型訓(xùn)練效果,增加模型魯棒性。柑橘圖像增強如圖4所示。
圖4 柑橘數(shù)據(jù)集的圖像增強 Fig.4 Image enhancement of citrus dataset
本研究以FCOS為基礎(chǔ)模型,使用Darknet19為主干網(wǎng)絡(luò),通過剪枝優(yōu)化并微調(diào)模型,減少模型占用內(nèi)存和使用計算量。使用改進后的模型與當(dāng)前檢測效果較好的YOLOv4、YOLOv4-tiny、Faster-RCNN進行對比試驗,以在CPU上的檢測時間(s)、AP值(Average Precision)和模型權(quán)重大小為對比標準。其中,P、R、AP值的計算公式如式(6-8)所示。
(6)
(7)
(8)
式中:P為準確率,R為召回率,TP為正確的正樣本數(shù)量,F(xiàn)P為錯誤的正樣本數(shù)量,F(xiàn)N為錯誤的負樣本數(shù)量。柑橘檢測結(jié)果如表2所示。
表2 不同模型的柑橘檢測結(jié)果比較Table 2 Comparison of citrus detection results of different models
從表2可以看出,本研究提出的算法檢測單張柑橘圖像的速度為0.02 s,相比于YOLOv4目標檢測模型檢測速度快了10倍之多,模型大小減少了96 MB,精度也略有提高;相比于YOLOv4-tiny算法檢測時間減少了0.01 s,模型權(quán)重減少了39 MB;與兩階段目標檢測算法Faster-RCNN模型對比,在檢測速度和精確度都提升的情況下,模型權(quán)重大小少了143 MB。由實驗結(jié)果對比可得,若在內(nèi)存不足、算力有限的移動端或嵌入式設(shè)備中移植,本文提供的算法有較為明顯的優(yōu)勢。模型對柑橘的檢測效果如圖5所示。
圖5 柑橘檢測效果Fig.5 Citrus detection effect
將第一次訓(xùn)練完成后進行模型剪枝,每一層的權(quán)重以通道(channel)為基準對特征的L2正則化進行分析,將小于30%的通道刪除后進行模型微調(diào),減少模型的計算量和參數(shù)。為了不過于影響精度,本研究進行了2次模型剪枝和微調(diào)工作。剪枝前后模型參數(shù)量(MB)、計算量(Flops)和精確度對比如表3所示。
表3 剪枝前后模型參數(shù)量、計算量、精確度對比Table 3 Comparison of model parameters,calculation and accuracy before and after pruning
由表3數(shù)據(jù)可知,相對于原始的Darknet19網(wǎng)絡(luò)結(jié)構(gòu),第一次模型剪枝后,模型參數(shù)減少了30.33%,模型計算量減少了50.72%;經(jīng)第二次模型剪枝后參數(shù)量減少了45.48%,模型計算量減少了68.11%,在不影響檢測精確度的情況下,模型的參數(shù)量和所需計算量都有大幅度減少。
為了證明本文提出模型的可行性,將剪枝后網(wǎng)絡(luò)結(jié)構(gòu)與當(dāng)前目標檢測主流的神經(jīng)網(wǎng)絡(luò)進行對比試驗。試驗結(jié)果如表4所示。由表4可以看出,研究使用的Slim-Darknet19相比于Resnet18、Resnet34、Resnet50參數(shù)量和模型所需計算量都有所減少。相比于Inception_v3和densenet121網(wǎng)絡(luò)模型,模型計算量分別少了78.35%和69.33%。相比于Alexnet,在模型計算量相當(dāng)?shù)那闆r下,模型參數(shù)量少了51.24%。證明本文提出的模型具有可行性。
表4 剪枝后模型與主流模型對比Table 4 Comparison between the pruned model and the mainstream model
(1)設(shè)計了一種基于FOCS思想的柑橘目標檢測網(wǎng)絡(luò)。使用Darknet 19作為主干網(wǎng)絡(luò),經(jīng)過模型剪枝刪掉每一層的權(quán)重中最小的30%通道,去除冗余連接,網(wǎng)絡(luò)得到較好的壓縮效果,再經(jīng)過微調(diào)后得到最終模型。此方法降低了模型的參數(shù)量和所需計算量,經(jīng)過測試表明,模型對柑橘圖像的檢測同時滿足精確性和實時性。
(2)通過對模型進行測試,對單張416×416的柑橘圖像在CPU上的檢測時間為22 ms,模型的總參數(shù)量為29.79 MB,總計算量為0.88 GFlops,對剪枝前的模型分別減少了24.86 MB、1.88 GFlops,對自制的柑橘測試集測試精確度為96.01%。并經(jīng)過試驗對比證明,本模型對柑橘圖像的實時檢測具有較好的效果。
(3)為了驗證本研究所提出模型的有效性和實用性,將改進后的模型與當(dāng)前主流的深度學(xué)習(xí)網(wǎng)絡(luò)對比。經(jīng)試驗證明,模型在保證精度的情況下,對于有需要將模型部署到內(nèi)存算力有限的移動端或嵌入式端,該模型可提供技術(shù)支持。