李振權 李功燕
1(中國科學院大學微電子學院 北京 100049)2(中國科學院微電子研究所 北京 100029)
我國是臍橙生產大國,臍橙表面瑕疵是影響臍橙銷售的重要因素。臍橙自動分級的流程主要是:(1) 用高速相機在線采集臍橙圖像;(2) 實時處理圖像,得到臍橙所屬類別;(3) 控制設備將臍橙送入相應的分類倉庫。目前我國臍橙自動分級檢測存在正確識別率低、實時性不強等缺點,部分工業現場仍采用人工方式進行分級。因此尋找高效、合適的臍橙品質分級算法對農機設備智能化、臍橙分級全自動化有著重要的意義,能夠有效地促進臍橙產業的發展,極大提高臍橙生產力。隨著計算機技術的發展與應用,國內外對圖像處理在農業生產中的應用進行了較深入研究,越來越多的臍橙分類算法被提出,主要分為傳統的數字圖像處理與深度學習兩類算法。文獻[1]采用多特征量向量對研究對象進行分級檢測,取得了較高的識別率,但因考慮的特征量過多,而降低了系統的實時性。文獻[2]提出一種基于前饋神經網絡的混合算法進行水果分類,然而這種算法的精度上有所欠缺,適應性也不夠強。文獻[3]直接采用卷積神經網絡對臍橙進行分類,人工標注臍橙類別,不能適應不同客戶的需求。文獻[4]采用基于深度學習目標檢測的方法檢測臍橙瑕疵、果梗和臍部,然而目標檢測框架較大,耗時長,并且需要后處理讓其應用于分類等場合。
本文以臍橙快速、準確分級為目標,設計高效的神經網絡模型結構,提出多任務即分類與回歸的方式提升分級效果,利用通道剪枝的方式對算法進行優化,以提高現有算法的準確度和速度。
圖 1所示是一套臍橙分級系統設備。其機器視覺部分主要由高分辨率工業相機,光電開關,LED光源和帶滾輪的傳送帶組成,其中高分辨率工業相機和光電開關用于控制圖像捕獲。相機的分辨率為1 280×1 024,幀率為60幀/s。為了獲取整個臍橙的表面信息,當相機捕捉圖像時,臍橙在傳送的過程中與滾筒一起旋轉。

圖1 臍橙在線分級
果梗、臍部與瑕疵具有相似的特征,數據采集時,橢球形的臍橙橫置擺放,因此拍攝的圖像中,果梗和臍部出現的樣本數所占比例比較低。數據的不平衡以及樣本種類的不夠豐富,往往讓神經網絡的擬合出現偏差。為了緩解以上問題,本文通過采樣的方式,從總體數據集抽取訓練樣本時,對果梗和臍部特征明顯的樣本置以更大的概率,并隨機旋轉重復抽樣的圖像。
分類信息如圖2所示,其中:(a) 代表花皮果,表示可以直接分類,標注為1,忽略輸出的回歸值;(b) 代表普通果,標注為0,表示需要根據回歸值輸出的瑕疵占比進行分類。

圖2 兩類典型臍橙圖
文獻[5]提出用深度卷積和點乘卷積代替傳統的全通道卷積。深度卷積是分組數等于通道數的分組卷積,只融合卷積核大小的圖像鄰域內的信息,不融合通道間的信息。點乘卷積的卷積核尺寸大小為1×1,只用于融合所有通道間的信息。文獻[6]提出了高效CNN設計的思路,作者通過理論證明和實驗發現:(1) 同等計算量下輸入通道數與輸出通道數相同能減少MAC(內存訪問代價);(2) 組卷積分組數越多,MAC越大;(3) 多分支結構減小并行性;(4) 元素級別的操作開銷也很耗時,包括張量相加、ReLU和加偏置值等操作。
該算法基于以上準則設計神經網絡結構。模型的構造使用模塊化的方法,主體部分由兩個模塊以一定的數目堆積而成,稱為特征提取模塊和下采樣模塊,如圖3所示。每個特征提取模塊與下采樣模塊均有3層,表1所示即為模型結構的詳細設置,總層數為29。

(a) 特征提取模塊 (b) 下采樣模塊圖3 模型結構

