任宇晴 杜慶東
(沈陽師范大學(xué),遼寧 沈陽 110000)
近年來,水果采摘技術(shù)發(fā)展迅速,計算機(jī)視覺領(lǐng)域也迅速興起,越來越多的學(xué)者將計算機(jī)視覺和圖像識別與農(nóng)業(yè)發(fā)展結(jié)合起來,對水果的成熟度識別投入頗多,即對收集到的水果圖像運用圖像識別[1]算法獲取水果的成熟度信息。圖像識別作為深度學(xué)習(xí)中的重要部分,無論從何種算法出發(fā),基于RCNN 系列算法還是基于回歸的YOLO系列[2]算法,與傳統(tǒng)的機(jī)器學(xué)習(xí)算法 BP 等相比,得到的結(jié)果都是相對優(yōu)化的,在深度學(xué)習(xí)的相關(guān)領(lǐng)域,算法所體現(xiàn)的優(yōu)勢開始逐漸取代傳統(tǒng)方法。
受自然環(huán)境復(fù)雜背景的影響,水果成熟度的特征提取、目標(biāo)檢測[3]、圖像識別等研究工作面臨很大挑戰(zhàn)。該文以蘋果圖像為研究對象,深入剖析基于TensorFlow框架[4]下的YOLO 算法及其發(fā)展前景,通過分析當(dāng)前算法存在的問題進(jìn)行優(yōu)化改進(jìn),提出一種結(jié)合YOLO算法的優(yōu)化算法,通過與傳統(tǒng)機(jī)器學(xué)習(xí)算法、已有的YOLO算法作比較得出優(yōu)化后的算法結(jié)果。
YOLO通過卷積層提取圖像特征,通過全連接層進(jìn)行目標(biāo)蘋果成熟度的預(yù)測,最后處理結(jié)果得到相應(yīng)檢測目標(biāo)。YOLO利用卷積神經(jīng)網(wǎng)絡(luò)(CNN)將特征提取網(wǎng)絡(luò)、類別預(yù)測等統(tǒng)一到一起,放在一個框架中從而實現(xiàn)端到端的高效訓(xùn)練,它也能同時預(yù)測圖像的所有類的所有邊界框。這意味滿足速度要求的同時,精確度也能達(dá)到要求。與基于區(qū)域建議框的算法相比,其運行速度大大提高,而且改進(jìn)的快速版本的Fast YOLO算法,處理速度能達(dá)到基礎(chǔ)的三倍以上,雖然也會產(chǎn)生更多的定位誤差,但是背景預(yù)測遠(yuǎn)優(yōu)于當(dāng)前傳統(tǒng)的很多方法。
具體而言,YOLO的卷積神經(jīng)網(wǎng)絡(luò)(CNN)將輸入的圖片分割成S×S網(wǎng)格(grid) ,如果某一個待檢測的蘋果的中心落入了網(wǎng)格單元(grid cell)中,則這個網(wǎng)格單元就負(fù)責(zé)檢測該目標(biāo)水果,網(wǎng)絡(luò)只需要預(yù)測S×S個網(wǎng)格,每個網(wǎng)格單元預(yù)測B個邊界框,速度可以有很大的提升。最終網(wǎng)絡(luò)的輸出是一個S×S×(B×5+C)的向量,可以理解為每個單元格需要做兩件事:一是每個區(qū)域的單元格負(fù)對自己相應(yīng)的目標(biāo)object負(fù)責(zé)預(yù)測;二是每個單元格需要預(yù)測對應(yīng)的x,y,w,h值,同時為每個邊界框(bounding boxes,簡寫為bbox)預(yù)測一個得分(confidence scores)。該得分即為置信度。簡單理解就是預(yù)測是否含有物體以及是這個物體的可能性是多少,具體表示如式(1)。
式中:Pr(object)為邊界框含有目標(biāo)的可能性大小;IOUtruthpred為邊界框的精準(zhǔn)度。
置信度一般表現(xiàn)在兩方面,一是邊界框含有目標(biāo)的可能性大?。≒r(object)),二是邊界框的精準(zhǔn)度(IOUtruthpred)。如果這個網(wǎng)格中不存在一個目標(biāo)物體,則可能性大小Pr(object)=0;否則的話,可能性大小Pr(object)=1,在檢測任務(wù)中,以交并比(Intersection of Union)即兩個矩形框面積的交集和并集的比值,用IOU簡單表示。而邊界框的準(zhǔn)確度即可以用預(yù)測框(Prediction box)與實際框(ground truth box)的交并比來表示,即IOUtruthpred。因此置信度(confidence)可以定義為可能性大小與精準(zhǔn)度的乘積(Pr(object×IOUtruthpred)。在測試時,邊界框的具體類別的置信度如公式(2)所示。
式中:Pr(Classi|Object)為條件類別概率,即每個網(wǎng)格在輸出邊界框(bbox)值的同時要給出網(wǎng)格存在目標(biāo)object的類型,測試時,用條件類別概率乘以單個盒子的置信度預(yù)測。
不管網(wǎng)格單元中包括的邊界框有多少,每個單元網(wǎng)格只預(yù)測每個類別的概率值,即默認(rèn)每個網(wǎng)格中的所有邊界框都是同一類。在測試的非極大值抑制階段,每個邊界框按照下式被衡量是否應(yīng)該保留下來。邊界框bbox的預(yù)測值有(x,y,w,h,c),中心坐標(biāo)(x,y) 代表了邊界框的中心與網(wǎng)格單元邊界的相對值,邊界框的高用h表示,寬用w來表示,理論上(x,y,w,h)這四個元素的值都在[0,1]。c即為置信度,就是IOU值。
該文采用的網(wǎng)絡(luò)模型結(jié)合了YOLO的基礎(chǔ)特征提取網(wǎng)絡(luò)Darknet-19和深度殘差網(wǎng)絡(luò)ResNet?;A(chǔ)特征提取網(wǎng)絡(luò)Darknet-19[5]保留了 VGG16等網(wǎng)絡(luò)的優(yōu)勢,其網(wǎng)絡(luò)結(jié)構(gòu)易計算,同時兼具著高性能。網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示。其中,Con(Convolutional layer)為卷積神經(jīng)網(wǎng)絡(luò)的卷積層[6],共有19個,Max(Max pooling layer)為卷積神經(jīng)網(wǎng)絡(luò)的最大池化層,共有5個,Darknet-19網(wǎng)絡(luò)模型用全局平均池化(global average pooling)做預(yù)測,把1×1的卷積核置于3×3的卷積核之間,使用歸一化指數(shù)函數(shù)(Softmax)處理不同類別間分類差異,優(yōu)化網(wǎng)絡(luò)結(jié)構(gòu)。
圖1 Darknet-19網(wǎng)絡(luò)結(jié)構(gòu)圖
ResNet殘差網(wǎng)絡(luò)是基于殘差連接的網(wǎng)絡(luò)結(jié)構(gòu)。網(wǎng)絡(luò)的基本結(jié)構(gòu)為殘差塊,殘差塊則是由幾層網(wǎng)絡(luò)和一個殘差連接而成,殘差網(wǎng)絡(luò)(ResNet)層數(shù)可達(dá)上百層,能夠減少模型網(wǎng)絡(luò)的訓(xùn)練時間,在模型可控的時間內(nèi),增加網(wǎng)絡(luò)深度會加大對網(wǎng)絡(luò)的反向傳播,反向傳播的梯度都是在上一層的基礎(chǔ)上進(jìn)行計算的,理論上當(dāng)一個網(wǎng)絡(luò)模型復(fù)雜到一定程度的情況下,可以實現(xiàn)其期望精度,但在實際情況中,隨著網(wǎng)絡(luò)結(jié)構(gòu)的逐漸加深,梯度容易出現(xiàn)彌散和爆炸,梯度的問題也會隨之出現(xiàn),比較靠前的層梯度會很小。這表示著學(xué)習(xí)已經(jīng)基本停止,也就是梯度消失。因此在實踐中,添加過多的層訓(xùn)練,其訓(xùn)練誤差反而會增加。就此問題, 擬提出了新的解決方案。假設(shè)輸入為x,理想映射為f(x),如圖2所示。改進(jìn)后的映射如圖2所示,擬合出殘差映射f(x) +x,殘差映射在實際應(yīng)用中更容易被優(yōu)化。引入優(yōu)化改進(jìn)后的殘差網(wǎng)絡(luò)ResNet思想,不僅可以提取到更深層的特征,同時避免出現(xiàn)梯度消失或爆炸。同時,由于水果果實的圖像數(shù)據(jù)多為較大的目標(biāo),因此選擇大中尺度作為回歸預(yù)測的尺度,以此降低計算的復(fù)雜性。
圖2 改進(jìn)的殘差網(wǎng)絡(luò)
如今出現(xiàn)在公眾視野并被廣泛應(yīng)用的框架有很多,Caffe、Tensorflow、Keras、MXNet和PaddlePaddle 等。該實驗以iOS系統(tǒng)為基礎(chǔ),利用Pycharm編輯器,運用Python編程語言,同時使用深度學(xué)習(xí)框架Tensorflow作為該算法的實驗平臺,采用基礎(chǔ)YOLO算法網(wǎng)絡(luò)結(jié)構(gòu)優(yōu)化后的算法,對蘋果成熟度識別進(jìn)行實驗并對實驗結(jié)果對比加以驗證。
Tensorflow框架:Tensorflow相比于其他框架,安裝與配置較為簡單且功能強(qiáng)大,操作方便??梢詫崿F(xiàn)對神經(jīng)網(wǎng)絡(luò)大規(guī)模訓(xùn)練,同時進(jìn)行簡單的并行計算。Tensorflow 具有可視化工具 Tensorboard,優(yōu)化后的模型訓(xùn)練參數(shù)后可以快速上傳至工具,通過對比實驗,可以得到訓(xùn)練數(shù)據(jù)集和測試數(shù)據(jù)集的準(zhǔn)確率。由于水果果實的成熟度圖像樣式區(qū)別略小,因此選擇高靈活性的框架尤為重要,框架的簡單理解如圖3所示。
圖3 TensorFlow框架理解圖
3.2.1 數(shù)據(jù)預(yù)處理
數(shù)據(jù)的采集分別從ImageNet圖像數(shù)據(jù)庫提取、室外自然光下蘋果采摘園內(nèi)數(shù)碼相機(jī)拍攝、網(wǎng)上收集高清晰度圖片獲得。圖像數(shù)據(jù)集包括不同成熟度的蘋果果實,256×256大小。進(jìn)行數(shù)據(jù)增強(qiáng)以提高模型泛化能力,對原始圖片進(jìn)行旋轉(zhuǎn)、翻轉(zhuǎn)、添加噪聲的操作,使用MATLAB對原始的數(shù)據(jù)進(jìn)行鏡像處理。部分?jǐn)?shù)據(jù)集展示如圖4所示。
圖4 部分?jǐn)?shù)據(jù)集
3.2.2 YOLO網(wǎng)絡(luò)結(jié)構(gòu)補(bǔ)充
由于水果果實目標(biāo)比較小,數(shù)據(jù)樣本批量不夠多且對蘋果成熟度的識別上相似度較高,因此需要提取和學(xué)習(xí)更多的特征信息來實現(xiàn)對成熟度的檢測,該文實驗受限于使用的硬件條件以及用于檢測蘋果成熟度的小目標(biāo)任務(wù)的需求,很難使用較大的批量大小(batchsize)值。因此該文在原Darknet-19網(wǎng)絡(luò)的基礎(chǔ)上進(jìn)行改進(jìn)優(yōu)化,使用群組歸一化(GN)代替YOLO算法往常卷積層上使用的批量歸一化(BN),批量歸一化在小批量的使用上會降低數(shù)據(jù)的準(zhǔn)確性,對批量的大小有一定的要求。
3.2.3 模型訓(xùn)練
常見的神經(jīng)網(wǎng)絡(luò)模型可以表示為式(3)。
式中:x為對神經(jīng)元的多個輸入;wi,xi為每個輸入對應(yīng)的權(quán)重;為預(yù)測輸出值。
神經(jīng)網(wǎng)絡(luò)訓(xùn)練的目的是找到最優(yōu)的權(quán)重{w1,w2,...,wn}。該文采用的損失函數(shù)為常用于回歸問題的平方損失公式,如式(4)。
神經(jīng)網(wǎng)絡(luò)訓(xùn)練的目的是找到最優(yōu)的權(quán)重{w1,{x1,x2,...,xn}的真實標(biāo)簽{y1,y2,...,yn}擁有最小的差距,衡量差距的函數(shù)即損失函數(shù)?,F(xiàn)實中加入函數(shù)是為了預(yù)防模型產(chǎn)生過擬合。
訓(xùn)練模型的過程如下:1) 構(gòu)建網(wǎng)絡(luò)。設(shè)置輸入層輸出層之間的隱藏層層數(shù),設(shè)置各層卷積核個數(shù)、尺寸、步長,初始化網(wǎng)絡(luò)權(quán)重W,設(shè)置學(xué)習(xí)率為η,學(xué)習(xí)率是一個在每次按梯度值更新參數(shù)都不變的超參數(shù),選擇合適的激活函數(shù),構(gòu)建符合問題的目標(biāo)函數(shù),具體流程如下。網(wǎng)絡(luò)訓(xùn)練流程圖如圖5所示。2) 開始訓(xùn)
圖5 網(wǎng)絡(luò)訓(xùn)練流程圖
3.2.4 實驗結(jié)果分析
該實驗將所述模型與 BP 和 YOLO 算法的識別結(jié)果進(jìn)行了比較,實驗結(jié)果如表1所示。
表1 該文模型與 YOLO 和 BP 算法識別精度比較
YOLO算法與傳統(tǒng)機(jī)器學(xué)習(xí)算法BP相比,識別精度有明顯的提高,驗證了深度學(xué)習(xí)領(lǐng)域中基于回歸的目標(biāo)檢測算法的有效性,改進(jìn)網(wǎng)絡(luò)結(jié)構(gòu)后的優(yōu)化算法精度為91.02%,比YOLO算法提高了1.87%,與此同時,在準(zhǔn)確性上也有了提高,進(jìn)一步說明了改進(jìn)網(wǎng)絡(luò)結(jié)構(gòu)的算法實用性。
針對水果識別這一個特定的場景,由于果實的成熟度各不相同,且自然環(huán)境背景較復(fù)雜,因此,現(xiàn)有的果實識別模型仍存在很多不足,水果成熟度的檢測在農(nóng)業(yè)方面還有待發(fā)展,水果成熟度鑒別檢測對時間的把控要求很高,對實時監(jiān)測的需求更大,需要做到及時并且準(zhǔn)確,該文采用的YOLO算法的優(yōu)點為速度快且精度高,隨著深度學(xué)習(xí)的不斷深入研究,利用好深度卷積神經(jīng)的優(yōu)勢,在水果成熟度目標(biāo)檢測的后期研究工作中至關(guān)重要。