王昱潭,朱超偉,趙 琛,李樂凱,李 萍,馮朝旭,薛君蕊,李嘉婧,張加欣
寧夏大學 機械工程學院,銀川 750000
靈武長棗作為寧夏靈武市重要的經濟林果之一,其最佳采摘期僅為20天左右。當下采摘方式仍是人工架梯采摘,危險性高,效率低。隨著種植面積和產量的逐年增加,以及人口老齡化的加劇,研發相應的智能采摘裝備是必然的。機器視覺部分作為智能采摘裝備的圖像信息采集處理環節,決定著該設備的可行性和工作效率。
研究人員在靈武長棗的圖像分割領域做了大量的工作。王昱潭[1]根據靈武長棗的顏色特性,提出了基于顏色空間各分量特性和基于色差融合的兩種在自然場景下的靈武長棗圖像分割算法。這兩種算法能很好地解決少量、輕度的粘連、遮擋和光線不均等問題,降低特定環境對圖像分割的影響,并可以分別提取棗子的紅色區域和綠色區域,分割成功率達到93.27%。后續對于靈武長棗彩色圖像又提出了基于最大熵的圖像分割方法[2],對于靈武長棗的彩色圖像分割有很好的效果,分割的準確性為89.60%。趙琛等[3]針對靈武長棗幾何特征的形態學研究提出了一種基于幾何特征的靈武長棗圖像分割算法,對于果實粘連較輕的圖像,其分割準確率可達到92.31%。對于其他圖像目標的檢測識別方法很多選擇卷積神經網絡(Convolutional Neural Network,CNN)。如傅隆生等[4]以田間多簇獼猴桃為研究對象,利用LeNet 卷積神經網絡對田間多簇獼猴桃圖像進行識別,對于不同的田間情況其識別率不同,其中針對獨立果實的識別率最高為94.78%。鄭一力等[5]以提高植物葉片的識別率為出發點,在大量數據集的基礎上利用AlexNet 和InceptionV3 卷積神經網絡模型對植物葉片圖像進行遷移訓練,這兩種模型的準確率分別為95.31%、95.40%,相對SVM(Support Vector Machine)、CNN 和DBN(Deep Belief Network)的準確率高,但時間稍長。Zhang 等[6]在處理圖像檢測時應用快速區域卷積神經網絡(Fast R-CNN)方法,優化錨點和錨的大小使之對COCO2014數據集的訓練檢測更加精準。
在特定環境情況下利用傳統分割算法是非常有效的[7],但是環境的變化對于算法有著較大影響。智能采摘裝備在田間野外工作,周圍環境的變化是未知的,太陽光照、樹葉遮擋等都會直接影響圖像分割效率和目標檢測的準確度。
以更快速的區域卷積神經網絡(Faster R-CNN)[8]為代表的當代神經網絡算法已經能夠適應各種環境,達到準確檢測識別目標的效果。設計了一種具有自我學習能力、魯棒性穩定、環境適應能力強和學習精準度高的雙損失函數Faster R-CNN模型。標準的Faster R-CNN網絡模型針對公共數據集的檢測效果明顯,但對于田間靈武長棗時時變化的環境,光照強度、枝葉遮擋、果果重疊黏連、不同角度、順逆光、不同采集設備等條件下的分類損失會增大,同時目標候選框的回歸損失增加。成熟網絡結構特征的提取隨著卷積層數的加深趨于收斂,一般情況下特征提取對網絡檢測效果有限。以首個區域生成網絡(Region Proposal Network,RPN)層損失函數輸出作為新的特征,分別連接其他損失函數進行集成運算。得到長棗圖像檢測網絡,調試各網絡參數達到速度和準確度最優化,與標準網絡模型ResNet101、ResNet50[9-11]網絡以及單一損失函數網絡進行對比實驗,驗證本文設計的網絡結構的優越性。再運用測試集檢驗Faster R-CNN網絡模型的準確率。最后建立評價指標對測試集結果進行評估。
圖像數據于2016—2018 年9 月中旬到10 月初在寧夏靈武市長棗實驗基地,自然狀況下對靈武長棗進行拍攝取樣。長棗圖像拍攝設備為型號FUJIFILM FinePix S1800的數碼相機,獲得分辨率為3 016×4 032和4 608×3 456 兩種圖像。圖像取樣的原則是按照不同時刻、不同光照、遮擋、黏連、重疊、陰影等多樣化情況,保證數據集的多樣性。部分情況原始圖像如圖1所示。

