何東健 劉建敏 熊虹婷 蘆忠忠
(1.西北農(nóng)林科技大學(xué)機(jī)械與電子工程學(xué)院, 陜西楊凌 712100;2.農(nóng)業(yè)農(nóng)村部農(nóng)業(yè)物聯(lián)網(wǎng)重點(diǎn)實(shí)驗(yàn)室, 陜西楊凌 712100;3.陜西省農(nóng)業(yè)信息感知與智能服務(wù)重點(diǎn)實(shí)驗(yàn)室, 陜西楊凌 712100)
以信息與智能技術(shù)為支撐的綠色、高效、精準(zhǔn)養(yǎng)殖成為現(xiàn)代畜牧業(yè)發(fā)展的必然趨勢(shì)[1-3]。奶牛養(yǎng)殖業(yè)作為中國(guó)畜牧業(yè)的重要組成部分,其信息化、自動(dòng)化、智能化應(yīng)用不斷深化[4-7]。精準(zhǔn)養(yǎng)殖體系中個(gè)體檔案建立、信息采集、執(zhí)行方案制定以及產(chǎn)品溯源等,都需要對(duì)奶牛進(jìn)行快速準(zhǔn)確的識(shí)別[2]。個(gè)體身份識(shí)別是對(duì)奶牛個(gè)體進(jìn)行管理及自動(dòng)分析奶牛行為的前提和應(yīng)用基礎(chǔ)[8],對(duì)奶業(yè)發(fā)展具有至關(guān)重要的作用。對(duì)于現(xiàn)代化的規(guī)?;膛pB(yǎng)殖場(chǎng),擠奶廳不僅完成擠奶作業(yè),更是養(yǎng)殖場(chǎng)數(shù)據(jù)采集的重要場(chǎng)所,在這里可以監(jiān)測(cè)每頭牛的產(chǎn)奶量、擠奶時(shí)間、日擠奶次數(shù)、產(chǎn)奶品質(zhì)等數(shù)據(jù)。對(duì)進(jìn)入擠奶廳的每頭奶牛進(jìn)行準(zhǔn)確識(shí)別,可以在未來(lái)與不同牛只個(gè)體的產(chǎn)奶情況準(zhǔn)確匹配,這對(duì)企業(yè)掌握每頭奶牛的產(chǎn)奶量情況、提高并改進(jìn)對(duì)奶牛的喂養(yǎng)管理、判斷奶牛健康狀況、增加養(yǎng)殖場(chǎng)經(jīng)濟(jì)效益等具有重要意義。傳統(tǒng)的奶牛個(gè)體識(shí)別主要采用人工耳標(biāo)、信息登記、佩戴頸鏈等方法[9],依靠人工觀(guān)察方式不能適應(yīng)現(xiàn)代化規(guī)模養(yǎng)殖自動(dòng)識(shí)別的應(yīng)用需求。無(wú)線(xiàn)射頻識(shí)別技術(shù)(Radio frequency identification,RFID)在實(shí)時(shí)更新資料、存儲(chǔ)信息量、使用壽命、工作效率、安全性等方面都具有優(yōu)勢(shì),近年來(lái)在畜牧業(yè)中被用于動(dòng)物識(shí)別[10-11]。典型的電子識(shí)別裝置必須通過(guò)穿刺固定在頸部或耳朵上,這會(huì)對(duì)奶牛造成損害并影響動(dòng)物福利,且RFID電子標(biāo)簽價(jià)格較高,在規(guī)模化養(yǎng)殖中需要多臺(tái)RFID讀取設(shè)備識(shí)別奶牛,大大增加了生產(chǎn)成本。
隨著計(jì)算機(jī)技術(shù)的發(fā)展,結(jié)合荷斯坦奶牛特有的黑白花紋信息,采用計(jì)算機(jī)視覺(jué)實(shí)現(xiàn)奶牛個(gè)體識(shí)別逐步引起國(guó)內(nèi)外學(xué)者的關(guān)注[12-17]。LI等[18]提出自動(dòng)識(shí)別奶牛尾部圖像作為感興趣區(qū)域(Region of interest,ROI),以Zernike矩描述區(qū)域內(nèi)白色圖案的形狀特征,采用支持向量機(jī)(Support vector machine,SVM)對(duì)23頭奶牛分類(lèi)的最高精度達(dá)到99.7%,但對(duì)ROI為純黑色的奶牛并不適用。CAI等[19]將牛臉圖像分割為互不重疊的獨(dú)立小塊,使用局部二值模式方法提取紋理特征,并設(shè)計(jì)了特征描述子,建立的面部描述模型能準(zhǔn)確高效地進(jìn)行牛臉識(shí)別,但實(shí)際場(chǎng)景下牛的頭部不斷移動(dòng),難以自動(dòng)采集其臉部圖像。張滿(mǎn)囤等[20]提出一種基于小波變換和改進(jìn)核主成分分析法的奶牛個(gè)體識(shí)別方法,但該方法實(shí)時(shí)性較差。趙凱旋等[21]提出一種基于卷積神經(jīng)網(wǎng)絡(luò)的奶牛個(gè)體識(shí)別方法,該方法對(duì)30頭奶牛的識(shí)別正確率為93.33%,但訓(xùn)練樣本數(shù)較少,不能滿(mǎn)足中等規(guī)模養(yǎng)殖場(chǎng)的需求。ANDREW等[22]研究采用區(qū)域卷積神經(jīng)網(wǎng)絡(luò)(RCNN)對(duì)荷斯坦黑白花牛個(gè)體識(shí)別的方法,在89頭奶牛中準(zhǔn)確率達(dá)到86.1%,對(duì)無(wú)人機(jī)拍攝的23頭室外放牧奶牛的識(shí)別準(zhǔn)確率達(dá)98.1%,但該研究針對(duì)室外放牧環(huán)境,不適合擠奶廳奶牛的識(shí)別。YOLO(You only look once)算法[23-25]是一種端到端的卷積神經(jīng)網(wǎng)絡(luò),檢測(cè)速度快,在農(nóng)業(yè)目標(biāo)實(shí)時(shí)檢測(cè)與識(shí)別中具有良好應(yīng)用前景[26]。深度學(xué)習(xí)在農(nóng)業(yè)對(duì)象的識(shí)別中表現(xiàn)出良好的性能和抗干擾能力,具有復(fù)雜場(chǎng)景下奶牛個(gè)體識(shí)別的潛力。
為提供一種可在實(shí)際奶牛養(yǎng)殖環(huán)境下應(yīng)用、非接觸、低成本的擠奶奶牛個(gè)體識(shí)別方法,本文在設(shè)計(jì)奶牛進(jìn)出擠奶廳背部視頻采集方案的基礎(chǔ)上,提出基于視頻分析和改進(jìn)YOLO v3深度卷積神經(jīng)網(wǎng)絡(luò)的擠奶奶牛個(gè)體識(shí)別方法。
圖1 攝像機(jī)安裝位置示意圖Fig.1 Installation location of video camera
本研究供試視頻拍攝于陜西省楊凌科元克隆股份有限公司,拍攝對(duì)象為89頭泌乳期間健康的美國(guó)荷斯坦奶牛。每天早、中、晚進(jìn)行3次擠奶,在擠奶時(shí)間段內(nèi),奶牛從等待區(qū)的2個(gè)入口進(jìn)入擠奶廳,每個(gè)擠奶廳有12臺(tái)擠奶設(shè)備,完成擠奶的奶牛從唯一出口離開(kāi)。如圖1所示,用A、B、C表示的3臺(tái)DS-2CD3325-I型高清網(wǎng)絡(luò)攝像機(jī)(??低?,杭州)分別安裝在出入口的正上方,距離地面高度為2.7 m,調(diào)整攝像機(jī)視軸豎直向下,并使其視場(chǎng)水平方向與牛只行走方向基本平行,視野寬度大于1.5個(gè)牛身長(zhǎng)度。
每個(gè)攝像機(jī)有一個(gè)獨(dú)立的IP地址,通過(guò)攝像機(jī)配套的螢石云客戶(hù)端,可遠(yuǎn)程實(shí)時(shí)訪(fǎng)問(wèn)攝像機(jī),以瀏覽對(duì)應(yīng)位置的奶牛背部視頻。同時(shí),攝像機(jī)采集的視頻通過(guò)網(wǎng)絡(luò)傳輸至25 m外擠奶廳監(jiān)控室的硬盤(pán)錄像機(jī)內(nèi),錄像機(jī)接入養(yǎng)殖場(chǎng)內(nèi)部有線(xiàn)網(wǎng)絡(luò)接口。視頻采集系統(tǒng)如圖2所示。
圖2 視頻采集系統(tǒng)Fig.2 Video acquisition system
于2019年3月17—21日拍攝供試視頻,根據(jù)養(yǎng)殖場(chǎng)的固定擠奶時(shí)間設(shè)置攝像機(jī)拍攝時(shí)間段,每天05:00—07:00、13:00—15:00、19:00—21:00時(shí)段自動(dòng)獲取奶牛進(jìn)出擠奶廳時(shí)的背部視頻片段。89頭奶牛按12頭1組隨機(jī)從不同入口進(jìn)入擠奶間(最后一組為5頭)。當(dāng)每組第1頭奶牛全部出現(xiàn)在視野左側(cè)時(shí)開(kāi)始采集,到最后一頭奶牛行走至視野右側(cè)邊緣結(jié)束,以此作為一個(gè)視頻段。
對(duì)不同時(shí)段進(jìn)出擠奶廳的每組奶牛背部視頻,剔除包含奶牛停頓和異常行為的視頻后,共采集到48段視頻,每段視頻時(shí)長(zhǎng)在20~80 s之間,視頻幀率為25 f/s,分辨率為1 920像素(水平)×1 080像素(垂直)。由于夜間擠奶廳和等待區(qū)有燈光照明,故夜間拍攝的視頻段也被選用。利用視頻幀分解技術(shù),每3幀取1幀,得到無(wú)異常的奶牛背部圖像10 800幅。
用于圖像數(shù)據(jù)處理及模型訓(xùn)練的計(jì)算機(jī)處理器為Inter Core i5-8700,主頻為3.20 GHz,顯卡為NVIDIA GeForce GTX 1070 Ti,16 GB內(nèi)存,500 GB硬盤(pán)。所有程序均在Windows 10系統(tǒng)下用Python語(yǔ)言編寫(xiě),圖像顯示處理調(diào)用OpenCV庫(kù)、數(shù)據(jù)計(jì)算調(diào)用CUDA、CuDNN等。
由于奶牛養(yǎng)殖場(chǎng)環(huán)境復(fù)雜、光照不均等,導(dǎo)致視頻幀圖像中包含噪聲及邊緣模糊等,需要去除視頻幀圖像中的噪聲,并做圖像增強(qiáng)等預(yù)處理,以提高有效信息占比,為后續(xù)目標(biāo)檢測(cè)、特征提取和個(gè)體識(shí)別等奠定良好的基礎(chǔ)。
1.2.1雙邊濾波去噪
實(shí)際拍攝的視頻地面顏色與奶牛背部黑色斑點(diǎn)顏色相近,若采用高斯濾波或中值濾波,在邊緣處易出現(xiàn)模糊現(xiàn)象,考慮到雙邊濾波算法[27]結(jié)合圖像的空間鄰近度和像素值相似度進(jìn)行折中處理,能在保持強(qiáng)邊緣的同時(shí)有效地對(duì)圖像的細(xì)小變化進(jìn)行平滑,故用雙邊濾波算法去除噪聲。
為驗(yàn)證雙邊濾波算法對(duì)本文圖像去噪的有效性,用雙邊濾波算法、高斯濾波、中值濾波、均值濾波、方框?yàn)V波5種方法對(duì)同一幅圖像進(jìn)行去噪效果對(duì)比試驗(yàn),不同濾波器處理后圖像的峰值信噪比(PSNR)和結(jié)構(gòu)相似性值(SSIM)如表1所示。
表1 不同濾波器下圖像的峰值信噪比和結(jié)構(gòu)相似性值Tab.1 PSNR and SSIM of image under different filters
由表1可知,原始圖像經(jīng)過(guò)雙邊濾波算法處理后,峰值信噪比為36.23 dB,與原始圖像結(jié)構(gòu)相似性值達(dá)到0.999 98,在5種濾波器中均取得最高值,圖像質(zhì)量相對(duì)較好。故本文選擇雙邊濾波算法去除噪聲。
1.2.2圖像增強(qiáng)
由于擠奶廳地面為深灰色,與奶牛身體顏色相近,使得圖像偏暗,且奶牛軀干邊緣輪廓和地面難以明顯區(qū)分,故需對(duì)圖像像素進(jìn)行亮度、對(duì)比度增強(qiáng),增強(qiáng)公式為
h(x)=αf(x)+β
(1)
式中h(x)——輸出圖像f(x)——輸入圖像
α——增益,影響圖像對(duì)比度,預(yù)備試驗(yàn)確定α為1.1
β——偏置,影響圖像亮度,預(yù)備試驗(yàn)確定β為30
圖像增強(qiáng)后,通過(guò)自定義的卷積核kernel進(jìn)行銳化處理,即
(2)
通過(guò)強(qiáng)化奶牛軀干邊緣輪廓與背部花斑分界線(xiàn),達(dá)到增強(qiáng)邊緣的效果。
DS-2CD3325-I型半球形攝像機(jī)為廣角攝像機(jī)(焦距為2.8 mm,水平視場(chǎng)角為103°),圖像呈現(xiàn)嚴(yán)重的桶形失真[28],如圖3a所示。
為了消除圖像畸變,本文采用張正友標(biāo)定方法進(jìn)行標(biāo)定。采用邊長(zhǎng)為0.5 m×0.35 m、印制有間隔0.05 m黑白網(wǎng)格的棋盤(pán)格標(biāo)定板,獲取視場(chǎng)中與奶牛同一高度的不同位置、不同角度下的25幅圖像,利用Matlab中CameraCalibrator標(biāo)定工具箱對(duì)每一幅圖像提取角點(diǎn)信息,依次連接各個(gè)內(nèi)角點(diǎn),自動(dòng)獲取攝像機(jī)畸變系數(shù)和內(nèi)參數(shù)矩陣。相機(jī)坐標(biāo)系(x,y,z)與世界坐標(biāo)系(X,Y,Z)的對(duì)應(yīng)關(guān)系可表示為
(3)
式中fx——x軸焦距fy——y軸焦距
cx——x軸光學(xué)中心
cy——y軸光學(xué)中心
可在Python中查看標(biāo)定結(jié)果,實(shí)現(xiàn)圖像畸變校正。
校正后根據(jù)有效區(qū)域進(jìn)行剪裁,最終得到的奶牛背部圖像尺寸為1 444像素(水平)×756像素(垂直)。矩形網(wǎng)格畸變校正結(jié)果如圖3b所示。
為避免樣本量差異對(duì)識(shí)別結(jié)果的影響,需要保證不同模式中參與訓(xùn)練的樣本數(shù)量基本一致,在經(jīng)過(guò)預(yù)處理的10 800幅圖像中,選擇7 358幅包含獨(dú)立完整目標(biāo)的奶牛背部圖像。結(jié)合奶牛進(jìn)入擠奶廳時(shí)軀干與視野水平線(xiàn)有一定傾斜角度、視頻圖像中光照強(qiáng)度隨時(shí)間變化的特點(diǎn),對(duì)原始數(shù)據(jù)集采用旋轉(zhuǎn)10°、旋轉(zhuǎn)-10°、亮度線(xiàn)性增強(qiáng)10、亮度線(xiàn)性降低10的方法進(jìn)行數(shù)據(jù)擴(kuò)充,最終得到36 790幅圖像。隨機(jī)選取其中22 074幅作為訓(xùn)練集,7 358幅為驗(yàn)證集,7 358幅為測(cè)試集,數(shù)據(jù)之間無(wú)重疊。
為了提供訓(xùn)練模型的數(shù)據(jù)類(lèi)別,采用開(kāi)源工具LabelImg對(duì)訓(xùn)練和測(cè)試圖像集進(jìn)行人工標(biāo)注。由于奶牛行走中頭部會(huì)產(chǎn)生起伏,有抬頭和低頭行為,使得奶牛頭部形狀變化較大,且頭部占奶牛身體的比例較小,故標(biāo)注時(shí)忽略奶牛的頭部,僅框選奶牛背部區(qū)域,將其標(biāo)記為對(duì)應(yīng)奶牛的身份ID(耳標(biāo)),并自動(dòng)生成相應(yīng)的配置文件。
深度學(xué)習(xí)具有強(qiáng)大的數(shù)據(jù)表征能力,通過(guò)組合低層特征形成更抽象的高層表示屬性類(lèi)別或特征,在樣本量足夠大時(shí)可以達(dá)到較好的識(shí)別精度[29],適合用于本文奶牛個(gè)體的識(shí)別。當(dāng)前以R-CNN系列[30-31]為代表的基于區(qū)域分析的模型和以SSD[32]、YOLO系列為代表的基于回歸分析的模型應(yīng)用較為廣泛。其中,YOLO v3識(shí)別模型具有輕量高速的特點(diǎn),在快速檢測(cè)的同時(shí)識(shí)別準(zhǔn)確率高,非常適合作為奶牛實(shí)時(shí)識(shí)別模型。
YOLO v3將輸入圖像首先縮放至416像素×416像素,然后劃分為S×S個(gè)網(wǎng)格,輸入深度神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練。每個(gè)網(wǎng)格單元負(fù)責(zé)檢查其內(nèi)的邊界框和其置信度,網(wǎng)格單元具體信息可用T(x,y,w,h,C)表示,x、y是當(dāng)前網(wǎng)格單元預(yù)測(cè)檢測(cè)對(duì)象的置信度中心位置的橫、縱坐標(biāo),w、h是外接矩形的寬度和高度,置信度C則反映當(dāng)前網(wǎng)格單元是否包含奶牛目標(biāo)及其預(yù)測(cè)準(zhǔn)確性,通過(guò)閾值對(duì)預(yù)測(cè)結(jié)果進(jìn)行取舍。假設(shè)圖像的左上角為坐標(biāo)原點(diǎn),則預(yù)測(cè)的邊界框可表示為
(4)
式中bx、by——預(yù)測(cè)邊界框中心點(diǎn)的橫、縱坐標(biāo)值
σ(x)、σ(y)——預(yù)測(cè)邊界框中心點(diǎn)與最近網(wǎng)格邊緣在x、y向的距離
dx、dy——網(wǎng)格的橫、縱坐標(biāo)偏移量
bw、bh——預(yù)測(cè)邊界框的寬度和高度
pw、ph——錨點(diǎn)框的寬度和高度
位置邊框采用logistic預(yù)測(cè)目標(biāo)對(duì)象的置信度。如果預(yù)測(cè)邊界框與真實(shí)邊界框重疊,并且預(yù)測(cè)結(jié)果優(yōu)于所有其他邊界,則該框的值為1,否則為0。
本文識(shí)別的荷斯坦奶牛身形較大,且不同個(gè)體之間體長(zhǎng)、體寬相近,YOLO v3模型的先驗(yàn)錨點(diǎn)框和結(jié)構(gòu)并不適于奶牛識(shí)別。故本文使用K-means算法對(duì)數(shù)據(jù)集中的奶牛目標(biāo)聚類(lèi)分析,針對(duì)奶牛識(shí)別修改模型的層級(jí)結(jié)構(gòu),并參考Gaussian YOLO v3[33]構(gòu)建改進(jìn)YOLO v3模型。
2.2.1錨點(diǎn)框的聚類(lèi)與優(yōu)化
YOLO v3借鑒了Faster R-CNN和SSD中錨點(diǎn)框作為初始候選框的方法,其大小為人工設(shè)定的固定值,在不同尺度上對(duì)目標(biāo)進(jìn)行預(yù)測(cè),初始錨點(diǎn)框的選擇影響網(wǎng)絡(luò)的速度和精度。為加快網(wǎng)絡(luò)收斂速度,本文用K-means算法對(duì)數(shù)據(jù)集中標(biāo)注的邊界框進(jìn)行聚類(lèi),得到適合奶牛數(shù)據(jù)集的錨點(diǎn)框。為了減少錨點(diǎn)框尺寸對(duì)誤差的影響,用平均交并比(Averange intersection over union, AIoU)代替歐氏距離作為K-means聚類(lèi)分析的評(píng)判標(biāo)準(zhǔn),平均交并比越大表示聚類(lèi)效果越好,距離表示為
(5)
式中A——真實(shí)的邊界框區(qū)域
T——聚類(lèi)得到的矩形框區(qū)域
DA,R——真實(shí)框中心與聚類(lèi)中心之間的距離
K——聚類(lèi)中心(即錨點(diǎn)框)數(shù)量
Ni——第i個(gè)聚類(lèi)中心的樣本數(shù)量
IoU——真實(shí)框和聚類(lèi)框的交并比
令K=1,2,…,12分別對(duì)數(shù)據(jù)集樣本進(jìn)行聚類(lèi)分析,得到平均交并比與K之間的關(guān)系如圖4所示。
圖4 平均交并比與K之間的關(guān)系Fig.4 Relationship between AIoU and K
由圖4可知,當(dāng)錨點(diǎn)框數(shù)量為9時(shí),平均交并比達(dá)到93.5%,且此后變化平穩(wěn)。為平衡交并比與網(wǎng)絡(luò)復(fù)雜度,將K=9的聚類(lèi)結(jié)果作為網(wǎng)絡(luò)中的錨點(diǎn)框尺寸,即(199,165)、(208,190)、(229,177)、(233,201)、(222,222)、(260,196)、(272,208)、(255,234)、(235,274)。
2.2.2網(wǎng)絡(luò)結(jié)構(gòu)的改進(jìn)
YOLO v3采用Darknet-53網(wǎng)絡(luò)結(jié)構(gòu),在前向傳播過(guò)程中,通過(guò)改變卷積核步長(zhǎng)實(shí)現(xiàn)張量的尺寸變化。Darknet-53借鑒了殘差神經(jīng)網(wǎng)絡(luò)[34]的構(gòu)造,每個(gè)殘差模塊由多個(gè)殘差單元(res unit)組成,每個(gè)殘差單元有2個(gè)卷積層和1個(gè)快捷鏈路,使網(wǎng)絡(luò)結(jié)構(gòu)加深的同時(shí)避免梯度消失,加強(qiáng)對(duì)圖像特征的學(xué)習(xí)。輸入通過(guò)2個(gè)DBL(Darknetconv2d-BN-Leaky)單元進(jìn)行殘差操作,其中,DBL單元包含卷積層、批歸一化層(BN)和Leaky ReLU激活函數(shù)層,殘差單元的基本結(jié)構(gòu)如圖5所示。
圖5 殘差單元的基本結(jié)構(gòu)Fig.5 Structure of res unit
YOLO v3模型(不含圖6中虛線(xiàn)框包圍部分)中有5次下采樣,輸出3個(gè)不同尺寸的特征圖。將更深層網(wǎng)絡(luò)的特征進(jìn)行步長(zhǎng)為2的上采樣,與前一步下采樣得到的特征進(jìn)行張量拼接,使網(wǎng)絡(luò)既可以包含高層特征的高級(jí)語(yǔ)義信息又可以保留低層特征的物體位置信息。網(wǎng)絡(luò)在13×13(尺度1)、26×26(尺度2)、52×52(尺度3)3種尺度上對(duì)不同大小的目標(biāo)進(jìn)行邊界框預(yù)測(cè),在COCO數(shù)據(jù)集中對(duì)應(yīng)的錨點(diǎn)框是(10,13)、(16,30)、(33,23)、(30,61)、(62,45)、(59,119)、(116,90)、(156,198)、(373,326),而奶牛數(shù)據(jù)集錨點(diǎn)框最小值(199,165)大于前8個(gè)錨點(diǎn)框,因此訓(xùn)練時(shí)只能在1個(gè)尺度上提取特征,特征提取效率低。為提高網(wǎng)絡(luò)收斂速度,增強(qiáng)特征提取能力,故將本文經(jīng)K-means聚類(lèi)得到的錨點(diǎn)框按從大到小的順序分配給尺度1、尺度2和尺度3,每個(gè)尺度預(yù)測(cè)3個(gè)錨點(diǎn)框,以提高多尺度目標(biāo)預(yù)測(cè)準(zhǔn)確率。
本文識(shí)別奶牛數(shù)量為89個(gè),樣本數(shù)量和計(jì)算量較大,因此在殘差模塊和降采樣層間增加1個(gè)1×1卷積層,在不損失分辨率的前提下進(jìn)一步降低輸入通道數(shù)、減少計(jì)算量。改進(jìn)后的網(wǎng)絡(luò)層數(shù)更深,為防止隨著網(wǎng)絡(luò)層數(shù)的增加可能造成的梯度消失,提升網(wǎng)絡(luò)訓(xùn)練效果,將YOLO v3輸出模塊中的前4個(gè)卷積層替換為2個(gè)殘差單元,通過(guò)跳躍連接的方式將信息傳遞到更深層。改進(jìn)內(nèi)容用虛線(xiàn)框標(biāo)出,則改進(jìn)后的網(wǎng)絡(luò)結(jié)構(gòu)如圖6所示。
圖6 改進(jìn)后的YOLO v3網(wǎng)絡(luò)結(jié)構(gòu)Fig.6 Structure of improved YOLO v3
2.2.3改進(jìn)YOLO v3模型的構(gòu)建
YOLO v3模型輸出預(yù)測(cè)框的位置參數(shù)bx、by、bw、bh和目標(biāo)置信度,邊界框和置信度均單獨(dú)回歸。輸出的預(yù)測(cè)框只有確定性坐標(biāo)值而無(wú)概率值,無(wú)法表示當(dāng)前預(yù)測(cè)框的準(zhǔn)確性。為進(jìn)一步提高檢測(cè)精度,本文借鑒Gaussian YOLO v3[33],采用高斯模型對(duì)預(yù)測(cè)框的可靠性進(jìn)行建模。給定輸入xg、輸出yg的單個(gè)高斯模型如下
G(yg|xg)=Ng(yg|μ(xg),Σ(xg))
(6)
式中μ(xg)——均值,表示預(yù)測(cè)邊框的位置
Σ(xg)——方差,表示預(yù)測(cè)框位置的不確定性
G、Ng——高斯分布參數(shù)
將預(yù)測(cè)特征圖中每個(gè)預(yù)測(cè)框的坐標(biāo)用均值和方差建模,預(yù)測(cè)框的輸出更改為μ(bx)、Σ(bx)、μ(by)、Σ(by)、μ(bw)、Σ(bw)、μ(bh)、Σ(bh),通過(guò)sigmoid函數(shù)將輸出值限定在0~1之間。
2.2.4損失函數(shù)
YOLO v3使用方差相加與二值交叉熵的損失計(jì)算方法,損失函數(shù)由坐標(biāo)誤差、交并比(Intersection over union,IoU)誤差和分類(lèi)誤差3部分組成[23-25]。在訓(xùn)練時(shí)通過(guò)反向傳播不斷更新模型,使得損失值不斷減小。通過(guò)高斯建模將預(yù)測(cè)框坐標(biāo)輸出為高斯參數(shù),因此預(yù)測(cè)框的損失函數(shù)更改為負(fù)對(duì)數(shù)似然損失[33],即
(7)
式中Lx——坐標(biāo)bx的負(fù)對(duì)數(shù)似然損失,與Ly、Lw、Lh的計(jì)算方法相同
W、H——高度和寬度的網(wǎng)格數(shù)
γijk——對(duì)數(shù)似然損失參數(shù)
xijk——網(wǎng)格(i,j)中的第k個(gè)錨點(diǎn)
μbx(xijk)——bx的均值坐標(biāo)
Σbx(xijk)——bx的不確定性
ε——對(duì)數(shù)函數(shù)的數(shù)值穩(wěn)定性參數(shù)
用22 074幅訓(xùn)練集圖像進(jìn)行訓(xùn)練,用其余圖像進(jìn)行驗(yàn)證和測(cè)試。將經(jīng)畸變矯正后尺寸為1 444像素×756像素的圖像轉(zhuǎn)換為416像素×416像素,以適于YOLO v3的輸入。然后再分成13像素×13像素的網(wǎng)格單元,以便于輸入網(wǎng)絡(luò)進(jìn)行訓(xùn)練。訓(xùn)練時(shí),以64幅圖像為一個(gè)批次,每訓(xùn)練一批圖像,更新一次權(quán)值參數(shù)。根據(jù)預(yù)備試驗(yàn)結(jié)果,權(quán)值的衰減速率(decay)設(shè)為0.000 5,動(dòng)量因子(momentum)設(shè)為0.9,最大訓(xùn)練次數(shù)設(shè)置為80 000,初始學(xué)習(xí)率(learning rate)設(shè)為0.000 5。在迭代次數(shù)為60 000和70 000時(shí),學(xué)習(xí)率降低為初值的10%和1%,使模型在訓(xùn)練后期振蕩減小,從而更加接近最優(yōu)解。
本文對(duì)改進(jìn)YOLO v3模型進(jìn)行80 000次迭代,其損失(Loss)函數(shù)的變化如圖7所示。由圖7可知,在前2 000次的迭代中損失值迅速下降,表明模型快速擬合;在2 000~30 000次迭代中損失值緩慢減小,而30 000次迭代后損失值穩(wěn)定在0.1~0.2之間,只有輕微振蕩,表明此時(shí)的訓(xùn)練結(jié)果較好。
圖7 損失函數(shù)的輸出結(jié)果Fig.7 Output result of loss function
為了防止因迭代次數(shù)過(guò)多而產(chǎn)生過(guò)擬合,在30 000次迭代后,每隔2 000次迭代輸出一次權(quán)值模型,得到25個(gè)模型。為了選取合適的模型,采用準(zhǔn)確率(P)、召回率(R)、平均精度(mAP)、交并比(IoU)和平均幀率(fps)來(lái)評(píng)估模型性能,計(jì)算公式如下
(8)
式中TP——真實(shí)正樣本數(shù)量
FP——虛假正樣本數(shù)量
FN——虛假負(fù)樣本數(shù)量
Ncow——所識(shí)別奶牛個(gè)體類(lèi)別數(shù)量
n——類(lèi)別序號(hào)
P(n)——第n類(lèi)的準(zhǔn)確率
R(n)——第n類(lèi)的召回率
A′——檢測(cè)出的邊界框區(qū)域
本文需要識(shí)別89頭奶牛個(gè)體,因此Ncow為89。在性能評(píng)估參數(shù)中,IoU用于測(cè)量真實(shí)值和預(yù)測(cè)值之間的相關(guān)度,相關(guān)度越高,該值越高,IoU的閾值選擇直接影響準(zhǔn)確率和召回率。本文的目的是識(shí)別出相似背景下不同牛只個(gè)體編號(hào),對(duì)交并比要求并不高,故以IoU是否大于50%判斷奶牛目標(biāo)是否被正確識(shí)別。
同時(shí)引入衡量分類(lèi)模型精確度的F1指標(biāo),F(xiàn)1同時(shí)兼顧了分類(lèi)模型的準(zhǔn)確率和召回率,計(jì)算公式為
(9)
式中F1——指標(biāo)F1
為了對(duì)模型的性能進(jìn)行恰當(dāng)?shù)呐判?,需要明確性能參數(shù)的優(yōu)先級(jí)。在奶牛個(gè)體識(shí)別系統(tǒng)中,試驗(yàn)采用的性能參數(shù)優(yōu)先級(jí)由大到小依次為mAP、F1、P、R、fps、IoU。
mAP是評(píng)價(jià)模型性能的主要指標(biāo),故選擇mAP最高的模型作為最優(yōu)模型。通過(guò)最優(yōu)模型對(duì)測(cè)試集中的奶牛個(gè)體進(jìn)行識(shí)別,得到P、R、F1、IoU、fps,并與YOLO v3、Faster R-CNN進(jìn)行比較。
改進(jìn)YOLO v3模型迭代30 000次后輸出的mAP變化曲線(xiàn)如圖8所示。由圖8可知,當(dāng)?shù)螖?shù)為70 000次時(shí),mAP達(dá)到最大值95.16%,故選擇迭代70 000次的權(quán)重參數(shù)作為最優(yōu)模型參數(shù)。
圖8 mAP隨迭代次數(shù)的變化曲線(xiàn)Fig.8 Change curve of mAP with iterations
置信度反映當(dāng)前模型檢測(cè)預(yù)測(cè)框內(nèi)存在目標(biāo)的可能性和目標(biāo)位置的正確性,預(yù)先設(shè)定置信度閾值,預(yù)測(cè)框的置信度大于該值時(shí)被檢測(cè)到。因此,同一模型在不同置信度閾值下預(yù)測(cè)的F1、P、R、IoU會(huì)產(chǎn)生不同變化,為找出最優(yōu)置信度閾值,圖9給出不同閾值下的參數(shù)值。
圖9 不同置信度閾值下的性能參數(shù)值的變化Fig.9 Changes of different parameters with different thresholds
由圖9可知,當(dāng)置信度閾值取0.6時(shí),F(xiàn)1達(dá)到最大值95.61%,其他參數(shù)處于較高值,模型預(yù)測(cè)結(jié)果最優(yōu)。
為了驗(yàn)證本文方法的可靠性和穩(wěn)定性,用測(cè)試集圖像進(jìn)行分類(lèi)識(shí)別試驗(yàn),并與YOLO v3、Faster R-CNN識(shí)別結(jié)果進(jìn)行對(duì)比。奶牛識(shí)別結(jié)果示例如表2所示。由表2可知,3種模型均能正確識(shí)別出不同奶牛個(gè)體編號(hào),當(dāng)視野中有多頭奶牛時(shí)也能被很好地識(shí)別出來(lái),表明構(gòu)建的網(wǎng)絡(luò)能可靠地識(shí)別奶牛,對(duì)牛只個(gè)體的形變具有較強(qiáng)的泛化能力。
3種模型在測(cè)試集上的F1、準(zhǔn)確率、召回率、mAP、IoU和平均幀率如表3所示。由表3可知,本文模型測(cè)試集識(shí)別準(zhǔn)確率為95.91%,略高于YOLO v3的94.97%和Faster R-CNN的94.01%;召回率為95.32%,較YOLO v3提高了4.98個(gè)百分點(diǎn),較Faster R-CNN提高了6.03個(gè)百分點(diǎn);平均精度為95.16%,比YOLO v3和Faster R-CNN分別提高了2.36個(gè)百分點(diǎn)和2.41個(gè)百分點(diǎn)。IoU為85.28%,比Faster R-CNN低2.1個(gè)百分點(diǎn),但本文目的是識(shí)別奶牛個(gè)體,對(duì)奶牛位置精確度無(wú)要求,故IoU不影響對(duì)奶牛的識(shí)別。
從處理速度上看,本文模型平均幀率達(dá)32 f/s,是Faster R-CNN的8倍,能夠滿(mǎn)足奶牛養(yǎng)殖場(chǎng)對(duì)進(jìn)出擠奶廳的奶牛個(gè)體編號(hào)的實(shí)時(shí)識(shí)別要求。
表2 奶牛識(shí)別結(jié)果示例
Tab.2 Examples of identification results for dairy cows
表3 3種模型對(duì)奶牛個(gè)體的識(shí)別結(jié)果
Tab.3 Recognition results of three models for dairy cows
模型F1/%準(zhǔn)確率/%召回率/%mAP/%IoU/%平均幀率/(f·s-1)本文模型95.6195.9195.3295.1685.2832YOLO v392.6094.9790.3492.8082.5138Faster R-CNN91.5994.0189.2992.7587.384
由于荷斯坦奶牛的身體斑點(diǎn)僅包含黑白兩種顏色,因此,奶牛背部體斑的顏色是特征提取和識(shí)別的主要因素。當(dāng)奶牛體斑顏色接近純黑色時(shí),識(shí)別難度大。供試89頭泌乳期荷斯坦奶牛中,背部為純黑色的奶牛約占10%。
為了驗(yàn)證本文模型對(duì)不同體斑顏色的識(shí)別精度,構(gòu)建體斑顏色測(cè)試集,共300幅圖像,其中背部為純黑色的單頭奶牛圖像128幅,背部為黑白雙色的單頭奶牛圖像172幅。本文模型與YOLO v3、Faster R-CNN模型對(duì)不同體斑顏色奶牛檢測(cè)的F1如表4所示。
由表4可知,本文模型對(duì)不同體斑顏色奶牛識(shí)別的F1值均高于YOLO v3和Faster R-CNN模型2個(gè)百分點(diǎn)左右。3種模型對(duì)黑白雙色奶牛識(shí)別的F1值高于對(duì)純黑色奶牛的檢測(cè)結(jié)果,這是因?yàn)楹谏膛1旧硖卣鲄?shù)較少,其特征提取更為困難。
表4 3種模型對(duì)不同體斑顏色奶牛的識(shí)別結(jié)果Tab.4 Recognition results of three models under different body spot characteristics of dairy cows
為了驗(yàn)證本文模型的有效性,進(jìn)行與其他模型的對(duì)比試驗(yàn),結(jié)果如表5所示。
由表5可知,在識(shí)別對(duì)象和樣本數(shù)量相當(dāng)?shù)那闆r下,本文模型的準(zhǔn)確率比文獻(xiàn)[15]模型提高了11.71個(gè)百分點(diǎn),比文獻(xiàn)[16]模型提高了0.61個(gè)百分點(diǎn),單幀識(shí)別時(shí)間減少了1.910 s,比文獻(xiàn)[22]模型準(zhǔn)確率提高了9.81個(gè)百分點(diǎn)。
表5 不同模型識(shí)別結(jié)果Tab.5 Recognition results of different models
上述結(jié)果表明,本文模型提高了奶牛個(gè)體識(shí)別準(zhǔn)確率,實(shí)際檢測(cè)平均幀率達(dá)32 f/s,為后續(xù)實(shí)時(shí)檢測(cè)奶牛擠奶時(shí)間和產(chǎn)奶量提供了技術(shù)支持。
本文構(gòu)建的識(shí)別模型準(zhǔn)確率為95.91%,有部分奶牛未能正確識(shí)別。其中一頭黑色奶牛錯(cuò)誤識(shí)別的情況如圖10所示,16054號(hào)奶牛被誤識(shí)別為16079號(hào)奶牛。
圖10 具有相似顏色的奶牛錯(cuò)誤識(shí)別示例Fig.10 Example of wrong identification of dairy cows with similar color
導(dǎo)致誤識(shí)別的原因是16054號(hào)和16079號(hào)奶牛身體區(qū)域均接近純黑色,背部花斑顏色相似,缺少用于識(shí)別的特征,即使肉眼觀(guān)察也很難正確區(qū)分,故模型出現(xiàn)錯(cuò)誤識(shí)別。且當(dāng)奶牛個(gè)體快速通過(guò)視野時(shí)易產(chǎn)生運(yùn)動(dòng)模糊,導(dǎo)致奶牛骨架和輪廓等關(guān)鍵信息缺失,特征提取更為困難。
圖11為YOLO v3和改進(jìn)YOLO v3模型對(duì)視場(chǎng)中黑白雙色的13223號(hào)和16099號(hào)奶牛的識(shí)別結(jié)果。YOLO v3模型只識(shí)別出13223號(hào)奶牛,未識(shí)別出位于左下角的16099號(hào)奶牛。圖11a中16099號(hào)奶牛運(yùn)動(dòng)中背部有較大程度的彎曲變形,因此被漏識(shí)別。此外,該視頻幀圖像拍攝于中午,從擠奶廳側(cè)方有強(qiáng)烈的太陽(yáng)光照射,使很大白色區(qū)域的奶牛背部出現(xiàn)了高光與陰影,產(chǎn)生色差,交界區(qū)域邊緣出現(xiàn)大量未經(jīng)訓(xùn)練的特征,導(dǎo)致模型漏識(shí)別。而改進(jìn)YOLO v3模型正確識(shí)別出視場(chǎng)中的2頭奶牛,如圖11b所示,表明改進(jìn)YOLO v3模型具有良好的抗形變能力。
圖11 2種模型對(duì)13223號(hào)和16099號(hào)奶牛的識(shí)別結(jié)果Fig.11 Identification results of cow 13223 and cow 16099 with two models
未來(lái)可在不損失精度的情況下進(jìn)一步優(yōu)化網(wǎng)絡(luò)模型,提高模型對(duì)奶牛的特征提取能力。也可在純黑色、純白色奶牛背部人為做不同標(biāo)記,提高其識(shí)別特征信息的能力,進(jìn)一步提高識(shí)別準(zhǔn)確率。
(1)在YOLO v3模型的基礎(chǔ)上,借鑒Gaussian YOLO v3算法增加網(wǎng)絡(luò)的輸出參數(shù),并用K-means算法優(yōu)化奶牛圖像聚類(lèi)錨點(diǎn)框,增加殘差模塊以改進(jìn)網(wǎng)絡(luò)結(jié)構(gòu),提出了基于改進(jìn)YOLO v3深度卷積神經(jīng)網(wǎng)絡(luò)的擠奶奶牛個(gè)體識(shí)別方法。
(2)在實(shí)際環(huán)境中,對(duì)89頭奶牛的識(shí)別結(jié)果表明,改進(jìn)YOLO v3模型對(duì)奶牛個(gè)體識(shí)別準(zhǔn)確率為95.91%,召回率為95.32%,mAP為95.16%,平均幀率為32 f/s,具有較高的識(shí)別準(zhǔn)確率和適應(yīng)奶牛形變的能力。
(3)本文方法識(shí)別準(zhǔn)確率比YOLO v3和Faster R-CNN分別高0.94個(gè)百分點(diǎn)和1.90個(gè)百分點(diǎn),檢測(cè)速度是Faster R-CNN的8倍,單幀耗時(shí)僅為0.031 s,能夠滿(mǎn)足養(yǎng)殖場(chǎng)對(duì)擠奶奶牛進(jìn)行實(shí)時(shí)識(shí)別的要求。