杜雨亭 李功燕 許紹云
1(中國科學院大學微電子學院 北京 100049)2(北京微電子研究所 北京 100029)
我國是農業大國,也是水果生產大國,果品產業是我國種植業中位列糧食蔬菜之后的第三大產業,是我國農村經濟發展的支柱產業之一,也是農民就業增收的重要途徑。柑橘包括柑、橘、橙等,是世界第一大水果,占水果總量的1/4。2009年我國柑橘總產量是2 521.1萬噸,但出口量僅占3.9%。一個關鍵原因就是我國水果商品化處理水平低,水果分級是其商品化處理的重要環節。
在水果分級中,水果表面瑕疵是作為分級的決定性判別標準之一,而瑕疵識別中,臍橙的果梗、臍部不能算作瑕疵,因此需要準確識別從瑕疵中去除。果梗、臍部僅通過顏色、形狀等方法難以與瑕疵區分,李江波[1]采用直接利用硬件設備避免臍橙的果梗、臍部不會出現的所拍攝的圖片中,這樣對水果的固定要求高,拍攝面會有損失。胡煥發等[2]直接利用顏色分量區分果梗與瑕疵,該方法適用性較窄,并且最容易與瑕疵混淆的臍部沒有被涉及。多數臍橙瑕疵識別相關研究都沒有對臍橙的果梗、臍部進行識別,臍橙果梗、臍部識別是一個難點問題。相比于傳統方法,近年興起的卷積神經網絡(CNN)能夠直接從數據中自我學習特征,具有泛化性能好,適應性強的特點,能夠很好地完成物體識別檢測任務,已用于水果識別[2]和病蟲害的檢測[4]。朱冬梅等[5]直接利用卷積神經網絡對臍橙進行分類,該方法利用了卷積神經網絡能有學習深度特征的優點,由于臍橙是自然產物,直接對臍橙分類在制作數據集時難以定義分別數目,并且分級指標應該按照客戶要求定義。Iandola等[6]提出的DenseNet是目前效果最好的特征提取網絡,使用跳躍式卷積連接方式參數被重復利用,減少了網絡參數量,提升網絡訓練效率。Ren等[7]提出基于CNN的Faster RCNN物體檢測方法,該方法基于兩步訓練方法,首先利用RPN(Regional proposal network)網絡提取覆蓋所有物體的默認檢測框,然后使用另一個卷積神經網絡訓練得到物體位置和坐標。該方法識別準確率高,但是時間效率極差,達不到實時要求。Redmon等[8]提出基于CNN的YOLO(You only look once)物體檢測方法,該方法實時檢測物體,是端對端的檢測方法,按照7×7大小劃分圖片,每個劃分的圖片部分為默認檢測框,對小物體檢測效率極差,物體檢測準確度效果較差。Liu等[9]提出基于CNN的SSD(single shot detector)深度學習物體檢測方法,該方法在多尺度卷積層上設置不同大小默認提取框,兼顧速度的同時提高了檢測的精度,但是針對本文問題模型參數冗余,時間達不到要求。Shen等[10]提取基于DenseNet的Dsod物體檢測方法,該方法使用dense結構設計物體檢測框架,使得檢測準確度有所提升,但是時間效率較差。
本文以臍橙果梗、臍部為研究目標,對自然環境下采集的臍橙進行識別檢測研究,提出結合注意力機制以SSD為基本框架的改進模型,以達到實時準確檢測臍橙果梗、臍部的目的。
為了實時準確檢測臍橙果梗、臍部,利用較少的參數以及計算量在保持檢測精度的同時提高時間性能,設計如圖1所示網絡模型。本文模型在衡量時間效率以及準確度的基礎上,使用SSD為基本框架,借鑒DSOD網絡模型物體識別準確度高的優勢,簡化DSOD模型,在該框架基礎上提升物體檢測時間,為進一步提升準確度,加入注意力機制。本文網絡模型相比其他檢測框架,專門為臍橙數據集設計,根據臍橙果梗、臍部實際大小設計檢測層的層數,網絡結構設計加入更多檢測實時性的考慮,預測時,加入Merge BN操作進一步提升時間效率。