表1 模型結構
特征提取模塊如圖3(a)所示,DWConv代表深度卷積。先進行通道分離,一半的通道通過三個卷積層輸出與不進行任何操作的另一半堆疊在一起,再進行通道混洗。三個卷積層輸入通道數均等于輸出通道數,讓MAC最小。通道分離操作有兩個好處:一是能夠讓淺層的特征能夠被網絡深層所利用,特征重用考慮了深層特征與淺層特征之間的聯系,能夠更好地進行特征的表示;二是減少卷積操作,壓縮了網絡的計算量。緊跟著通道混洗操作,以保證分支左側的特征通道能在之后進行卷積操作。下采樣模塊承擔全通道信息融合和特征圖尺寸減小的功能,如圖3(b)所示,有兩層卷積,第一層用于全通道融合,第二層卷積進行通道的擴展,最后一個最大池化將特征圖尺寸減小。
損失函數由分類損失和回歸損失兩部分構成。針對臍橙分級任務,分類與回歸的難易程度并不相同,本文使用自適應的加權損失函數:
(1)
(2)
loss=lossc+α×lossr
(3)
式(1)為交叉熵損失函數,用于分類;式(2)為均方誤差,作為回歸損失函數,只有當類別標注為0時,才計算它,因此只有部分樣本擁有回歸損失;式(3)即為整個模型的損失函數,其中α為超參數,通過給回歸損失加權,控制誤差反向傳播與權重的更新,從而影響模型擬合訓練數據分布的傾向性。若模型分類表現較好,而回歸表現差,則加大回歸損失權重,反之亦然。
超參數α由模型訓練時自動學習得到,形成自適應加權損失函數,具體做法是:先初始化α,模型訓練部分周期后,加入驗證集,評判當前損失函數下的模型在驗證集上分類和回歸的表現,當且僅當分類準確度沒有下降并且回歸的性能提升時,α增大一個步長(實驗設置為0.1),如果分類準確性下降,則α減小一個步長。之后每三個周期進行一次驗證集評判與α更新,讓最終的模型在分類與回歸任務上同時表現良好。其中,回歸性能以均方誤差作為評判標準,如式(4)所示。在驗證集下,如果模型能夠在保證分類誤差的前提下盡可能提升回歸性能,那么其將有最佳的泛化性能。
(4)
以式(4)作為α自適應學習的回歸性能判斷準則主要有兩個因素:一是S對應模型訓練時的損失函數中的回歸損失,符合優化目標;二是防止過擬合。展開式(4)得到式(5),從左至右分別為方差、噪音和偏差的平方。若方差太大,預示模型可能發生過擬合,偏差太大則可能欠擬合,以S作為判別準則考慮了偏差和方差的綜合最優情況。
S=E[(f(x)-y)2]=
E[(f(x))2]+E(y2)-2E(y)E(f(x))=
(5)
CNN加速的研究對模型在實際應用中的部署有著重要意義,其中結構簡化與緊湊是主要方法之一。文獻[7-8]采用權重張量分解將原卷積操作變成小卷積的疊加,但是對于1×1的卷積操作卻很難應用。文獻[9]提出網絡稀疏連接的方法,但是模型推斷耗時主要在卷積層,參數量主要在速度較快的全連接層,因此不僅加速效果一般,而且稀疏造成的不規則結構對算法實現不友好。文獻[10-12]采用通道剪枝的方法,去除冗余的特征圖通道,從理論和實際上讓模型結構變得更窄,實現加速效果。
本文通過通道剪枝對模型進行優化,首先對表1中編號為2、3和4的下采樣模塊中的卷積層分別進行局部剪枝,固定除剪枝層外的其他參數,微調模型,觀察其通道冗余程度。然后對模型進行全局剪枝,得到最終的緊湊網絡。總體的模型優化步驟如圖4所示。