圖1 部分情況原始圖像
從實地采集的靈武長棗圖像中共選取合格圖像1 097 張,建立自然環境下靈武長棗圖像數據集。對獲取的合格原始數據,在不影響目標識別準確度的前提下,為加快訓練對原始數據進行系列的預處理。針對圖像像素進行大小處理,統一修改為256×256 的規格,為之后的數據訓練節省時間,同時將圖像的序號隨機選擇并重新編輯,保證其連續性、規范性和隨機性。在采集圖像環境多樣性的條件下為使目標在圖像中的姿態多樣化,將全部圖像按中心點逆時針旋轉,在0°~180°每間隔10°進行一次旋轉,共計18 次,并將原始圖像進行一次鏡像,最終獲得原始圖像20倍的數據共計21 940張。這樣訓練集在尋找目標的特征時增加了角度因素,減小了模型的過擬合現象。
以上是針對圖像進行的系列處理,完備的數據集既包含訓練集也有測試集,接下來在現有的數據集21 940張中選取前20 000張作為訓練集,后1 940張作為測試集。
在深度學習神經網絡算法領域,基于區域選擇目標檢測與識別算法中Faster R-CNN是應用最成熟的一種框架。它相對區域卷積神經網絡(R-CNN)[12]和快速區域卷積神經網絡(Fast R-CNN)[13],克服了提取卷積特征時產生的冗余操作,同時提出了區域生成網絡[14](RPN),并融入GPU 運算,在不降低精度的同時大大提高了算法的檢測和識別速度。但在使用單一損失函數情況下存在分類的誤識別和識別遺漏,回歸層長棗目標的框定出現冗余過大或過小,尤其是果果黏連、葉果遮擋的情況。使用雙損失函數是為了進一步細化分類和減小回歸損失,有效提高檢測精度。
1.3.1 RPN
RPN模型在數據訓練過程中,其輸入端接收到前一層任意大小的特征圖,以一個3×3的滑窗按特定步長搜索整個特征圖,在這些滑窗的中心點對應著特征圖上的錨點(Anchors),錨點生成與之匹配的9個預測目標候選框。這里將預測候選框和之前已經標定好的訓練集數據中的矩形框進行定位精度評價(IOU),預測候選框經過非極大值抑制(Non-Maximum Suppression,NMS),評價值只有大于0.7的正樣本才加入訓練;接下來每一張特征圖中所有滑窗選擇的矩形窗口被映射為一個256維的向量,該向量傳送到邊框分類網絡和邊框回歸網絡,輸出端會得到一系列矩形目標候選區,這就是RPN 的訓練機制。RPN 訓練過程中使用反向傳播和隨機梯度下降進行優化,其損失函數是分類誤差和回歸誤差的聯合損失:


SmoothL1平滑函數對離群點和異常點不敏感有利于控制梯度的量級。

其中,L為RPN聯合損失,i為第幾個錨點,Lcls為分類損失函數,Lreg為回歸損失函數,Ncls為分類樣本數,Nreg為回歸樣本數,ti為預測邊界框坐標向量,為真實邊界框坐標向量,pi為目標的預測概率,為錨點判別值。
經過RPN層的分類,可以獲取候選區域,候選區域映射到原始圖像中存在圖2所示問題。

圖2 第一層損失函數效果圖
單層RPN 的訓練,單一IOU 進行正負樣本值域劃分會導致誤識別、重疊、邊框回歸不精準等問題,雖然加入了非極大值抑制,但從結果來看仍然存在上述問題。
在經歷本層的分類損失函數softmax[15]后,得到以錨點為中心的區域各點概率值,選取≥0.9 的點,將其對應特征圖中的區域作為感興趣區域,此后不進行池化處理,將得到含有感興趣區域的特征圖作為新的特征圖再次進行一次損失訓練,但這一層的損失函數并不是重復性地添加。單一地添加softmax函數其分類機制完全相同,重復計算不能達到精度提升的效果。下面通過兩種機制不同的損失函數進行分類處理,得到每個種類的概率值,選取最大的為感興趣候選項。
這兩種分類損失函數是利用softmax函數發展形成的更為精準的損失函數。softmax概率的矢量公式:

其中,O為輸出層得到的數值矩陣,x為輸入特征圖中像素點,W為權值矩陣,b為偏置矩陣。為使輸出的概率值在( 0,1) 之間,將輸入的特征做以下變換:

其中,總的多分類類別為k,j∈[1,k]表示第j類,L為softmax 的交叉熵損失函數值,Li為中間函數,N為參與訓練的樣本數量,是第y類里第i個輸入的權值,θyi,i代表了和xi之間的夾角。
在此基礎上,對公式進行限定,固定‖ ‖W和b的值,使得角度因素權重增大,從而得到修正的損失函數(modified softmax loss):

為使該式具有單調性,引進:

其中,φ(θyi,i)=( -1)kcosθyi,i-2k,m=4 。綜上得到A-softmax loss公式。
相對于A-softmax loss而言,L-softmax loss在公式中的區別是‖W‖并沒有進行歸一化處理,而是保留了權重模量上的影響。其公式如下:

公式中取所有權值‖W‖=1,偏置b=0。這樣的數值最簡單。
在多類別中間隔較小的類別不易分割,從上式中的影響因素分析,參數θyi,i的變化能使間隔產生較大的變化,這種變化的方式需要在θyi,i前加個數值m,在獲取感興趣區域時使得約束更強,數值更準確。得到公式:

不僅在角度方面對分類規則進行加強限制,同時在種類的距離上也具有限制作用。真正在訓練時,精度是A-softmax loss的單約束高,還是L-softmax loss的雙約束更能滿足要求并不確定,包括softmax loss 都各有優勢。所以這里選擇A-softmax loss 和L-softmax loss 作為第二次損失計算的兩種函數。
整個Faster R-CNN網絡的訓練結果是要生成一個檢測器(detector)[16],用于驗證智能采摘裝置的視覺部分的實際應用。
本文設計的Faster R-CNN 框架結構示意圖如圖3所示。

圖3 Faster R-CNN框架結構示意圖
(1)卷積層(Conv Layers):該層由基礎的卷積(Conv)層、線性整流函數(ReLU)層、池化(Pooling)層組成。輸入訓練集圖像經過RGB 三通道進行顏色維度的擴大,使提取特征時顏色這一因素的比重增加,分別對每一通道進行卷積。這一層的處理提取到了圖像的特征圖(feature maps),在后續的處理當中feature maps將會被RPN網絡與Fast R-CNN網絡共享。
(2)RPN:在獲取特征圖后,RPN層按照一定的滑動框搜索機制實現場景中目標候選區域(region proposals)的選取,通過全連接卷積層送達到softmax 分類器進行前景和背景的錨點概率值計算。關鍵點在于能夠將候選區域以新的特征圖傳遞到兩種損失函數,所傳遞的特征圖相對于SS搜索機制得到的特征圖極大地舍去了無關特征,提高了檢測精度。
(3)RPN第二次損失函數的運用:在單一softmax函數不能有效區分目標所在的候選區域以及目標的合適回歸位置時,在此添加一層損失函數是有必要的。之前使用的softmax再次重復使用會導致分類回歸的收斂性增加。增加兩種不同的損失函數減緩其收斂,同時選取兩者中最高精度的損失值,映射得到新的候選區域傳遞至下一步運算。
(4)感興趣區域池化層(ROI Pooling Layer),該層是屬于Fast R-CNN網絡的結構之一,在沒有RPN層時要得到感興趣區域很費時。一方面接收RPN層新的候選區域,另一方面接收共享的特征圖,綜合兩方面信息提取出感興趣區域特征圖(proposal feature maps),將得到的感興趣區域特征圖經過池化傳輸給全連接層進行目標類別判定,這將大大提高目標的檢測速度。
(5)分類(Classification):分類層利用已經獲得的感興趣區域特征圖,通過全連接層與softmax 分類器計算每個感興趣區域具體屬于那個類別,同時再次利用邊框回歸獲得每個感興趣區域框的位置偏移量,用于精確目標檢測框。
1.3.2 Fast R-CNN
Faster R-CNN 網絡是由Fast R-CNN 網絡發展而來,其中也包含了Fast R-CNN網絡,如圖4所示。
其優越之處是利用RPN層代替SS策略[17]提取目標候選區域。現將輸入的圖像經過5個Conv層、5個ReLU層、4個Max Pooling層和5個BN(Batch Normalization)[18]層得到特征圖,用BN層做歸一化處理保證在深度神經網絡中輸入分布的均勻性。特征圖和RPN層的結果感興趣區域框結合傳到ROI pooling層,進而直接用softmax分類器進行計算,得出兩個平行輸出層:分類層和邊界回歸層[19]。
每個感興趣區域在k+1 個類別上的概率分布為:

其中,p表示概率,pk表示第k類的概率。
邊框回歸的參數:

其中,tk表示第k類邊框回歸參數,表示第k類邊框的中心點坐標,第k類邊框的寬和高。
兩個輸出層的訓練依據是一個聯合損失函數:

u是目標所在類別的對數損失。
回歸損失Lloc的定義為:

L在這里使用增強了模型的范數魯棒性。其中L為聯合損失函數,Lcls為分類損失函數,Lloc為回歸損失函數,λ為權重值,SmoothLi為平滑損失函數。
(1)硬件部分

圖4 Fast R-CNN網絡
PC 參數如下:型號Acer Aspire E5-572G,處理器Intel Core i5-4210M(2.6 GHz),8.00 GB;GPU為NVIDIA GeForce 840M+Intel HD 4600;固體硬盤500 GB。
(2)軟件部分
系統版本Windows10家庭中文版。
設計Faster R-CNN網絡結構時對比單一損失函數網絡以及ResNet101、ResNet50網絡結構進行改進,在輸入層添加RGB三通道和中間層加入BN層,關鍵是選擇最適合靈武長棗的網絡層數訓練靈武長棗訓練集,其步驟為:
步驟1輸入層(Input Layer),對于檢測識別任務一般輸入整幅圖像數據量過于龐大,無用的特征就要舍去,突出代表性強的特征,因此需要輸入訓練集圖像中標定的目標最小尺寸作為輸入數據,尺寸選為16×16,它能夠很好地平衡一幅圖像處理的時間和網絡需要分析的空間細節量。輸入圖像的同時要經過RGB三通道將圖像劃為三個維度,然后分別對每個維度的圖像提取特征圖,增加真彩色圖像的顏色特征提取。
步驟2中間層(Middle Layers),定義卷積層參數包括128 個濾波器,每個濾波器為5×5。接下來設計兩個“Conv+maxPooling+BN+ReLU”層、三個“Conv+BN+ReLU”層。其中具體參數為:在卷積前填充的模式是輸入維度等于輸出維度的“SAME”,這樣防止了邊緣信息的缺失,在池化時使用5×5和3×3的最大池化和步長為3 和2 的搜索過程,在此過程后可以獲取與RPN 共享的特征圖。
步驟 3RPN 層,在步驟 2 運行后,RPN 層共享特征圖。此處設置結構時經過一次5×5的卷積,分送到兩個全連接層進行分類和邊框回歸處理,分類項應用softmax分類器,邊框回歸的參數是正樣本范圍在[0 .7,1.0],負樣本范圍在[0 ,0.3],訓練時取以上兩種范圍。本文選取大于0.9的樣本空間分別送入A-softmax loss和L-softmax loss函數,進行角度和角度距離兩種限定條件分類,得到的結果送到下一步。
步驟4最后層(Final Layers),這一層要融合中間層獲取的特征圖和RPN 層的候選區域,使候選區域映射在特征圖中建立ROI Pooling Layer 層,生成感興趣區域特征圖。接下來針對該特征圖進行3×3最大池化,可以將大小不一的感興趣區域特征圖統一大小,然后進行分類處理。先經過一全連接層(Fully Connected Layer)和softmax分類器對感興趣特征圖中的感興趣區域進行類別劃分,判斷出目標所在區域;另一方面針對錨點位置和邊框大小進行回歸處理,得到更精確目標的位置矩形邊框。
步驟5訓練超參數的設定,根據經驗,學習率(learning rate)選擇0.001,批量大小(batch size)為20,學習的回合數(epoch)為5,迭代次數(iterations)為1 000。按照上述設定好的網絡結構和參數進行實驗的配置設計,保存訓練的結果檢測器。
步驟6建立驗證框架,利用訓練的結果對測試集進行實驗。記錄了驗證集的精確率P和召回率R值以及AP值。
實驗流程如圖5所示。

圖5 實驗流程
從測試集輸出100張結果圖像,部分展示如圖6。
采用平均精度[20](Average Precision,AP)作為對于Faster R-CNN 網絡訓練數據的一個評價指標,其定義與精確率P(Precision)和召回率R(Recall)相關[21]。將網絡識別棗子這一目標的具體情況進行劃分,如表1所示。

表1 情況和類別

圖6 實驗結果
精確率P的定義為:

表示搜索到的目標類別占所有檢索到的類別的比例。
召回率R的定義為:

表示搜索到的目標類別占總目標類別的比例。以靈武長棗圖像近端為識別對象,智能采摘裝備在作業時首先要對最近的目標進行識別摘取,而遠端的棗子需要執行端進行再識別,因此在計算召回率時要參考實際目標的圖像環境。
精確率和召回率在神經網絡處理大數據集的時候,以精確率為橫軸,召回率為縱軸,建立了一個函數曲線,發現隨著精確率增加而召回率非線性降低。要去判別一個網絡檢測識別目標的效果,平均精度是一項重要指標,其定義為:

從直觀方面AP表示P(R)函數曲線所圍成的面積,AP值越大說明該網絡性能越優,反之則越差,這種情況也適用于精確率和召回率。針對識別靈武長棗這一類別使用R、P、AP三種數值能夠準確評價網絡結構的優劣。
根據以上的評價準則對本文方法和運用單一損失函數網絡ResNet101、ResNet50網絡進行比較。
各種方法的召回率R和精確率P的數值如表2所示。各種方法的AP值如圖7所示。
在網絡超參數的作用下迭代過程中采用雙損失函數依次進行回歸運算,不同的網絡結構中的損失函數的收斂如何,依據網絡中的損失函數迭代的均方根誤差值(RMSE)和振蕩效果來衡量。

表2 各種方法的R 和P 值

其中,n代表批量數,表示該批量在本次迭代中的平均值,yi為目標真實值。不同網絡結構中的損失函數收斂曲線如圖8所示。
從每種方法對測試集的處理結果中選取相互對應的圖片各6張,這6張圖片的選取依據為:圖像中的靈武長棗的個數分別為一個、兩個和多個,其中包含不同時刻、葉果遮擋、果果黏連等情況。觀察圖6 中本文方法和其他方法的結果圖,對于單一數量靈武長棗而言,雙損失函數網絡和單一損失函數網絡、ResNet50網絡的處理結果對比分類無誤識別現象,其中ResNet101網絡相對邊框回歸的精度較差。同樣從兩個長棗的圖像比較,本文方法在邊框回歸的處理上更精確,三個及以上長棗的圖像相互比較,可以得出雙損失函數網絡在目標的識別分類和邊框回歸方面相對于ResNet101、ResNet50 網絡而言更加精準。

圖7 各種方法的AP值

圖8 收斂曲線圖
另一方面,從各種方法處理測試集得到的精確率、召回率和平均精度的數據值表明:表2所示精確率和召回率是根據所有驗證集圖像的結果求得的平均值,本文方法的精確度為0.921 3 和召回率為0.982 6,相對于其他網絡結構數值有明顯的提高。而召回率大于精確度的原因是目標長棗是圖像中前排的,相對較靠遠的并不屬于目標范圍,所以即使識別到也不能劃分為目標。圖7平均精度表示非線性的召回率和精確率組成的圖形面積,雙損失函數網絡為0.8,大于單一損失函數網絡和ResNet101、ResNet50 網絡的 0.7。圖 8 中顯示的雙損失函數隨迭代次數呈遞減狀態并接近0值收斂,與單損失函數隨迭代次數的收斂曲線相比較,在前240次迭代為第一次損失函數,然而沒有經歷第二次損失函數在接下來的迭代中振蕩明顯而且均方根誤差在0.2附近。經典的ResNet50網絡后期在0.15附近振蕩,ResNet101網絡的損失迭代從振蕩效果上可以得知收斂不明顯,均方根誤差無趨向值。綜上表明本文方法能得到更優的檢測結果。
本文從建立靈武長棗數據集開始,運用一種雙損失函數的Faster R-CNN 網絡結構進行特征圖的提取,這決定了RPN 層會提供更為優化的數據,在經歷目標候選區域與特征圖的融合池化后傳遞至分類和邊框回歸,得到訓練集的結果——檢測器,進而通過檢測器處理測試集得到結果圖像。本文方法解決了在智能采摘靈武長棗裝置的目標檢測因環境不同、葉果之間遮擋、果果之間黏連等傳統算法不易適應的問題,其對于測試集處理得到的結果相對于本文其他網絡結構在精確率、召回率、平均精度方面有明顯的優勢。同時為機器視覺應用到林果采摘方面提供了基礎數據。
因為程序對計算機的硬件性能要求嚴格,其中GPU尤為依賴,導致網絡對訓練集的訓練效率較低,得到的檢測器對驗證集的目標檢測也有一定的影響,一張圖像的檢測用時在30 s 左右。接下來要解決的是圖像檢測的用時問題,將檢驗器對于圖像的檢測達到林果實時采摘的要求。