王紅君, 時揚揚*, 岳有軍, 趙 輝,2
(1.天津理工大學電氣電子工程學院, 天津市復雜控制理論與應用重點實驗室, 天津 300384; 2.天津農學院工程技術學院, 天津 300392)
隨著水產養殖業的快速發展,對水產品加工產生迫切需求。在魚初級處理加工生產線中,為了保證魚肉品種的新鮮度,在去除魚頭尾之前,需要先進行去除魚鰓的操作,其中魚鰓切口的準確定位甚為關鍵[1-2]。在早期的魚鰓加工定位中,通常采用圖像處理和統計模式識別方法來定位鮭魚鰓切割器的位置。Gamage等[3]提出了使用多元回歸的參考點估計魚鰓切割機的參考位置;Jain等[4]提出了一種智能傳感器融合技術在鮭魚機械加工自動化機器中實施;這些方法比較復雜,而且切割點定義不明確;Azarmdel等[5]根據鱒魚的體形特征提取鰭區域,然后將胸鰭的起點和尾鰭的終點分別作為鱒魚加工系統的頭部和腹部切割點,這種利用魚體外部輪廓提取特征的方法,容易受到魚體損傷程度的影響。
隨著圖像處理和深度學習技術的發展,采用機器視覺技術對淡水魚特定部位進行識別和定位成為可能。Bondo等[6]在三文魚的自動化生產線中使用3D攝像機掃描傳送帶,采用滑動窗口的方法對三維圖像進行分割,利用線性判別分析(linear discriminant analysis,LDA)分類器確定頭尾區域,沿著魚的縱向中心脊,以鼻點為起點,使用回歸公式定位切口點。在定位切口點的坐標過程中,魚鰓的定位精度受魚頭標注區域的影響,而且LDA在特征提取的過程中可能出現數據過擬合的現象;Issac等[7]提出采用基于計算機視覺的魚鰓自動分割方法鑒定魚的新鮮度,對輸入圖像進行顏色空間轉換。利用主動輪廓法對魚類圖像中屬于鰓部的像素進行分割,從顏色的空間飽和平面對鰓區域進行統計分析;Arora等[8]采用K均值聚類的方法對鰓組織自動分割,利用小波變換提取魚鰓特征,根據實驗得到的判別特征,建立統計小波系數與貯藏魚鮮度之間的關系。這些方法都是通過對鰓部區域顏色的統計分析得到魚的新鮮度關系,無法輸出魚鰓的位置坐標,不方便后續除鰓操作。參考其他目標的檢測定位,任意平等[9]采用目標檢測算法更快的卷積神經網絡特征區域(faster convolutional neural network feature region,Faster RCNN)對圖像中的花蕊區域進行定位,縮小了識別范圍,提高了圖片識別的準確率;基于深度學習的目標檢測算法在識別精度和檢測速度方面表現突出,其中基于候選區域的目標檢測算法Faster RCNN不僅能夠輸出物體類別和對應區域的目標框,而且還能標定物體質心的坐標。為了實現魚鰓切口的準確檢測和定位,現采用改進的Faster RCNN對魚鰓切口進行檢測,在保證魚鰓切口獲得較高檢測準確率的同時,輸出切口包圍框中心點的坐標。
模型RCNN和Fast RCNN在網絡性能方面逐漸發展穩定,Ren等[10]通過引入一個區域建議網絡(region proposal network,RPN),與檢測網絡共享完整的圖像卷積特征,進一步將RPN和Fast R-CNN合并成一個單獨的網絡Faster RCNN。該網絡主要由卷積層,區域建議網絡,感興趣區域池化,分類回歸四部分組成,如圖1所示。卷積神經網絡(convolutional neural network,CNN)經過卷積運算獲取輸入圖像的特征圖譜[11],這些提取到的特征送入后續區域建議網絡RPN和全連接層。區域建議網絡RPN通過softmax損失函數分類錨點是前景或背景,使用邊界框回歸調整錨點獲得準確的建議(proposals),以產生區域候選圖像塊。然后感興趣區域池化集合輸入的特征圖和候選目標區域信息,送入全連接層判斷輸出目標類別。最后的全連接層通過目標區域特征圖計算目標區域類別過程中,使用邊界框回歸來確定檢測目標的最后位置。
1.2.1 加入批歸一化
特征圖在送入RPN之前需要經過基礎的conv+relu+pooling層提取候選圖像的特征,比較典型的特征提取網絡如VGG16和ResNet101(殘差網絡)。VGG16與ResNet101相比,模型計算參數量比較少,而且訓練速度快。另外從數據集的角度考慮,本文使用的訓練數據與ResNet模型預訓練使用的數據集分布不同,可能導致訓練出現數據過擬合的現象。綜合以上情況,選擇VGG16作為Faster RCNN模型的特征提取網絡。
VGG16網絡的結構均使用了同樣大小的卷積核尺寸和最大池化,其中卷積層具有特征提取的作用。卷積核相當于一個過濾器在特征圖上進行滑動,提取需要的特征。池化是收集卷積層提取的各個位置特征圖譜,使用這個區域的最大值和平均值作為區域特征代表,也稱為特征降維,用于壓縮數據和參數的數量。在神經網絡訓練過程中,首先對輸入層數據進行人為的歸一化處理,比如使用矩陣乘法或者進行非線性運算[12]。前面層帶來的訓練參數的更新會引起后面層輸入數據分布發生變化,并且隨著網絡層數的增多,前面層的微小改變在后面層的運算中會逐步累積放大。為了解決這個問題,特引入批歸一化的方法,即在卷積神經網絡的每一個卷積層之后,激活函數之前插入批量歸一化(batch normalization, BN)層,如圖2所示。