圖4 剪枝流程
把每個卷積核參數的l1范數[10]作為剪枝優先的依據,其值越小,證明前向傳播的信息量越小,對應的通道的重要性越低,剪枝的優先級越高。當剪枝層后的一層為正常卷積時,假設初始的輸入層的通道數為M,輸出層通道為N,再下一層通道數為S,則初始卷積核的維度分別為(k,k,M,N)和(k,k,N,S)。剪枝將輸出通道數N減小為N′,此時由于后一層的輸入通道數減少,其每個卷積核的對應維度也會減小。因此卷積核大小變成了(k,k,M,N′)和(k,k,N′,S)。
當剪枝層后為圖3所示的特征提取模塊時,由于剪枝造成輸入此模塊的特征通道減少,為了保證通道分離左右兩支的通道數一致,以及整個模塊的輸入輸出通道數相等,剪枝將造成之后連續的特征提取模塊的改變,此時對應參數的保持十分困難,本文將重新初始化這些層的參數,并以更多的周期訓練剪枝后的網絡,觀察通道的冗余程度。
全局剪枝由局部剪枝結果確定。典型的通道剪枝都是保留重要參數并微調,文獻[13]指出,剪去神經網絡模型中的冗余通道可被看作網絡結構搜索過程,即使不保留重要的權重,從頭開始訓練,得到的結果與微調的方法無明顯差異。本文算法中全局剪枝是為了得到緊湊的結構,將隨機初始化權重并從頭訓練。
本實驗使用了3 875幅臍橙圖像作為數據集,其中3 186幅用作訓練集,353幅作為驗證集,336幅作為測試集。在配備GPU的服務器上訓練網絡,測試實驗包括CPU和GPU,CPU為56 Intel (R) Xeon(R) CPU E5-2683 v3 @ 2.00 GHz,GPU為NVIDIA TITAN Xp。在將圖像輸入網絡訓練之前,先進行數據預處理,包括:1) 將圖像分辨率統一轉換成128×128;2) 所有圖像做直方圖均衡,再將圖像隨機進行鏡像翻轉;3) 去均值歸一化。
為了衡量最終的算法效果,通過以下評價標準進行計算:
(6)

首先控制式(3)中的參數權重α與非剪枝層不變,對剪枝層單層進行剪枝實驗,例如編號2第一層卷積表示為2_1,每次剪枝完對當前模型進行微調,對于第2節所述的兩種不同層的剪枝,微調周期分別為10和20。
由圖5實驗結果發現,單層卷積通道存在極大的冗余,絕大部分通道剪枝50%以下時,準確率幾乎沒有損失,甚至出現了不降反升的現象。其中準確率下降最大的是2_1,當剪掉其90%的通道時,準確率由94.05%下降到84.82%,4_1剪去90%通道時,準確率僅僅下降到91.37%。還從實驗中發現,剪枝層越淺,對剪枝越敏感,準確率下降程度越大。

圖5 單層剪枝準確率變化
為驗證超參數α自適應學習的有效性,實驗將以21個不同的α值,控制訓練周期數相同,訓練21個模型,并在測試數據集上計算R1指標值,觀察不同的α值對應的模型的效果。α以1至3,間隔為0.1均勻取值,實驗結果如圖6所示。

圖6 不同α取值模型效果對比
R1指標的容忍因子比較小,更能反映模型對回歸和分類的平衡效果。分析實驗結果可知,α在2.0至2.5取值時效果比較好,等于2.3時R1指標達到最優,而繼續增大α不能繼續提升總體效果,因為回歸任務權重太大影響了分類任務準確性。超參數α的自適應學習過程可以被視為圖6中準確度曲線的峰值搜索過程,實驗證明了此方法的有效性。
根據剪枝實驗結果,可以確定模型剪枝后的最終結構。最終的通道數設置如表1所示,并通過隨機初始化重新訓練神經網絡。為了展現該算法在臍橙分級任務上的表現,將該算法與復雜度相近的模型在速度、R1和R1.5三個指標上進行比較,實驗結果如表2所示。從中發現,對于本文數據集,該算法在R1.5的準確率達到了94.05%的最優效果,在R1的準確率達到88.39%的最優效果,均好于傳統分類網絡vgg19和ResNet34。模型剪枝后速度達到最優,在CPU下每秒能夠處理90幅圖像,相比剪枝前速度提升了兩倍,速度與準確率均優于精簡網絡MobileNet v2,對CPU下的處理較為友好。

表2 不同算法實驗效果對比
回歸偏差分布如圖7所示,使用的模型是“本文算法+剪枝”,從中統計得到,偏差的均值約為0.1,方差約為1.24,另外,除了極少部分異常樣本,大多數樣本的回歸偏差在容忍因子為1.5的忍受范圍內。

圖7 回歸偏差分布
對于輸入的臍橙圖像,算法作出的預測如圖8所示。對于第三幅圖像,類別為花皮果,是不適合回歸的一類,因此其回歸標注為空,同時忽略輸出的回歸值。

圖8 效果展示
針對臍橙實時分級任務,本文提出一種基于通道剪枝和多任務的分級算法。該算法以高效CNN為模型結構基礎,結合通道剪枝讓模型變得更加緊湊,基于多任務的方式進行分類與回歸的預測。設計加權損失函數超參數自適應學習算法,讓模型的準確性大大提高。通過分析實驗結果發現,剪枝可在降低2.37百分點準確率的情況下,加快200%的推斷速度。該算法速度明顯優于其他算法,通過損失函數權重的調節,最優的準確率可達94.05%。