杜雨亭 李功燕 許紹云
1(中國科學(xué)院大學(xué)微電子學(xué)院 北京 100049)2(北京微電子研究所 北京 100029)
我國是農(nóng)業(yè)大國,也是水果生產(chǎn)大國,果品產(chǎn)業(yè)是我國種植業(yè)中位列糧食蔬菜之后的第三大產(chǎn)業(yè),是我國農(nóng)村經(jīng)濟(jì)發(fā)展的支柱產(chǎn)業(yè)之一,也是農(nóng)民就業(yè)增收的重要途徑。柑橘包括柑、橘、橙等,是世界第一大水果,占水果總量的1/4。2009年我國柑橘總產(chǎn)量是2 521.1萬噸,但出口量僅占3.9%。一個(gè)關(guān)鍵原因就是我國水果商品化處理水平低,水果分級是其商品化處理的重要環(huán)節(jié)。
在水果分級中,水果表面瑕疵是作為分級的決定性判別標(biāo)準(zhǔn)之一,而瑕疵識別中,臍橙的果梗、臍部不能算作瑕疵,因此需要準(zhǔn)確識別從瑕疵中去除。果梗、臍部僅通過顏色、形狀等方法難以與瑕疵區(qū)分,李江波[1]采用直接利用硬件設(shè)備避免臍橙的果梗、臍部不會出現(xiàn)的所拍攝的圖片中,這樣對水果的固定要求高,拍攝面會有損失。胡煥發(fā)等[2]直接利用顏色分量區(qū)分果梗與瑕疵,該方法適用性較窄,并且最容易與瑕疵混淆的臍部沒有被涉及。多數(shù)臍橙瑕疵識別相關(guān)研究都沒有對臍橙的果梗、臍部進(jìn)行識別,臍橙果梗、臍部識別是一個(gè)難點(diǎn)問題。相比于傳統(tǒng)方法,近年興起的卷積神經(jīng)網(wǎng)絡(luò)(CNN)能夠直接從數(shù)據(jù)中自我學(xué)習(xí)特征,具有泛化性能好,適應(yīng)性強(qiáng)的特點(diǎn),能夠很好地完成物體識別檢測任務(wù),已用于水果識別[2]和病蟲害的檢測[4]。朱冬梅等[5]直接利用卷積神經(jīng)網(wǎng)絡(luò)對臍橙進(jìn)行分類,該方法利用了卷積神經(jīng)網(wǎng)絡(luò)能有學(xué)習(xí)深度特征的優(yōu)點(diǎn),由于臍橙是自然產(chǎn)物,直接對臍橙分類在制作數(shù)據(jù)集時(shí)難以定義分別數(shù)目,并且分級指標(biāo)應(yīng)該按照客戶要求定義。Iandola等[6]提出的DenseNet是目前效果最好的特征提取網(wǎng)絡(luò),使用跳躍式卷積連接方式參數(shù)被重復(fù)利用,減少了網(wǎng)絡(luò)參數(shù)量,提升網(wǎng)絡(luò)訓(xùn)練效率。Ren等[7]提出基于CNN的Faster RCNN物體檢測方法,該方法基于兩步訓(xùn)練方法,首先利用RPN(Regional proposal network)網(wǎng)絡(luò)提取覆蓋所有物體的默認(rèn)檢測框,然后使用另一個(gè)卷積神經(jīng)網(wǎng)絡(luò)訓(xùn)練得到物體位置和坐標(biāo)。該方法識別準(zhǔn)確率高,但是時(shí)間效率極差,達(dá)不到實(shí)時(shí)要求。Redmon等[8]提出基于CNN的YOLO(You only look once)物體檢測方法,該方法實(shí)時(shí)檢測物體,是端對端的檢測方法,按照7×7大小劃分圖片,每個(gè)劃分的圖片部分為默認(rèn)檢測框,對小物體檢測效率極差,物體檢測準(zhǔn)確度效果較差。Liu等[9]提出基于CNN的SSD(single shot detector)深度學(xué)習(xí)物體檢測方法,該方法在多尺度卷積層上設(shè)置不同大小默認(rèn)提取框,兼顧速度的同時(shí)提高了檢測的精度,但是針對本文問題模型參數(shù)冗余,時(shí)間達(dá)不到要求。Shen等[10]提取基于DenseNet的Dsod物體檢測方法,該方法使用dense結(jié)構(gòu)設(shè)計(jì)物體檢測框架,使得檢測準(zhǔn)確度有所提升,但是時(shí)間效率較差。
本文以臍橙果梗、臍部為研究目標(biāo),對自然環(huán)境下采集的臍橙進(jìn)行識別檢測研究,提出結(jié)合注意力機(jī)制以SSD為基本框架的改進(jìn)模型,以達(dá)到實(shí)時(shí)準(zhǔn)確檢測臍橙果梗、臍部的目的。
為了實(shí)時(shí)準(zhǔn)確檢測臍橙果梗、臍部,利用較少的參數(shù)以及計(jì)算量在保持檢測精度的同時(shí)提高時(shí)間性能,設(shè)計(jì)如圖1所示網(wǎng)絡(luò)模型。本文模型在衡量時(shí)間效率以及準(zhǔn)確度的基礎(chǔ)上,使用SSD為基本框架,借鑒DSOD網(wǎng)絡(luò)模型物體識別準(zhǔn)確度高的優(yōu)勢,簡化DSOD模型,在該框架基礎(chǔ)上提升物體檢測時(shí)間,為進(jìn)一步提升準(zhǔn)確度,加入注意力機(jī)制。本文網(wǎng)絡(luò)模型相比其他檢測框架,專門為臍橙數(shù)據(jù)集設(shè)計(jì),根據(jù)臍橙果梗、臍部實(shí)際大小設(shè)計(jì)檢測層的層數(shù),網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計(jì)加入更多檢測實(shí)時(shí)性的考慮,預(yù)測時(shí),加入Merge BN操作進(jìn)一步提升時(shí)間效率。
圖1 模型結(jié)構(gòu)圖
本網(wǎng)絡(luò)結(jié)構(gòu)的特征提取層利用線性結(jié)構(gòu)與跳躍式結(jié)構(gòu)融合的方式共同提取特征。首先,使用一個(gè)線性堆疊的steam結(jié)構(gòu),利用3個(gè)3×3卷積,進(jìn)行初步的特征提取。多個(gè)3×3的卷積既能減少卷積的參數(shù)量,又能與7×7卷積有相同的感受野,是目前特征提取卷積層最常用的大小。后接一個(gè)6層的Dense Block進(jìn)一步特征提取,Dense Block的特點(diǎn)是網(wǎng)絡(luò)中每一層都直接與前面層相連接,實(shí)現(xiàn)特征的重復(fù)利用。這樣的設(shè)計(jì)使得Dense Block結(jié)構(gòu)比其他網(wǎng)絡(luò)結(jié)構(gòu)效率更高,它每一層只需要學(xué)習(xí)很少的特征,參數(shù)量和計(jì)算量顯著減少。Dense Block內(nèi)部結(jié)構(gòu)是采用一個(gè)1×1卷積加上一個(gè)3×3卷積,先用1×1卷積的作用是進(jìn)行維度縮小,然后利用3×3卷積進(jìn)行特征提取。此結(jié)構(gòu)降低了計(jì)算量以及參數(shù)量,有利于網(wǎng)絡(luò)快速訓(xùn)練以及模型簡化。網(wǎng)絡(luò)結(jié)構(gòu)見圖1特征提取模塊,特征提取層網(wǎng)絡(luò)的參數(shù)設(shè)計(jì)結(jié)構(gòu)如表1所示。
表1 特征提取網(wǎng)絡(luò)參數(shù)表
在參數(shù)設(shè)計(jì)上,在第一層使用步長為4,直接將300×300的輸入尺寸降低為75×75,接下來的卷積層提取淺層特征時(shí),計(jì)算量和參數(shù)量都比較小,池化處理后的特征層作為多尺度預(yù)測的第一層,用最小的參數(shù)量和計(jì)算量實(shí)現(xiàn)淺層特征預(yù)測的目的。
注意力是一個(gè)非常常見的,但是又容易被忽略的東西。在人眼的視覺系統(tǒng)中,人會把注意力放在自己感興趣的事物上。注意力機(jī)制將特征層的權(quán)重重新分配,待檢測物體權(quán)重變大,背景權(quán)重變小。本文利用了通道域注意力機(jī)制,先對函數(shù)進(jìn)行一個(gè)全局均值化,即把通道內(nèi)的所有特征值相加再平均。公式如下:
(1)
式中:W、H分別代表feature map的寬和高,uc(i,j)表示feature map像素點(diǎn)的值。然后,利用兩個(gè)全連接來訓(xùn)練通道間的相關(guān)性,第一個(gè)全連接把C通道壓縮成C/r通道來降低計(jì)算量,后面跟RELU激活函數(shù),第二個(gè)全連接恢復(fù)成C通道,后連Sigmoid激活函數(shù)。最后將經(jīng)過Sigmoid函數(shù)產(chǎn)生的結(jié)果與原始特征進(jìn)行點(diǎn)乘操作,增加待檢測物體的權(quán)重。注意力結(jié)構(gòu)示意如圖1中注意力模塊所示。
本網(wǎng)絡(luò)結(jié)構(gòu)采用的是多尺度融合的預(yù)測結(jié)構(gòu),所謂多尺度就是采用大小不同的特征圖,CNN網(wǎng)絡(luò)一般前面的特征圖比較大,后面會逐漸采用stride=2的卷積或者池化來降低特征圖大小,一個(gè)比較大的特征圖和一個(gè)比較小的特征圖,它們都用來做檢測。這樣做的好處是比較大的特征圖來用來檢測相對較小的目標(biāo),而小的特征圖負(fù)責(zé)檢測大目標(biāo)。利用上下層信息融合,預(yù)測的結(jié)構(gòu)改變成dense的連接方式,該結(jié)構(gòu)在大量減少需要學(xué)習(xí)的模型參數(shù)的同時(shí),進(jìn)一步提升模型性能。預(yù)測模塊結(jié)構(gòu)如圖2所示。
圖2 預(yù)測層結(jié)構(gòu)圖
在臍橙數(shù)據(jù)集中,果梗、臍部在圖片中的大小最大不超過圖片的1/3,因此在多尺度檢測中僅使用38×38、19×19、10×10的尺度足以檢測物體,余下的尺度例如5×5、3×3、1×1對臍橙數(shù)據(jù)集是多余的。為了網(wǎng)絡(luò)的時(shí)間效率,在不影響精度的前提下,本文僅采用三個(gè)較大尺度進(jìn)行檢測,用較大尺度feature map檢測較小的物體。使用dense的形式從上到下融合相鄰尺度,能夠進(jìn)一步利用參數(shù),并且更好地利用上下信息。Down-sample結(jié)構(gòu)是利用1×1卷積和3×3卷積,1×1卷積作用是維度縮小,減少計(jì)算量和參數(shù)量,設(shè)置stride=2的3×3卷積來降低特征圖大小,利用組合操作,連接相鄰feature map,在此組合的feature map上提取默認(rèn)框進(jìn)行訓(xùn)練。
BN層[11]是對數(shù)據(jù)進(jìn)行歸一化處理。對于每個(gè)隱層神經(jīng)元,把逐漸在非線性函數(shù)映射后向取值區(qū)間極限飽和區(qū)靠攏的輸入分布強(qiáng)制拉回到均值為0方差為1的標(biāo)準(zhǔn)的正態(tài)分布,使得非線性變換函數(shù)的輸入值落入對輸入比較敏感的區(qū)域,以此避免梯度消失問題。BN層的使用給網(wǎng)絡(luò)帶來很大的益處,如網(wǎng)絡(luò)收斂速度加快、開始學(xué)習(xí)率可以設(shè)置較大等。BN層處理的步驟如下所示:
(1) 計(jì)算一個(gè)mini-batch的均值:
2)??锥氯麌?yán)重。發(fā)生??锥氯?,與物料本身特性、調(diào)質(zhì)質(zhì)量、輸送速度和模輥間隙等有關(guān)。??锥氯坏绊懻Ia(chǎn),降低生產(chǎn)率,還會影響成型顆粒質(zhì)量,降低環(huán)模壽命。但是,目前如何很好地預(yù)防和及時(shí)處理??锥氯膯栴}還未得到解決。
(2)
(2) 計(jì)算一個(gè)mini-batch的方差:
(3)
(3) 利用均值以及方差對數(shù)據(jù)歸一化:
(4)
(4) 利用自學(xué)習(xí)參數(shù)γ、β得到BN操作后的數(shù)據(jù)結(jié)果:
(5)
式中:B={x1,x2,…,xm}表示一個(gè)mini-batch的數(shù)據(jù),yi是輸出結(jié)果。
本文中所使用的深度學(xué)習(xí)框架如圖1所示,每個(gè)卷積層基本與一個(gè)BN層相連,BN層使得訓(xùn)練過程中不用關(guān)注太多參數(shù)調(diào)整問題,并且數(shù)據(jù)的歸一化帶來了訓(xùn)練的速度增加,但是同樣也帶來了額外的參數(shù)以及多余的網(wǎng)絡(luò)層數(shù)。因此,圖像的檢測時(shí)間會有所增加。本文采用Merge BN操作將BN層與卷積層合并,顯著提升了圖像檢測的時(shí)間性能。根據(jù)式(4),可以反向推導(dǎo)BN層合并到原來卷積層權(quán)重和偏差的公式如下:
(6)
(7)
首先把卷積層權(quán)重以及BN層的參數(shù)讀取出來,根據(jù)式(6)和式(7),將BN層參數(shù)匯合到卷積層中去;其次將模型結(jié)構(gòu)中的BN層去掉,得到的新模型就是最終檢測所需要的模型。
實(shí)驗(yàn)的硬件環(huán)境為:CPU:56 Intel(R) Xeon(R) CPU E5-2683 v3@2.00 GHz;GPU:NVIDIA TITAN Xp,12 GB顯存。軟件環(huán)境為Ubuntu 16.04以及caffe框架。
本文采用深度學(xué)習(xí)物體檢測方法檢測果梗、臍部。目前沒有相關(guān)的數(shù)據(jù)集是臍橙檢測的,因此需要自己制作相關(guān)數(shù)據(jù)集的標(biāo)注工作。本研究共標(biāo)注19 760幅圖片,按照隨機(jī)交叉驗(yàn)證準(zhǔn)則,30%作為測試集(共5 928幅),剩下的作為訓(xùn)練集。數(shù)據(jù)集標(biāo)注借助開源標(biāo)注工具LabelImage,直接生成類似于Pascal VOC數(shù)據(jù)集的標(biāo)注結(jié)果,標(biāo)注過程如圖3所示。
圖3 標(biāo)注過程圖
目前衡量檢測問題的主要指標(biāo)是mAP(mean Average Precision)和前向預(yù)測時(shí)間,本文主要從這兩個(gè)指標(biāo)衡量本文使用的模型與原始模型,在盡可能不損失精度的情況下,降低檢測時(shí)間,能夠正確實(shí)時(shí)檢測臍橙的果梗、臍部。
采用本文網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行參數(shù)訓(xùn)練,訓(xùn)練過程中學(xué)習(xí)率的設(shè)置非常重要,如果學(xué)習(xí)率過大,很容易導(dǎo)致誤差震蕩,無法收斂到全局最優(yōu)值,如果學(xué)習(xí)率過小,網(wǎng)絡(luò)收斂又很慢,并且容易收斂到局部最優(yōu)值。在整個(gè)學(xué)習(xí)過程中,采用multi-step動(dòng)態(tài)調(diào)整學(xué)習(xí)率大小的策略,開始的時(shí)候設(shè)置較大的學(xué)習(xí)率,在step為8 000、16 000的時(shí)候分別降低學(xué)習(xí)率,可以使得網(wǎng)絡(luò)達(dá)到最優(yōu)狀態(tài)。
本網(wǎng)絡(luò)采用臍橙數(shù)據(jù)集進(jìn)行網(wǎng)絡(luò)訓(xùn)練過程如圖4所示。橫軸表示的是訓(xùn)練迭代的次數(shù),左邊縱軸表示的是訓(xùn)練時(shí)的損失值,右邊縱軸表示的是訓(xùn)練過程中驗(yàn)證集的平均正確率(mean Average Precision,mAP)。從圖4可以看出在8 000、16 000處降低學(xué)習(xí)率時(shí),損失有明顯的下降趨勢,在20 000迭代次數(shù)之前,網(wǎng)絡(luò)收斂速度較快,測試的mAP也有明顯的增加。在最后階段loss和mAP趨于穩(wěn)定,表示網(wǎng)絡(luò)已經(jīng)收斂到最優(yōu)。在臍橙數(shù)據(jù)集上,mAP指標(biāo)為90.6%。
圖4 網(wǎng)絡(luò)訓(xùn)練過程收斂曲線圖
本文訓(xùn)練次數(shù)為30 000,在最優(yōu)模型下測試前向時(shí)間為23 ms,經(jīng)過merge BN操作后,前向測試時(shí)間為15 ms。本文基于SSD基本檢測框架,借鑒使用DSOD網(wǎng)絡(luò)的dense結(jié)構(gòu)設(shè)計(jì)的模型結(jié)構(gòu)。各網(wǎng)絡(luò)對比結(jié)果如表2所示,本文方法與SSD與DSOD檢測方法進(jìn)行比較,所用的測試集是臍橙數(shù)據(jù)集,本文所采用的模型是在時(shí)間性能和準(zhǔn)確度性能上都是最好的。由表2可知,注意力機(jī)制對準(zhǔn)確度的提升有良好的效果。
表2 各網(wǎng)絡(luò)對比結(jié)果
圖5為果梗、臍部檢測效果,(a)、(b)、(c)三列圖分別顯示了使用本文改進(jìn)的深度學(xué)習(xí)物體檢測算法以及應(yīng)用所建立的臍橙數(shù)據(jù)集對臍橙果梗、臍部以及各種瑕疵影響下的檢測效果。從圖中可以看出,在臍部與潰瘍極度相似以及大臍部難以判別的情況下,依然可以準(zhǔn)確地檢測出果梗、臍部,本文的算法適用于臍橙的瑕疵檢測系統(tǒng)。
(a) (b) (c)圖5 果梗、臍部檢測效果
在臍橙數(shù)據(jù)集中,本文網(wǎng)絡(luò)結(jié)構(gòu)加入注意力機(jī)制后,在保證實(shí)時(shí)的前提下依舊能夠保證極高的精度,在時(shí)間以及精度上超過了SSD、DSOD模型。在加入Merge BN模型處理步驟后,進(jìn)一步大幅度提高了時(shí)間,所以該結(jié)構(gòu)能夠滿足臍橙的果梗、臍部檢測的工作,從而進(jìn)一步完成臍橙的瑕疵檢測工作。但是目前本文所做的工作還有一些不足:所建立的臍橙數(shù)據(jù)集僅僅是臍橙的一個(gè)表面,在工業(yè)上一般是對臍橙整個(gè)表面進(jìn)行檢測,因此應(yīng)用于工業(yè)還需要加入一些策略,所有表面形成一定的聯(lián)系。