圖1 模型結構圖
本網絡結構的特征提取層利用線性結構與跳躍式結構融合的方式共同提取特征。首先,使用一個線性堆疊的steam結構,利用3個3×3卷積,進行初步的特征提取。多個3×3的卷積既能減少卷積的參數量,又能與7×7卷積有相同的感受野,是目前特征提取卷積層最常用的大小。后接一個6層的Dense Block進一步特征提取,Dense Block的特點是網絡中每一層都直接與前面層相連接,實現特征的重復利用。這樣的設計使得Dense Block結構比其他網絡結構效率更高,它每一層只需要學習很少的特征,參數量和計算量顯著減少。Dense Block內部結構是采用一個1×1卷積加上一個3×3卷積,先用1×1卷積的作用是進行維度縮小,然后利用3×3卷積進行特征提取。此結構降低了計算量以及參數量,有利于網絡快速訓練以及模型簡化。網絡結構見圖1特征提取模塊,特征提取層網絡的參數設計結構如表1所示。

表1 特征提取網絡參數表
在參數設計上,在第一層使用步長為4,直接將300×300的輸入尺寸降低為75×75,接下來的卷積層提取淺層特征時,計算量和參數量都比較小,池化處理后的特征層作為多尺度預測的第一層,用最小的參數量和計算量實現淺層特征預測的目的。
注意力是一個非常常見的,但是又容易被忽略的東西。在人眼的視覺系統中,人會把注意力放在自己感興趣的事物上。注意力機制將特征層的權重重新分配,待檢測物體權重變大,背景權重變小。本文利用了通道域注意力機制,先對函數進行一個全局均值化,即把通道內的所有特征值相加再平均。公式如下:
(1)
式中:W、H分別代表feature map的寬和高,uc(i,j)表示feature map像素點的值。然后,利用兩個全連接來訓練通道間的相關性,第一個全連接把C通道壓縮成C/r通道來降低計算量,后面跟RELU激活函數,第二個全連接恢復成C通道,后連Sigmoid激活函數。最后將經過Sigmoid函數產生的結果與原始特征進行點乘操作,增加待檢測物體的權重。注意力結構示意如圖1中注意力模塊所示。
本網絡結構采用的是多尺度融合的預測結構,所謂多尺度就是采用大小不同的特征圖,CNN網絡一般前面的特征圖比較大,后面會逐漸采用stride=2的卷積或者池化來降低特征圖大小,一個比較大的特征圖和一個比較小的特征圖,它們都用來做檢測。這樣做的好處是比較大的特征圖來用來檢測相對較小的目標,而小的特征圖負責檢測大目標。利用上下層信息融合,預測的結構改變成dense的連接方式,該結構在大量減少需要學習的模型參數的同時,進一步提升模型性能。預測模塊結構如圖2所示。

圖2 預測層結構圖
在臍橙數據集中,果梗、臍部在圖片中的大小最大不超過圖片的1/3,因此在多尺度檢測中僅使用38×38、19×19、10×10的尺度足以檢測物體,余下的尺度例如5×5、3×3、1×1對臍橙數據集是多余的。為了網絡的時間效率,在不影響精度的前提下,本文僅采用三個較大尺度進行檢測,用較大尺度feature map檢測較小的物體。使用dense的形式從上到下融合相鄰尺度,能夠進一步利用參數,并且更好地利用上下信息。Down-sample結構是利用1×1卷積和3×3卷積,1×1卷積作用是維度縮小,減少計算量和參數量,設置stride=2的3×3卷積來降低特征圖大小,利用組合操作,連接相鄰feature map,在此組合的feature map上提取默認框進行訓練。
BN層[11]是對數據進行歸一化處理。對于每個隱層神經元,把逐漸在非線性函數映射后向取值區間極限飽和區靠攏的輸入分布強制拉回到均值為0方差為1的標準的正態分布,使得非線性變換函數的輸入值落入對輸入比較敏感的區域,以此避免梯度消失問題。BN層的使用給網絡帶來很大的益處,如網絡收斂速度加快、開始學習率可以設置較大等。BN層處理的步驟如下所示:
(1) 計算一個mini-batch的均值:
2)模孔堵塞嚴重。發生模孔堵塞,與物料本身特性、調質質量、輸送速度和模輥間隙等有關。模孔堵塞不但影響正常生產,降低生產率,還會影響成型顆粒質量,降低環模壽命。但是,目前如何很好地預防和及時處理模孔堵塞的問題還未得到解決。
(2)
(2) 計算一個mini-batch的方差:
(3)
(3) 利用均值以及方差對數據歸一化:
(4)
(4) 利用自學習參數γ、β得到BN操作后的數據結果:
(5)
式中:B={x1,x2,…,xm}表示一個mini-batch的數據,yi是輸出結果。
本文中所使用的深度學習框架如圖1所示,每個卷積層基本與一個BN層相連,BN層使得訓練過程中不用關注太多參數調整問題,并且數據的歸一化帶來了訓練的速度增加,但是同樣也帶來了額外的參數以及多余的網絡層數。因此,圖像的檢測時間會有所增加。本文采用Merge BN操作將BN層與卷積層合并,顯著提升了圖像檢測的時間性能。根據式(4),可以反向推導BN層合并到原來卷積層權重和偏差的公式如下:
(6)
(7)
首先把卷積層權重以及BN層的參數讀取出來,根據式(6)和式(7),將BN層參數匯合到卷積層中去;其次將模型結構中的BN層去掉,得到的新模型就是最終檢測所需要的模型。
實驗的硬件環境為:CPU:56 Intel(R) Xeon(R) CPU E5-2683 v3@2.00 GHz;GPU:NVIDIA TITAN Xp,12 GB顯存。軟件環境為Ubuntu 16.04以及caffe框架。
本文采用深度學習物體檢測方法檢測果梗、臍部。目前沒有相關的數據集是臍橙檢測的,因此需要自己制作相關數據集的標注工作。本研究共標注19 760幅圖片,按照隨機交叉驗證準則,30%作為測試集(共5 928幅),剩下的作為訓練集。數據集標注借助開源標注工具LabelImage,直接生成類似于Pascal VOC數據集的標注結果,標注過程如圖3所示。

