李振權(quán) 李功燕
1(中國科學(xué)院大學(xué)微電子學(xué)院 北京 100049)2(中國科學(xué)院微電子研究所 北京 100029)
我國是臍橙生產(chǎn)大國,臍橙表面瑕疵是影響臍橙銷售的重要因素。臍橙自動(dòng)分級(jí)的流程主要是:(1) 用高速相機(jī)在線采集臍橙圖像;(2) 實(shí)時(shí)處理圖像,得到臍橙所屬類別;(3) 控制設(shè)備將臍橙送入相應(yīng)的分類倉庫。目前我國臍橙自動(dòng)分級(jí)檢測(cè)存在正確識(shí)別率低、實(shí)時(shí)性不強(qiáng)等缺點(diǎn),部分工業(yè)現(xiàn)場(chǎng)仍采用人工方式進(jìn)行分級(jí)。因此尋找高效、合適的臍橙品質(zhì)分級(jí)算法對(duì)農(nóng)機(jī)設(shè)備智能化、臍橙分級(jí)全自動(dòng)化有著重要的意義,能夠有效地促進(jìn)臍橙產(chǎn)業(yè)的發(fā)展,極大提高臍橙生產(chǎn)力。隨著計(jì)算機(jī)技術(shù)的發(fā)展與應(yīng)用,國內(nèi)外對(duì)圖像處理在農(nóng)業(yè)生產(chǎn)中的應(yīng)用進(jìn)行了較深入研究,越來越多的臍橙分類算法被提出,主要分為傳統(tǒng)的數(shù)字圖像處理與深度學(xué)習(xí)兩類算法。文獻(xiàn)[1]采用多特征量向量對(duì)研究對(duì)象進(jìn)行分級(jí)檢測(cè),取得了較高的識(shí)別率,但因考慮的特征量過多,而降低了系統(tǒng)的實(shí)時(shí)性。文獻(xiàn)[2]提出一種基于前饋神經(jīng)網(wǎng)絡(luò)的混合算法進(jìn)行水果分類,然而這種算法的精度上有所欠缺,適應(yīng)性也不夠強(qiáng)。文獻(xiàn)[3]直接采用卷積神經(jīng)網(wǎng)絡(luò)對(duì)臍橙進(jìn)行分類,人工標(biāo)注臍橙類別,不能適應(yīng)不同客戶的需求。文獻(xiàn)[4]采用基于深度學(xué)習(xí)目標(biāo)檢測(cè)的方法檢測(cè)臍橙瑕疵、果梗和臍部,然而目標(biāo)檢測(cè)框架較大,耗時(shí)長(zhǎng),并且需要后處理讓其應(yīng)用于分類等場(chǎng)合。
本文以臍橙快速、準(zhǔn)確分級(jí)為目標(biāo),設(shè)計(jì)高效的神經(jīng)網(wǎng)絡(luò)模型結(jié)構(gòu),提出多任務(wù)即分類與回歸的方式提升分級(jí)效果,利用通道剪枝的方式對(duì)算法進(jìn)行優(yōu)化,以提高現(xiàn)有算法的準(zhǔn)確度和速度。
圖 1所示是一套臍橙分級(jí)系統(tǒng)設(shè)備。其機(jī)器視覺部分主要由高分辨率工業(yè)相機(jī),光電開關(guān),LED光源和帶滾輪的傳送帶組成,其中高分辨率工業(yè)相機(jī)和光電開關(guān)用于控制圖像捕獲。相機(jī)的分辨率為1 280×1 024,幀率為60幀/s。為了獲取整個(gè)臍橙的表面信息,當(dāng)相機(jī)捕捉圖像時(shí),臍橙在傳送的過程中與滾筒一起旋轉(zhuǎn)。
圖1 臍橙在線分級(jí)
果梗、臍部與瑕疵具有相似的特征,數(shù)據(jù)采集時(shí),橢球形的臍橙橫置擺放,因此拍攝的圖像中,果梗和臍部出現(xiàn)的樣本數(shù)所占比例比較低。數(shù)據(jù)的不平衡以及樣本種類的不夠豐富,往往讓神經(jīng)網(wǎng)絡(luò)的擬合出現(xiàn)偏差。為了緩解以上問題,本文通過采樣的方式,從總體數(shù)據(jù)集抽取訓(xùn)練樣本時(shí),對(duì)果梗和臍部特征明顯的樣本置以更大的概率,并隨機(jī)旋轉(zhuǎn)重復(fù)抽樣的圖像。
分類信息如圖2所示,其中:(a) 代表花皮果,表示可以直接分類,標(biāo)注為1,忽略輸出的回歸值;(b) 代表普通果,標(biāo)注為0,表示需要根據(jù)回歸值輸出的瑕疵占比進(jìn)行分類。
圖2 兩類典型臍橙圖
文獻(xiàn)[5]提出用深度卷積和點(diǎn)乘卷積代替?zhèn)鹘y(tǒng)的全通道卷積。深度卷積是分組數(shù)等于通道數(shù)的分組卷積,只融合卷積核大小的圖像鄰域內(nèi)的信息,不融合通道間的信息。點(diǎn)乘卷積的卷積核尺寸大小為1×1,只用于融合所有通道間的信息。文獻(xiàn)[6]提出了高效CNN設(shè)計(jì)的思路,作者通過理論證明和實(shí)驗(yàn)發(fā)現(xiàn):(1) 同等計(jì)算量下輸入通道數(shù)與輸出通道數(shù)相同能減少M(fèi)AC(內(nèi)存訪問代價(jià));(2) 組卷積分組數(shù)越多,MAC越大;(3) 多分支結(jié)構(gòu)減小并行性;(4) 元素級(jí)別的操作開銷也很耗時(shí),包括張量相加、ReLU和加偏置值等操作。
該算法基于以上準(zhǔn)則設(shè)計(jì)神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)。模型的構(gòu)造使用模塊化的方法,主體部分由兩個(gè)模塊以一定的數(shù)目堆積而成,稱為特征提取模塊和下采樣模塊,如圖3所示。每個(gè)特征提取模塊與下采樣模塊均有3層,表1所示即為模型結(jié)構(gòu)的詳細(xì)設(shè)置,總層數(shù)為29。
(a) 特征提取模塊 (b) 下采樣模塊圖3 模型結(jié)構(gòu)
表1 模型結(jié)構(gòu)
特征提取模塊如圖3(a)所示,DWConv代表深度卷積。先進(jìn)行通道分離,一半的通道通過三個(gè)卷積層輸出與不進(jìn)行任何操作的另一半堆疊在一起,再進(jìn)行通道混洗。三個(gè)卷積層輸入通道數(shù)均等于輸出通道數(shù),讓MAC最小。通道分離操作有兩個(gè)好處:一是能夠讓淺層的特征能夠被網(wǎng)絡(luò)深層所利用,特征重用考慮了深層特征與淺層特征之間的聯(lián)系,能夠更好地進(jìn)行特征的表示;二是減少卷積操作,壓縮了網(wǎng)絡(luò)的計(jì)算量。緊跟著通道混洗操作,以保證分支左側(cè)的特征通道能在之后進(jìn)行卷積操作。下采樣模塊承擔(dān)全通道信息融合和特征圖尺寸減小的功能,如圖3(b)所示,有兩層卷積,第一層用于全通道融合,第二層卷積進(jìn)行通道的擴(kuò)展,最后一個(gè)最大池化將特征圖尺寸減小。
損失函數(shù)由分類損失和回歸損失兩部分構(gòu)成。針對(duì)臍橙分級(jí)任務(wù),分類與回歸的難易程度并不相同,本文使用自適應(yīng)的加權(quán)損失函數(shù):
(1)
(2)
loss=lossc+α×lossr
(3)
式(1)為交叉熵?fù)p失函數(shù),用于分類;式(2)為均方誤差,作為回歸損失函數(shù),只有當(dāng)類別標(biāo)注為0時(shí),才計(jì)算它,因此只有部分樣本擁有回歸損失;式(3)即為整個(gè)模型的損失函數(shù),其中α為超參數(shù),通過給回歸損失加權(quán),控制誤差反向傳播與權(quán)重的更新,從而影響模型擬合訓(xùn)練數(shù)據(jù)分布的傾向性。若模型分類表現(xiàn)較好,而回歸表現(xiàn)差,則加大回歸損失權(quán)重,反之亦然。
超參數(shù)α由模型訓(xùn)練時(shí)自動(dòng)學(xué)習(xí)得到,形成自適應(yīng)加權(quán)損失函數(shù),具體做法是:先初始化α,模型訓(xùn)練部分周期后,加入驗(yàn)證集,評(píng)判當(dāng)前損失函數(shù)下的模型在驗(yàn)證集上分類和回歸的表現(xiàn),當(dāng)且僅當(dāng)分類準(zhǔn)確度沒有下降并且回歸的性能提升時(shí),α增大一個(gè)步長(zhǎng)(實(shí)驗(yàn)設(shè)置為0.1),如果分類準(zhǔn)確性下降,則α減小一個(gè)步長(zhǎng)。之后每三個(gè)周期進(jìn)行一次驗(yàn)證集評(píng)判與α更新,讓最終的模型在分類與回歸任務(wù)上同時(shí)表現(xiàn)良好。其中,回歸性能以均方誤差作為評(píng)判標(biāo)準(zhǔn),如式(4)所示。在驗(yàn)證集下,如果模型能夠在保證分類誤差的前提下盡可能提升回歸性能,那么其將有最佳的泛化性能。
(4)
以式(4)作為α自適應(yīng)學(xué)習(xí)的回歸性能判斷準(zhǔn)則主要有兩個(gè)因素:一是S對(duì)應(yīng)模型訓(xùn)練時(shí)的損失函數(shù)中的回歸損失,符合優(yōu)化目標(biāo);二是防止過擬合。展開式(4)得到式(5),從左至右分別為方差、噪音和偏差的平方。若方差太大,預(yù)示模型可能發(fā)生過擬合,偏差太大則可能欠擬合,以S作為判別準(zhǔn)則考慮了偏差和方差的綜合最優(yōu)情況。
S=E[(f(x)-y)2]=
E[(f(x))2]+E(y2)-2E(y)E(f(x))=
(5)
CNN加速的研究對(duì)模型在實(shí)際應(yīng)用中的部署有著重要意義,其中結(jié)構(gòu)簡(jiǎn)化與緊湊是主要方法之一。文獻(xiàn)[7-8]采用權(quán)重張量分解將原卷積操作變成小卷積的疊加,但是對(duì)于1×1的卷積操作卻很難應(yīng)用。文獻(xiàn)[9]提出網(wǎng)絡(luò)稀疏連接的方法,但是模型推斷耗時(shí)主要在卷積層,參數(shù)量主要在速度較快的全連接層,因此不僅加速效果一般,而且稀疏造成的不規(guī)則結(jié)構(gòu)對(duì)算法實(shí)現(xiàn)不友好。文獻(xiàn)[10-12]采用通道剪枝的方法,去除冗余的特征圖通道,從理論和實(shí)際上讓模型結(jié)構(gòu)變得更窄,實(shí)現(xiàn)加速效果。
本文通過通道剪枝對(duì)模型進(jìn)行優(yōu)化,首先對(duì)表1中編號(hào)為2、3和4的下采樣模塊中的卷積層分別進(jìn)行局部剪枝,固定除剪枝層外的其他參數(shù),微調(diào)模型,觀察其通道冗余程度。然后對(duì)模型進(jìn)行全局剪枝,得到最終的緊湊網(wǎng)絡(luò)??傮w的模型優(yōu)化步驟如圖4所示。
圖4 剪枝流程
把每個(gè)卷積核參數(shù)的l1范數(shù)[10]作為剪枝優(yōu)先的依據(jù),其值越小,證明前向傳播的信息量越小,對(duì)應(yīng)的通道的重要性越低,剪枝的優(yōu)先級(jí)越高。當(dāng)剪枝層后的一層為正常卷積時(shí),假設(shè)初始的輸入層的通道數(shù)為M,輸出層通道為N,再下一層通道數(shù)為S,則初始卷積核的維度分別為(k,k,M,N)和(k,k,N,S)。剪枝將輸出通道數(shù)N減小為N′,此時(shí)由于后一層的輸入通道數(shù)減少,其每個(gè)卷積核的對(duì)應(yīng)維度也會(huì)減小。因此卷積核大小變成了(k,k,M,N′)和(k,k,N′,S)。
當(dāng)剪枝層后為圖3所示的特征提取模塊時(shí),由于剪枝造成輸入此模塊的特征通道減少,為了保證通道分離左右兩支的通道數(shù)一致,以及整個(gè)模塊的輸入輸出通道數(shù)相等,剪枝將造成之后連續(xù)的特征提取模塊的改變,此時(shí)對(duì)應(yīng)參數(shù)的保持十分困難,本文將重新初始化這些層的參數(shù),并以更多的周期訓(xùn)練剪枝后的網(wǎng)絡(luò),觀察通道的冗余程度。
全局剪枝由局部剪枝結(jié)果確定。典型的通道剪枝都是保留重要參數(shù)并微調(diào),文獻(xiàn)[13]指出,剪去神經(jīng)網(wǎng)絡(luò)模型中的冗余通道可被看作網(wǎng)絡(luò)結(jié)構(gòu)搜索過程,即使不保留重要的權(quán)重,從頭開始訓(xùn)練,得到的結(jié)果與微調(diào)的方法無明顯差異。本文算法中全局剪枝是為了得到緊湊的結(jié)構(gòu),將隨機(jī)初始化權(quán)重并從頭訓(xùn)練。
本實(shí)驗(yàn)使用了3 875幅臍橙圖像作為數(shù)據(jù)集,其中3 186幅用作訓(xùn)練集,353幅作為驗(yàn)證集,336幅作為測(cè)試集。在配備GPU的服務(wù)器上訓(xùn)練網(wǎng)絡(luò),測(cè)試實(shí)驗(yàn)包括CPU和GPU,CPU為56 Intel (R) Xeon(R) CPU E5-2683 v3 @ 2.00 GHz,GPU為NVIDIA TITAN Xp。在將圖像輸入網(wǎng)絡(luò)訓(xùn)練之前,先進(jìn)行數(shù)據(jù)預(yù)處理,包括:1) 將圖像分辨率統(tǒng)一轉(zhuǎn)換成128×128;2) 所有圖像做直方圖均衡,再將圖像隨機(jī)進(jìn)行鏡像翻轉(zhuǎn);3) 去均值歸一化。
為了衡量最終的算法效果,通過以下評(píng)價(jià)標(biāo)準(zhǔn)進(jìn)行計(jì)算:
(6)
首先控制式(3)中的參數(shù)權(quán)重α與非剪枝層不變,對(duì)剪枝層單層進(jìn)行剪枝實(shí)驗(yàn),例如編號(hào)2第一層卷積表示為2_1,每次剪枝完對(duì)當(dāng)前模型進(jìn)行微調(diào),對(duì)于第2節(jié)所述的兩種不同層的剪枝,微調(diào)周期分別為10和20。
由圖5實(shí)驗(yàn)結(jié)果發(fā)現(xiàn),單層卷積通道存在極大的冗余,絕大部分通道剪枝50%以下時(shí),準(zhǔn)確率幾乎沒有損失,甚至出現(xiàn)了不降反升的現(xiàn)象。其中準(zhǔn)確率下降最大的是2_1,當(dāng)剪掉其90%的通道時(shí),準(zhǔn)確率由94.05%下降到84.82%,4_1剪去90%通道時(shí),準(zhǔn)確率僅僅下降到91.37%。還從實(shí)驗(yàn)中發(fā)現(xiàn),剪枝層越淺,對(duì)剪枝越敏感,準(zhǔn)確率下降程度越大。
圖5 單層剪枝準(zhǔn)確率變化
為驗(yàn)證超參數(shù)α自適應(yīng)學(xué)習(xí)的有效性,實(shí)驗(yàn)將以21個(gè)不同的α值,控制訓(xùn)練周期數(shù)相同,訓(xùn)練21個(gè)模型,并在測(cè)試數(shù)據(jù)集上計(jì)算R1指標(biāo)值,觀察不同的α值對(duì)應(yīng)的模型的效果。α以1至3,間隔為0.1均勻取值,實(shí)驗(yàn)結(jié)果如圖6所示。
圖6 不同α取值模型效果對(duì)比
R1指標(biāo)的容忍因子比較小,更能反映模型對(duì)回歸和分類的平衡效果。分析實(shí)驗(yàn)結(jié)果可知,α在2.0至2.5取值時(shí)效果比較好,等于2.3時(shí)R1指標(biāo)達(dá)到最優(yōu),而繼續(xù)增大α不能繼續(xù)提升總體效果,因?yàn)榛貧w任務(wù)權(quán)重太大影響了分類任務(wù)準(zhǔn)確性。超參數(shù)α的自適應(yīng)學(xué)習(xí)過程可以被視為圖6中準(zhǔn)確度曲線的峰值搜索過程,實(shí)驗(yàn)證明了此方法的有效性。
根據(jù)剪枝實(shí)驗(yàn)結(jié)果,可以確定模型剪枝后的最終結(jié)構(gòu)。最終的通道數(shù)設(shè)置如表1所示,并通過隨機(jī)初始化重新訓(xùn)練神經(jīng)網(wǎng)絡(luò)。為了展現(xiàn)該算法在臍橙分級(jí)任務(wù)上的表現(xiàn),將該算法與復(fù)雜度相近的模型在速度、R1和R1.5三個(gè)指標(biāo)上進(jìn)行比較,實(shí)驗(yàn)結(jié)果如表2所示。從中發(fā)現(xiàn),對(duì)于本文數(shù)據(jù)集,該算法在R1.5的準(zhǔn)確率達(dá)到了94.05%的最優(yōu)效果,在R1的準(zhǔn)確率達(dá)到88.39%的最優(yōu)效果,均好于傳統(tǒng)分類網(wǎng)絡(luò)vgg19和ResNet34。模型剪枝后速度達(dá)到最優(yōu),在CPU下每秒能夠處理90幅圖像,相比剪枝前速度提升了兩倍,速度與準(zhǔn)確率均優(yōu)于精簡(jiǎn)網(wǎng)絡(luò)MobileNet v2,對(duì)CPU下的處理較為友好。
表2 不同算法實(shí)驗(yàn)效果對(duì)比
回歸偏差分布如圖7所示,使用的模型是“本文算法+剪枝”,從中統(tǒng)計(jì)得到,偏差的均值約為0.1,方差約為1.24,另外,除了極少部分異常樣本,大多數(shù)樣本的回歸偏差在容忍因子為1.5的忍受范圍內(nèi)。
圖7 回歸偏差分布
對(duì)于輸入的臍橙圖像,算法作出的預(yù)測(cè)如圖8所示。對(duì)于第三幅圖像,類別為花皮果,是不適合回歸的一類,因此其回歸標(biāo)注為空,同時(shí)忽略輸出的回歸值。
圖8 效果展示
針對(duì)臍橙實(shí)時(shí)分級(jí)任務(wù),本文提出一種基于通道剪枝和多任務(wù)的分級(jí)算法。該算法以高效CNN為模型結(jié)構(gòu)基礎(chǔ),結(jié)合通道剪枝讓模型變得更加緊湊,基于多任務(wù)的方式進(jìn)行分類與回歸的預(yù)測(cè)。設(shè)計(jì)加權(quán)損失函數(shù)超參數(shù)自適應(yīng)學(xué)習(xí)算法,讓模型的準(zhǔn)確性大大提高。通過分析實(shí)驗(yàn)結(jié)果發(fā)現(xiàn),剪枝可在降低2.37百分點(diǎn)準(zhǔn)確率的情況下,加快200%的推斷速度。該算法速度明顯優(yōu)于其他算法,通過損失函數(shù)權(quán)重的調(diào)節(jié),最優(yōu)的準(zhǔn)確率可達(dá)94.05%。