圖2 VGG16網絡結構加入批歸一化Fig.2 VGG16 network structure added to the BN layer
經過卷積運算之后,每一層的激活值進行歸一化映射到方差為1,均值為0的區域,從而也解決了梯度彌散。經過BN層的訓練數據具有相同的0~1范圍分布,也使得網絡在每次迭代時省去了適應不同分布的時間,提高了網絡的訓練速度。BN的算法原理如下。
輸入層數據為m個樣本:x1,x2,…,xm,輸入數據的均值μ的表達式為

(1)
輸入數據的方差可表示為

(2)
對樣本數據標準化處理,可表示為

(3)
引入可學習重構參數,通過平移和縮放處理,使網絡可以學習恢復出原始網絡所要學習的特征分布,可表示為
yi=γixi+βi
(4)

(5)
βi=E[xi]
(6)

1.2.2 非極大值抑制算法的改進
區域候選網絡RPN提取出的在相鄰位置上有很多相似但是位置不那么精確的候選框[13],增加了檢測的誤檢率,所以使用非極大值抑制(non-maximum suppression,NMS)算法[14]消除多余的候選框。首先設定檢測框的置信度閾值,通過置信度對候選框降序排列列表。選取置信度最高的檢測框 添加到輸出列表,并將其從候選框列表中剔除。計算與候選框列表中所有框的 值,將超過閾值的候選框丟棄。經過n次迭代,候選框列表的數據個數為零,此時返回輸出列表。假設M和N為RPN網絡生成的檢測框,通過計算相鄰邊框的重合度(IOU),將IOU大于預先設定閾值的檢測框剔除,其計算公式為

(7)
從幾何區域的角度也可以看作是檢測框M、N重疊的面積占M、N并集的面積比例,可表示為

(8)
式(8)中:S∩為檢測框M、N的重疊區域面積;SM為檢測框M的面積;SN為檢測框N的面積。
NMS算法的分數重置函數可表示為

(9)
式(9)中:Si為第i個檢測框的得分;X為得分最高的檢測框;Nt為自定義的置信度閾值。
根據邊框的置信度得分篩選掉一些相似的但是得分不高的邊框,增加檢測的效果。但是當一個真實的物體由于重疊等原因的影響,導致與相鄰的邊框重合度較高,此時的IOU大于設定的閾值,即使它本身的檢測分數也足夠高,也會被刪除,增加了漏檢率,如圖3所示。

圖3 NMS算法檢測Fig.3 NMS algorithm detection
圖3中兩條魚的檢測精度分別是0.95和0.80, 按照NMS算法,得分為0.80的檢測框置信度被置為0或0.4。所以在上面兩個檢測框的 大于設定的閾值情況下,導致只能輸出檢測框為0.95的魚,這樣魚目標檢測的召回率就被大大降低了。為了解決這一問題,使用Soft-NMS算法[15]替代NMS,對重疊程度超過重疊閾值Nt的重置函數進行改進,Soft-NMS的重置分數表達式為

(10)
對于目標框交叉部分,NMS算法將相鄰檢測框大小置為零,而Soft-NMS算法則利用衰減函數處理。即如果一個檢測框與X有大部分重疊,它就會有很低的分數。而如果檢測框與X只有小部分重疊,那么它原有檢測分數不會受太大影響。
實驗均在Unbantu 18.04的操作系統下進行,使用Python3.5編碼語言開發,基于tensorflow學習平臺,在訓練和測試過程中使用CUDA和CUDNN加快模型計算速度。訓練用的服務器配備64G運行內存、48個intel Xeon CPU、2張GeForce GTX 1080Ti 顯卡以及4塊2 T機械硬盤。
實驗中,為了測試改進的網絡對于魚鰓識別的多樣性和定位的準確性,選取鯉魚、鯽魚,鰱魚、鳊魚、草魚等多種淡水魚作為研究對象,共收集不同種類和不同數量的淡水魚圖片2 000張,其中訓練集圖片數量是1 600張,測試集和驗證集均為200張。統一將數據集中的圖片分辨率設置為500像素×375像素,按照Pascal_VOC2007數據集的格式對獲取的訓練樣本和測試樣本進行相應的轉換工作。基于深度學習的目標檢測模型進行訓練時,需要大量帶有標注的樣本,為了提高Faster RCNN網絡對魚鰓位置定位的準確性,采用labelImg圖像標注軟件對數據集進行標注和存儲。在訓練樣本標注過程中,矩形框對角線的2/3部分始終經過鰓切口位置,這樣就確保矩形的中心點不會超過魚鰓部分,提高了定位的準確度。
網絡在訓練中,批處理數量設置為128,動量因子為0.9,迭代次數20 000,設置初始學習率為0.001, 正則項系數為0.000 1,學習率衰減系數γ為0.1。基于加入BN層的VGG16基礎特征提取網絡,在后處理中用Soft-NMS算法替代NMS算法,最后輸出魚鰓切口的檢測框和其的坐標。
2.4.1 模型評價指標
為證明本文方法的優勢,設置4組對照實驗,分別是模型1:原始 Faster RCNN;模型2:單獨加入批歸一化的 Faster RCNN;模型3:單獨改進非極大值抑制算法的 Faster RCNN;模型4:同時加入批歸一化和改進非極大值抑制算法的 Faster RCNN。模型的評價指標選擇目標檢測中常用的準確率(precision,P)、召回率(recall,R)和F1, 分別定義為
P=TP/(TP+FP)
(11)
R=TP/(TP+FN)
(12)
F1=(2PR)/(P+R)
(13)
式中:TP表示實際目標為魚鰓切口,網絡模型預測結果也是魚鰓切口的樣本個數;FP表示實際為背景,卻被網絡模型預測為魚鰓切口的樣本;FN表示實際為魚鰓切口,但網絡沒有識別出來的樣本個數,實驗結果如表1所示。

