王紅君, 時揚揚*, 岳有軍, 趙 輝,2
(1.天津理工大學電氣電子工程學院, 天津市復雜控制理論與應(yīng)用重點實驗室, 天津 300384; 2.天津農(nóng)學院工程技術(shù)學院, 天津 300392)
隨著水產(chǎn)養(yǎng)殖業(yè)的快速發(fā)展,對水產(chǎn)品加工產(chǎn)生迫切需求。在魚初級處理加工生產(chǎn)線中,為了保證魚肉品種的新鮮度,在去除魚頭尾之前,需要先進行去除魚鰓的操作,其中魚鰓切口的準確定位甚為關(guān)鍵[1-2]。在早期的魚鰓加工定位中,通常采用圖像處理和統(tǒng)計模式識別方法來定位鮭魚鰓切割器的位置。Gamage等[3]提出了使用多元回歸的參考點估計魚鰓切割機的參考位置;Jain等[4]提出了一種智能傳感器融合技術(shù)在鮭魚機械加工自動化機器中實施;這些方法比較復雜,而且切割點定義不明確;Azarmdel等[5]根據(jù)鱒魚的體形特征提取鰭區(qū)域,然后將胸鰭的起點和尾鰭的終點分別作為鱒魚加工系統(tǒng)的頭部和腹部切割點,這種利用魚體外部輪廓提取特征的方法,容易受到魚體損傷程度的影響。
隨著圖像處理和深度學習技術(shù)的發(fā)展,采用機器視覺技術(shù)對淡水魚特定部位進行識別和定位成為可能。Bondo等[6]在三文魚的自動化生產(chǎn)線中使用3D攝像機掃描傳送帶,采用滑動窗口的方法對三維圖像進行分割,利用線性判別分析(linear discriminant analysis,LDA)分類器確定頭尾區(qū)域,沿著魚的縱向中心脊,以鼻點為起點,使用回歸公式定位切口點。在定位切口點的坐標過程中,魚鰓的定位精度受魚頭標注區(qū)域的影響,而且LDA在特征提取的過程中可能出現(xiàn)數(shù)據(jù)過擬合的現(xiàn)象;Issac等[7]提出采用基于計算機視覺的魚鰓自動分割方法鑒定魚的新鮮度,對輸入圖像進行顏色空間轉(zhuǎn)換。利用主動輪廓法對魚類圖像中屬于鰓部的像素進行分割,從顏色的空間飽和平面對鰓區(qū)域進行統(tǒng)計分析;Arora等[8]采用K均值聚類的方法對鰓組織自動分割,利用小波變換提取魚鰓特征,根據(jù)實驗得到的判別特征,建立統(tǒng)計小波系數(shù)與貯藏魚鮮度之間的關(guān)系。這些方法都是通過對鰓部區(qū)域顏色的統(tǒng)計分析得到魚的新鮮度關(guān)系,無法輸出魚鰓的位置坐標,不方便后續(xù)除鰓操作。參考其他目標的檢測定位,任意平等[9]采用目標檢測算法更快的卷積神經(jīng)網(wǎng)絡(luò)特征區(qū)域(faster convolutional neural network feature region,F(xiàn)aster RCNN)對圖像中的花蕊區(qū)域進行定位,縮小了識別范圍,提高了圖片識別的準確率;基于深度學習的目標檢測算法在識別精度和檢測速度方面表現(xiàn)突出,其中基于候選區(qū)域的目標檢測算法Faster RCNN不僅能夠輸出物體類別和對應(yīng)區(qū)域的目標框,而且還能標定物體質(zhì)心的坐標。為了實現(xiàn)魚鰓切口的準確檢測和定位,現(xiàn)采用改進的Faster RCNN對魚鰓切口進行檢測,在保證魚鰓切口獲得較高檢測準確率的同時,輸出切口包圍框中心點的坐標。
模型RCNN和Fast RCNN在網(wǎng)絡(luò)性能方面逐漸發(fā)展穩(wěn)定,Ren等[10]通過引入一個區(qū)域建議網(wǎng)絡(luò)(region proposal network,RPN),與檢測網(wǎng)絡(luò)共享完整的圖像卷積特征,進一步將RPN和Fast R-CNN合并成一個單獨的網(wǎng)絡(luò)Faster RCNN。該網(wǎng)絡(luò)主要由卷積層,區(qū)域建議網(wǎng)絡(luò),感興趣區(qū)域池化,分類回歸四部分組成,如圖1所示。卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural network,CNN)經(jīng)過卷積運算獲取輸入圖像的特征圖譜[11],這些提取到的特征送入后續(xù)區(qū)域建議網(wǎng)絡(luò)RPN和全連接層。區(qū)域建議網(wǎng)絡(luò)RPN通過softmax損失函數(shù)分類錨點是前景或背景,使用邊界框回歸調(diào)整錨點獲得準確的建議(proposals),以產(chǎn)生區(qū)域候選圖像塊。然后感興趣區(qū)域池化集合輸入的特征圖和候選目標區(qū)域信息,送入全連接層判斷輸出目標類別。最后的全連接層通過目標區(qū)域特征圖計算目標區(qū)域類別過程中,使用邊界框回歸來確定檢測目標的最后位置。
1.2.1 加入批歸一化
特征圖在送入RPN之前需要經(jīng)過基礎(chǔ)的conv+relu+pooling層提取候選圖像的特征,比較典型的特征提取網(wǎng)絡(luò)如VGG16和ResNet101(殘差網(wǎng)絡(luò))。VGG16與ResNet101相比,模型計算參數(shù)量比較少,而且訓練速度快。另外從數(shù)據(jù)集的角度考慮,本文使用的訓練數(shù)據(jù)與ResNet模型預訓練使用的數(shù)據(jù)集分布不同,可能導致訓練出現(xiàn)數(shù)據(jù)過擬合的現(xiàn)象。綜合以上情況,選擇VGG16作為Faster RCNN模型的特征提取網(wǎng)絡(luò)。
VGG16網(wǎng)絡(luò)的結(jié)構(gòu)均使用了同樣大小的卷積核尺寸和最大池化,其中卷積層具有特征提取的作用。卷積核相當于一個過濾器在特征圖上進行滑動,提取需要的特征。池化是收集卷積層提取的各個位置特征圖譜,使用這個區(qū)域的最大值和平均值作為區(qū)域特征代表,也稱為特征降維,用于壓縮數(shù)據(jù)和參數(shù)的數(shù)量。在神經(jīng)網(wǎng)絡(luò)訓練過程中,首先對輸入層數(shù)據(jù)進行人為的歸一化處理,比如使用矩陣乘法或者進行非線性運算[12]。前面層帶來的訓練參數(shù)的更新會引起后面層輸入數(shù)據(jù)分布發(fā)生變化,并且隨著網(wǎng)絡(luò)層數(shù)的增多,前面層的微小改變在后面層的運算中會逐步累積放大。為了解決這個問題,特引入批歸一化的方法,即在卷積神經(jīng)網(wǎng)絡(luò)的每一個卷積層之后,激活函數(shù)之前插入批量歸一化(batch normalization, BN)層,如圖2所示。
圖2 VGG16網(wǎng)絡(luò)結(jié)構(gòu)加入批歸一化Fig.2 VGG16 network structure added to the BN layer
經(jīng)過卷積運算之后,每一層的激活值進行歸一化映射到方差為1,均值為0的區(qū)域,從而也解決了梯度彌散。經(jīng)過BN層的訓練數(shù)據(jù)具有相同的0~1范圍分布,也使得網(wǎng)絡(luò)在每次迭代時省去了適應(yīng)不同分布的時間,提高了網(wǎng)絡(luò)的訓練速度。BN的算法原理如下。
輸入層數(shù)據(jù)為m個樣本:x1,x2,…,xm,輸入數(shù)據(jù)的均值μ的表達式為
(1)
輸入數(shù)據(jù)的方差可表示為
(2)
對樣本數(shù)據(jù)標準化處理,可表示為
(3)
引入可學習重構(gòu)參數(shù),通過平移和縮放處理,使網(wǎng)絡(luò)可以學習恢復出原始網(wǎng)絡(luò)所要學習的特征分布,可表示為
yi=γixi+βi
(4)
(5)
βi=E[xi]
(6)
1.2.2 非極大值抑制算法的改進
區(qū)域候選網(wǎng)絡(luò)RPN提取出的在相鄰位置上有很多相似但是位置不那么精確的候選框[13],增加了檢測的誤檢率,所以使用非極大值抑制(non-maximum suppression,NMS)算法[14]消除多余的候選框。首先設(shè)定檢測框的置信度閾值,通過置信度對候選框降序排列列表。選取置信度最高的檢測框 添加到輸出列表,并將其從候選框列表中剔除。計算與候選框列表中所有框的 值,將超過閾值的候選框丟棄。經(jīng)過n次迭代,候選框列表的數(shù)據(jù)個數(shù)為零,此時返回輸出列表。假設(shè)M和N為RPN網(wǎng)絡(luò)生成的檢測框,通過計算相鄰邊框的重合度(IOU),將IOU大于預先設(shè)定閾值的檢測框剔除,其計算公式為
(7)
從幾何區(qū)域的角度也可以看作是檢測框M、N重疊的面積占M、N并集的面積比例,可表示為
(8)
式(8)中:S∩為檢測框M、N的重疊區(qū)域面積;SM為檢測框M的面積;SN為檢測框N的面積。
NMS算法的分數(shù)重置函數(shù)可表示為
(9)
式(9)中:Si為第i個檢測框的得分;X為得分最高的檢測框;Nt為自定義的置信度閾值。
根據(jù)邊框的置信度得分篩選掉一些相似的但是得分不高的邊框,增加檢測的效果。但是當一個真實的物體由于重疊等原因的影響,導致與相鄰的邊框重合度較高,此時的IOU大于設(shè)定的閾值,即使它本身的檢測分數(shù)也足夠高,也會被刪除,增加了漏檢率,如圖3所示。
圖3 NMS算法檢測Fig.3 NMS algorithm detection
圖3中兩條魚的檢測精度分別是0.95和0.80, 按照NMS算法,得分為0.80的檢測框置信度被置為0或0.4。所以在上面兩個檢測框的 大于設(shè)定的閾值情況下,導致只能輸出檢測框為0.95的魚,這樣魚目標檢測的召回率就被大大降低了。為了解決這一問題,使用Soft-NMS算法[15]替代NMS,對重疊程度超過重疊閾值Nt的重置函數(shù)進行改進,Soft-NMS的重置分數(shù)表達式為
(10)
對于目標框交叉部分,NMS算法將相鄰檢測框大小置為零,而Soft-NMS算法則利用衰減函數(shù)處理。即如果一個檢測框與X有大部分重疊,它就會有很低的分數(shù)。而如果檢測框與X只有小部分重疊,那么它原有檢測分數(shù)不會受太大影響。
實驗均在Unbantu 18.04的操作系統(tǒng)下進行,使用Python3.5編碼語言開發(fā),基于tensorflow學習平臺,在訓練和測試過程中使用CUDA和CUDNN加快模型計算速度。訓練用的服務(wù)器配備64G運行內(nèi)存、48個intel Xeon CPU、2張GeForce GTX 1080Ti 顯卡以及4塊2 T機械硬盤。
實驗中,為了測試改進的網(wǎng)絡(luò)對于魚鰓識別的多樣性和定位的準確性,選取鯉魚、鯽魚,鰱魚、鳊魚、草魚等多種淡水魚作為研究對象,共收集不同種類和不同數(shù)量的淡水魚圖片2 000張,其中訓練集圖片數(shù)量是1 600張,測試集和驗證集均為200張。統(tǒng)一將數(shù)據(jù)集中的圖片分辨率設(shè)置為500像素×375像素,按照Pascal_VOC2007數(shù)據(jù)集的格式對獲取的訓練樣本和測試樣本進行相應(yīng)的轉(zhuǎn)換工作?;谏疃葘W習的目標檢測模型進行訓練時,需要大量帶有標注的樣本,為了提高Faster RCNN網(wǎng)絡(luò)對魚鰓位置定位的準確性,采用labelImg圖像標注軟件對數(shù)據(jù)集進行標注和存儲。在訓練樣本標注過程中,矩形框?qū)蔷€的2/3部分始終經(jīng)過鰓切口位置,這樣就確保矩形的中心點不會超過魚鰓部分,提高了定位的準確度。
網(wǎng)絡(luò)在訓練中,批處理數(shù)量設(shè)置為128,動量因子為0.9,迭代次數(shù)20 000,設(shè)置初始學習率為0.001, 正則項系數(shù)為0.000 1,學習率衰減系數(shù)γ為0.1?;诩尤隑N層的VGG16基礎(chǔ)特征提取網(wǎng)絡(luò),在后處理中用Soft-NMS算法替代NMS算法,最后輸出魚鰓切口的檢測框和其的坐標。
2.4.1 模型評價指標
為證明本文方法的優(yōu)勢,設(shè)置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表示實際目標為魚鰓切口,網(wǎng)絡(luò)模型預測結(jié)果也是魚鰓切口的樣本個數(shù);FP表示實際為背景,卻被網(wǎng)絡(luò)模型預測為魚鰓切口的樣本;FN表示實際為魚鰓切口,但網(wǎng)絡(luò)沒有識別出來的樣本個數(shù),實驗結(jié)果如表1所示。
表1 不同模型檢測效果對比
從表1可以看出,在網(wǎng)絡(luò)迭代次數(shù)等條件相同的情況下,相對于原始網(wǎng)絡(luò)模型,單獨加入批歸一化的模型2明顯提高了魚鰓切口檢測的準確率和F1值,證明了批歸一化的有效性。同樣,單獨改進非極大值抑制算法的模型3,相較于原始網(wǎng)絡(luò)模型,也提升了切口檢測的準確率和F1值。當同時使用兩種方法時,相比于原始網(wǎng)絡(luò)模型和改進方法單獨使用的模型,模型4顯著提高了切口檢測的準確率和F1值,證明了相對于原始網(wǎng)絡(luò)模型改進方法的有效性。
2.4.2 損失函數(shù)曲線
不同模型的損失函數(shù)變化曲線如圖4所示,經(jīng)過20 000次迭代訓練,可以看出,模型1即原始的Faster RCNN網(wǎng)絡(luò),在訓練過程中出現(xiàn)損失函數(shù)發(fā)散的現(xiàn)象,曲線波動較大。模型2中加入了批歸一化,增強了VGG16的特征提取能力,有效減少了數(shù)據(jù)的過擬合,所以損失函數(shù)曲線相對模型1平穩(wěn)。模型3改進了非極大值抑制算法,提高了目標檢測的準確度,損失函數(shù)值小于模型1和模型2。而模型4與其他3個模型相比,同時使用兩種方法,損失函數(shù)波動幅度較小,并且較早的達到平穩(wěn)狀態(tài),說明本文改進方法有效提高了網(wǎng)絡(luò)性能。
圖4 不同模型損失函數(shù)曲線Fig.4 Different model loss function curves
2.4.3 改進的網(wǎng)絡(luò)測試效果
為了更加直觀地展示本文方法的效果,選取了部分圖片分別送入4個網(wǎng)絡(luò)模型中測試。魚產(chǎn)品加工過程中,攝像機采集的圖像有兩種,一種是圖像中只包括單條魚,另一種是圖像中有多條魚。圖像中的紅色矩形框表示網(wǎng)絡(luò)檢測到的魚鰓切口區(qū)域,將檢測框的中心點作為魚鰓切口點,用“·”標記,如圖5、圖6所示。
圖5 4種網(wǎng)絡(luò)模型對單條魚檢測效果對比Fig.5 Comparison of the detection effects of four network models on a single fish
圖6 4種網(wǎng)絡(luò)模型對多條魚檢測效果對比Fig.6 Comparison of the detection effects of four network models on multiple fish
從圖5可以看出,當圖片中只有單條魚時,4個網(wǎng)絡(luò)模型都能識別魚鰓區(qū)域。但是原始的網(wǎng)絡(luò)模型1出現(xiàn)魚鰓切口誤檢的情況,單獨使用一種改進方法的模型2和模型3的魚鰓檢測框中心點也偏離切口點。同時使用兩種改進方法的模型4對魚鰓切口定位的準確率最高,而且檢測框的中心點距離魚鰓切口最近,說明改進的網(wǎng)絡(luò)能較好地滿足魚鰓切口點精準定位的要求。
從圖6可以看出,當魚鰓切口比較密集時,與模型1和模型2相比,同時加入批歸一化層和改進非極大值抑制算法的模型4可以全部檢測出圖中的魚鰓切口,與模型3相比提高了魚鰓切口檢測的準確率。表明本文算法提高了Faster RCNN網(wǎng)絡(luò)檢測同一類物體的精度。
為了提高魚鰓切口檢測和定位精度,在Faster RCNN網(wǎng)絡(luò)的基礎(chǔ)上進行改進。通過在VGG16特征提取網(wǎng)絡(luò)上添加歸一化層,提高了目標識別的準確度。采用Soft-NMS算法替代NMS算法,有效改善魚鰓切口漏檢的問題。最后收集大量樣本進行標注,送入改進后的檢測網(wǎng)絡(luò)自主提取目標特征進行訓練,避免了魚體損傷和魚鰓外部輪廓遮擋帶來的影響。與未改進的Faster RCNN網(wǎng)絡(luò)相比,目標檢測和定位的準確率提高了近6%。訓練后的網(wǎng)絡(luò)不僅能輸出魚鰓切口檢測框,而且定位了切口點,為后續(xù)生產(chǎn)過程中使用機器人剔除魚鰓提供了位置信息。