圖3 標注過程圖
目前衡量檢測問題的主要指標是mAP(mean Average Precision)和前向預測時間,本文主要從這兩個指標衡量本文使用的模型與原始模型,在盡可能不損失精度的情況下,降低檢測時間,能夠正確實時檢測臍橙的果梗、臍部。
采用本文網絡結構進行參數訓練,訓練過程中學習率的設置非常重要,如果學習率過大,很容易導致誤差震蕩,無法收斂到全局最優值,如果學習率過小,網絡收斂又很慢,并且容易收斂到局部最優值。在整個學習過程中,采用multi-step動態調整學習率大小的策略,開始的時候設置較大的學習率,在step為8 000、16 000的時候分別降低學習率,可以使得網絡達到最優狀態。
本網絡采用臍橙數據集進行網絡訓練過程如圖4所示。橫軸表示的是訓練迭代的次數,左邊縱軸表示的是訓練時的損失值,右邊縱軸表示的是訓練過程中驗證集的平均正確率(mean Average Precision,mAP)。從圖4可以看出在8 000、16 000處降低學習率時,損失有明顯的下降趨勢,在20 000迭代次數之前,網絡收斂速度較快,測試的mAP也有明顯的增加。在最后階段loss和mAP趨于穩定,表示網絡已經收斂到最優。在臍橙數據集上,mAP指標為90.6%。

圖4 網絡訓練過程收斂曲線圖
本文訓練次數為30 000,在最優模型下測試前向時間為23 ms,經過merge BN操作后,前向測試時間為15 ms。本文基于SSD基本檢測框架,借鑒使用DSOD網絡的dense結構設計的模型結構。各網絡對比結果如表2所示,本文方法與SSD與DSOD檢測方法進行比較,所用的測試集是臍橙數據集,本文所采用的模型是在時間性能和準確度性能上都是最好的。由表2可知,注意力機制對準確度的提升有良好的效果。

表2 各網絡對比結果
圖5為果梗、臍部檢測效果,(a)、(b)、(c)三列圖分別顯示了使用本文改進的深度學習物體檢測算法以及應用所建立的臍橙數據集對臍橙果梗、臍部以及各種瑕疵影響下的檢測效果。從圖中可以看出,在臍部與潰瘍極度相似以及大臍部難以判別的情況下,依然可以準確地檢測出果梗、臍部,本文的算法適用于臍橙的瑕疵檢測系統。

(a) (b) (c)圖5 果梗、臍部檢測效果
在臍橙數據集中,本文網絡結構加入注意力機制后,在保證實時的前提下依舊能夠保證極高的精度,在時間以及精度上超過了SSD、DSOD模型。在加入Merge BN模型處理步驟后,進一步大幅度提高了時間,所以該結構能夠滿足臍橙的果梗、臍部檢測的工作,從而進一步完成臍橙的瑕疵檢測工作。但是目前本文所做的工作還有一些不足:所建立的臍橙數據集僅僅是臍橙的一個表面,在工業上一般是對臍橙整個表面進行檢測,因此應用于工業還需要加入一些策略,所有表面形成一定的聯系。