表1 不同模型檢測效果對比
從表1可以看出,在網絡迭代次數等條件相同的情況下,相對于原始網絡模型,單獨加入批歸一化的模型2明顯提高了魚鰓切口檢測的準確率和F1值,證明了批歸一化的有效性。同樣,單獨改進非極大值抑制算法的模型3,相較于原始網絡模型,也提升了切口檢測的準確率和F1值。當同時使用兩種方法時,相比于原始網絡模型和改進方法單獨使用的模型,模型4顯著提高了切口檢測的準確率和F1值,證明了相對于原始網絡模型改進方法的有效性。
2.4.2 損失函數曲線
不同模型的損失函數變化曲線如圖4所示,經過20 000次迭代訓練,可以看出,模型1即原始的Faster RCNN網絡,在訓練過程中出現損失函數發散的現象,曲線波動較大。模型2中加入了批歸一化,增強了VGG16的特征提取能力,有效減少了數據的過擬合,所以損失函數曲線相對模型1平穩。模型3改進了非極大值抑制算法,提高了目標檢測的準確度,損失函數值小于模型1和模型2。而模型4與其他3個模型相比,同時使用兩種方法,損失函數波動幅度較小,并且較早的達到平穩狀態,說明本文改進方法有效提高了網絡性能。

圖4 不同模型損失函數曲線Fig.4 Different model loss function curves
2.4.3 改進的網絡測試效果
為了更加直觀地展示本文方法的效果,選取了部分圖片分別送入4個網絡模型中測試。魚產品加工過程中,攝像機采集的圖像有兩種,一種是圖像中只包括單條魚,另一種是圖像中有多條魚。圖像中的紅色矩形框表示網絡檢測到的魚鰓切口區域,將檢測框的中心點作為魚鰓切口點,用“·”標記,如圖5、圖6所示。

圖5 4種網絡模型對單條魚檢測效果對比Fig.5 Comparison of the detection effects of four network models on a single fish

圖6 4種網絡模型對多條魚檢測效果對比Fig.6 Comparison of the detection effects of four network models on multiple fish
從圖5可以看出,當圖片中只有單條魚時,4個網絡模型都能識別魚鰓區域。但是原始的網絡模型1出現魚鰓切口誤檢的情況,單獨使用一種改進方法的模型2和模型3的魚鰓檢測框中心點也偏離切口點。同時使用兩種改進方法的模型4對魚鰓切口定位的準確率最高,而且檢測框的中心點距離魚鰓切口最近,說明改進的網絡能較好地滿足魚鰓切口點精準定位的要求。
從圖6可以看出,當魚鰓切口比較密集時,與模型1和模型2相比,同時加入批歸一化層和改進非極大值抑制算法的模型4可以全部檢測出圖中的魚鰓切口,與模型3相比提高了魚鰓切口檢測的準確率。表明本文算法提高了Faster RCNN網絡檢測同一類物體的精度。
為了提高魚鰓切口檢測和定位精度,在Faster RCNN網絡的基礎上進行改進。通過在VGG16特征提取網絡上添加歸一化層,提高了目標識別的準確度。采用Soft-NMS算法替代NMS算法,有效改善魚鰓切口漏檢的問題。最后收集大量樣本進行標注,送入改進后的檢測網絡自主提取目標特征進行訓練,避免了魚體損傷和魚鰓外部輪廓遮擋帶來的影響。與未改進的Faster RCNN網絡相比,目標檢測和定位的準確率提高了近6%。訓練后的網絡不僅能輸出魚鰓切口檢測框,而且定位了切口點,為后續生產過程中使用機器人剔除魚鰓提供了位置信息。