葉長文 康 睿 戚 超 劉 超 趙 陽 陳坤杰
(南京農(nóng)業(yè)大學(xué)工學(xué)院, 南京 210031)
電擊暈[1-3]是家禽家畜屠宰加工工序中的一個重要環(huán)節(jié)[4-6]。在電擊暈過程中,電壓過低,被擊暈的家禽在未到達宰殺工位前蘇醒,會因為受刺激而掙扎撲翅,導(dǎo)致斷翅和淤血的情況發(fā)生;電壓過高,易使家禽因電擊死亡,導(dǎo)致放血不充分,影響雞肉品質(zhì)[7-10]。因此,在宰前電擊暈時,恰當(dāng)?shù)妮敵鰠?shù)能夠提高雞肉的品質(zhì)[11]。目前,主要通過人工檢測肉雞的擊暈狀態(tài),手動調(diào)節(jié)電擊暈器的輸出電壓,以達到合理的擊暈效果。人工視覺判定方法依賴判定人員的感觀和經(jīng)驗,具有很強的主觀性,且檢測速度慢。
與人工檢驗相比,機器視覺技術(shù)具有非破壞性、成本低、速度快等特點[12]。文獻[13]使用圖像處理和神經(jīng)網(wǎng)絡(luò)識別6個不同的雞肉部分,總準(zhǔn)確識別率為97.57%。文獻[14]提出了一種基于機器視覺技術(shù)與BP神經(jīng)網(wǎng)絡(luò)相結(jié)合的肉雞擊暈狀態(tài)自動檢測方法,總準(zhǔn)確率為90.11%,準(zhǔn)確率有待提高。傳統(tǒng)機器視覺分類方法通常根據(jù)設(shè)定的特征提取規(guī)則提取多個特征用于訓(xùn)練分類模型,其弊端是造成有效信息的損失[15-16]。相比傳統(tǒng)方法,卷積神經(jīng)網(wǎng)絡(luò)(Convolutional neural network,CNN)[17]可以直接將原始圖像信息作為網(wǎng)絡(luò)的輸入,由卷積層訓(xùn)練數(shù)據(jù)進行特征學(xué)習(xí),充分提取有效信息,因此在圖像識別領(lǐng)域獲得了廣泛的應(yīng)用[18-21]。
本文以屠宰生產(chǎn)線上電擊暈環(huán)節(jié)的肉雞為研究對象,在線采集經(jīng)過電擊暈處理后肉雞的圖像信息,提出基于快速區(qū)域卷積神經(jīng)網(wǎng)絡(luò)(Faster region convolutional neural network, Faster-RCNN)的肉雞擊暈狀態(tài)檢測方法,對電擊暈環(huán)節(jié)肉雞的電擊暈效果進行檢測與識別,探究肉雞擊暈狀態(tài)在線檢測的可行性。
1.1.1樣本圖像采集
實驗所用樣本為白鹽城悅達農(nóng)業(yè)集團禽業(yè)科技有限公司(東臺)養(yǎng)殖的42日齡白羽肉雞。利用吳江安能電子科技有限公司的05系列變頻電麻機,采用水浴電擊暈方式,設(shè)定變頻電麻機輸出頻率為750 Hz,電擊時間為10 s,電壓分別為5、15、25 V,對肉雞進行電擊,用西安維視圖像公司的EM130C型CMOS相機采集了2 319幅240像素×320像素?fù)魰灪笕怆u樣本的圖像。部分樣本圖像如圖1所示。
圖1 采集的電擊處理肉雞樣本圖像Fig.1 Images of chicken sample collected by system
1.1.2擊暈狀態(tài)分類
文獻[22]提出,有效擊暈的肉雞呈現(xiàn)雙翅合攏緊貼于身體兩側(cè),雞頭與脖子僵挺的狀態(tài),若達不到此視覺上的表現(xiàn)形態(tài),則認(rèn)為沒有達到有效擊暈的要求。研究發(fā)現(xiàn)肉雞擊暈后的狀態(tài)可分為擊暈不足、有效擊暈與過度擊暈3種,如圖1所示。擊暈不足的肉雞(圖1a~1d)仍有意識,經(jīng)過電流刺激后會出現(xiàn)撲騰或雞頭抬起等表現(xiàn)形態(tài)。有效擊暈的肉雞(圖1e、1f)則失去意識,出現(xiàn)靜止不動、雙翅緊貼于身體兩側(cè)且雞頭自然垂下的表現(xiàn)形態(tài)。過度擊暈的肉雞(圖1g、1h)則失去意識,同時神經(jīng)失去對身體的控制,出現(xiàn)雞頭自然垂下,同時雙翅自然張開的表現(xiàn)形態(tài)。根據(jù)電擊處理后的表現(xiàn)狀態(tài),將肉雞擊暈狀態(tài)分為3類(a、b、c),如表1所示。根據(jù)表1,將采集的2 319幅樣本圖像按擊暈狀態(tài)類別進行標(biāo)注。
表1 擊暈狀態(tài)分類Tab.1 Stunning status classification
1.1.3數(shù)據(jù)集制作
采用labelImg圖像標(biāo)注工具按照PASCAL VOC數(shù)據(jù)集格式對2 319幅肉雞原始圖像中的雞頭與雞翅區(qū)域進行標(biāo)注,得到肉雞各擊暈狀態(tài)類別的數(shù)據(jù)集。將數(shù)據(jù)集按照2∶1的比例隨機分為訓(xùn)練集(1 546幅)與驗證集(773幅),由于訓(xùn)練數(shù)據(jù)集總體數(shù)量較小,為了防止訓(xùn)練出現(xiàn)過擬合問題,本文對訓(xùn)練集中樣本圖像分別旋轉(zhuǎn)0°、90°、180°、270°進行數(shù)據(jù)增強,得到6 184幅訓(xùn)練集樣本圖像。
1.2.1模型總體構(gòu)架
圖2 Faster-RCNN肉雞擊暈狀態(tài)分類模型網(wǎng)絡(luò)結(jié)構(gòu)示意圖Fig.2 Network structure diagram of Faster-RCNN stunning state classification model for broiler chickens
Faster-RCNN[23]肉雞擊暈狀態(tài)分類模型網(wǎng)絡(luò)結(jié)構(gòu)示意圖如圖2所示。分類模型主要由4部分構(gòu)成,分別為VGG16[24]基礎(chǔ)特征提取網(wǎng)絡(luò)部分、RPN[23]候選區(qū)域提取網(wǎng)絡(luò)部分、ROI Pooling[25]固定大小的候選區(qū)域的卷積特征圖提取部分和Softmax分類與邊框回歸部分。
1.2.2模型的輸入設(shè)計
網(wǎng)絡(luò)模型支持任意尺度的圖像輸入。設(shè)定歸一化后圖像尺寸均為224像素×224像素,經(jīng)過VGG16特征提取網(wǎng)絡(luò)可得到14像素×14像素的特征圖像。
1.2.3RPN參數(shù)設(shè)計
在RPN中,anchor參數(shù)需要與歸一化后圖像的尺寸匹配。本文使用在3種尺寸(482、962、1922)、3種比例(1∶1、1∶2、2∶1)下所得的9個anchors,完成對224像素×224像素圖像中肉雞的檢測。設(shè)定被看作正樣本的IoU值為0.7,將IoU最大的和IoU大于0.7的anchor作為正樣本,而IoU值小于0.3的歸為負(fù)樣本。在訓(xùn)練時,抽取正負(fù)樣本的總數(shù)為128個,比例為1∶1。在訓(xùn)練時,去除超出圖像邊緣的候選框,將超出范圍的anchor與原標(biāo)注框的IoU值置0。經(jīng)過非極大值抑制(NMS)后,對所剩的所有預(yù)測框按正標(biāo)簽IoU分值排序,選取前50個作為輸出。
1.2.4輸出層參數(shù)設(shè)計
肉雞擊暈狀態(tài)共有3類,加上1個背景類,因此,輸出層輸出的類別數(shù)設(shè)定為4。邊框回歸層輸出的參數(shù)為4×4=16(4種類別各自含有4個邊框坐標(biāo)參數(shù))。
1.2.5實驗平臺
實驗開發(fā)環(huán)境為:臺式計算機,256 GB的固態(tài)硬盤,CPU為Intel core i7 8700K,內(nèi)存為16 GB,主頻為3.4 GHz;GPU圖像加速處理器為GTX 1070Ti AERO,CUDA8.0并行計算框架,運行環(huán)境為Linux,版本為Ubuntu16.04,Python版本為2.7.12,采用CUDNN5.1版本的深度神經(jīng)網(wǎng)絡(luò)加速庫。在Caffe[26](Convolutional architecture for fast feature embedding)框架上開發(fā)。
1.2.6遷移學(xué)習(xí)
隨機初始化權(quán)值需要花費大量的時間將模型損失值收斂于穩(wěn)定值。遷移學(xué)習(xí)[27]能夠在數(shù)據(jù)集較小的情況下快速適應(yīng)新的任務(wù)。因此采用大數(shù)據(jù)集(ImageNet,1 000類、1×107幅圖像)下訓(xùn)練好的預(yù)訓(xùn)練模型,共享底層結(jié)構(gòu)權(quán)值參數(shù),然后修改模型的頂層網(wǎng)絡(luò)結(jié)構(gòu)進行微調(diào)。本文采用在ImageNet數(shù)據(jù)集上預(yù)訓(xùn)練的權(quán)重模型作為Faster-RCNN的初始權(quán)重模型。
1.2.7模型訓(xùn)練
本文采用交替優(yōu)化(Alternating optimization)[23]算法訓(xùn)練模型。訓(xùn)練的超參數(shù)為:初始學(xué)習(xí)率base_lr,取0.01;學(xué)習(xí)策略lr_policy選用step均勻分步策略;gamma是base_lr的衰減系數(shù),gamma用于計算迭代過程中學(xué)習(xí)率,取0.1;stepsize是base_lr的衰減步長,stepsize參數(shù)設(shè)置為5 000,當(dāng)?shù)降?個5 000次時,base_lr第1次衰減,衰減后的base_lr為0.001,以后重復(fù)該過程;display參數(shù)設(shè)置為20,表示每批處理20個圖像樣本;上一次梯度更新的權(quán)重值momentum,用于加速梯度下降,取0.9;權(quán)重衰減項weight_decay用于防止過擬合,取0.000 5;iteration為[20 000 20 000 20 000 20 000],分別對應(yīng)RPN第1階段、Fast-RCNN第1階段、RPN第2階段、Fast-RCNN第2階段的迭代次數(shù)。
1.2.8評價指標(biāo)
為對肉雞擊暈狀態(tài)分類模型的性能進行評價,選定召回率R(Recall)、精確度P(Precision)、F1測度F1(F1 score)和總準(zhǔn)確率Acc(Accuracy)作為模型預(yù)測性能的評價指標(biāo),其公式為
(1)
(2)
(3)
(4)
式中TP——真陽性(True positive),預(yù)測結(jié)果是某個類別中預(yù)測正確的樣本個數(shù)
FP——假陽性(False positive),預(yù)測結(jié)果是某個類別中預(yù)測錯誤的樣本個數(shù)
TN——真陰性(True negative),預(yù)測結(jié)果不是某個類別中預(yù)測正確的樣本個數(shù)
FN——假陰性(False negative),預(yù)測結(jié)果不是某個類別中預(yù)測錯誤的樣本個數(shù)
利用所建立的Faster-RCNN肉雞擊暈狀態(tài)分類模型對測試集的773幅肉雞測試樣本的擊暈狀態(tài)類別進行預(yù)測,其結(jié)果如表2所示。由表2可知,基于Faster-RCNN的肉雞擊暈狀態(tài)分類模型對類別a(擊暈不足)的預(yù)測召回率最高,達到97.21%,其原因可能是訓(xùn)練集中該類別樣本數(shù)大于其他兩個類別,使得召回率虛高。模型對類別b(有效擊暈)的預(yù)測召回率次之,為96.71%。;對類別c(過度擊暈)的預(yù)測召回率最低,為95.05%。
表2 Faster-RCNN肉雞擊暈狀態(tài)分類模型分類結(jié)果Tab.2 Classification result of broiler chickens’ stunning status of Faster-RCNN
就模型的總體分類性能而言,F(xiàn)aster-RCNN肉雞擊暈狀態(tài)分類模型對類別b(有效擊暈)的總體分類性能最佳(F1=97.40%),其原因可能是類別b的形態(tài)特征相較于其他兩個類別更易于區(qū)分。
基于Faster-RCNN的肉雞擊暈狀態(tài)分類模型預(yù)測的總準(zhǔn)確率達到96.51%,與文獻[14]中利用BP神經(jīng)網(wǎng)絡(luò)建立的分類模型的準(zhǔn)確率90.11%相比,準(zhǔn)確率提高了6.4個百分點,說明本文提出的基于Faster-RCNN的肉雞擊暈狀態(tài)分類模型能有效提高肉雞擊暈狀態(tài)識別與分類的準(zhǔn)確率。在GPU上預(yù)測單幅圖像花費的平均時間為0.095 4 s,每小時可以完成超過37 000只肉雞的擊暈狀態(tài)檢測。
圖3為Faster-RCNN肉雞擊暈狀態(tài)分類模型的結(jié)果,將原標(biāo)注框載入與預(yù)測框位置作比較,比較兩個模型在預(yù)測中定位的準(zhǔn)確性。其中綠色框為原標(biāo)注框,黃色框為預(yù)測結(jié)果框。由圖可知,所建立的Faster-RCNN肉雞擊暈狀態(tài)分類模型能有效地檢測出肉雞經(jīng)過電擊暈環(huán)節(jié)后的擊暈狀態(tài),而且其預(yù)測框范圍與原標(biāo)注框基本一致,說明建立的Faster -RCNN肉雞擊暈狀態(tài)分類模型可以有效地完成肉雞擊暈狀態(tài)的檢測任務(wù)。
圖3 Faster-RCNN肉雞擊暈狀態(tài)分類模型的分類結(jié)果Fig.3 Classification result graph of Faster-RCNN-based stunning state classification model for broiler chickens
為了實現(xiàn)實時檢測肉雞經(jīng)過電擊暈環(huán)節(jié)后的擊暈狀態(tài),提出了基于快速區(qū)域卷積神經(jīng)網(wǎng)絡(luò)(Faster-RCNN)的肉雞擊暈狀態(tài)檢測方法,建立了基于Faster-RCNN的肉雞擊暈狀態(tài)分類模型并進行實驗驗證。研究表明,本文建立的基于Faster-RCNN的肉雞擊暈狀態(tài)分類模型對肉雞擊暈狀態(tài)分類的總準(zhǔn)確率達到96.51%,與文獻[14]方法相比,準(zhǔn)確率提高了6.4個百分點。對肉雞擊暈狀態(tài)的預(yù)測速度可達每小時37 000只,基本滿足肉雞屠宰生產(chǎn)線要求,為后續(xù)研制肉雞擊暈狀態(tài)在線檢測系統(tǒng)提供了理論支持。