趙春江 梁雪文 于合龍 王海峰 樊世杰 李 斌
(1.吉林農(nóng)業(yè)大學(xué)信息技術(shù)學(xué)院, 長(zhǎng)春 130118; 2.北京市農(nóng)林科學(xué)院智能裝備技術(shù)研究中心, 北京 100097;3.北京市華都峪口禽業(yè)有限責(zé)任公司, 北京 101206)
作為重要的家禽種類之一,蛋雞為人們提供了豐富的動(dòng)物蛋白營(yíng)養(yǎng)食源[1]。近年來(lái),隨著消費(fèi)需求日益增加,規(guī)模化養(yǎng)殖趨勢(shì)加速,立體籠養(yǎng)成為主要飼養(yǎng)模式[2-4]。死亡/低產(chǎn)蛋雞的高效巡檢與動(dòng)態(tài)清零成為當(dāng)前蛋雞養(yǎng)殖產(chǎn)業(yè)的重要需求。一般來(lái)講,籠內(nèi)蛋雞存活和產(chǎn)能狀況通過(guò)籠內(nèi)雞/蛋數(shù)量精確盤(pán)點(diǎn)實(shí)現(xiàn),而立體籠養(yǎng)模式下,養(yǎng)殖密度大、雞只間遮擋和光線分布不均等因素使雞只和雞蛋準(zhǔn)確識(shí)別與計(jì)數(shù)工作難度增加。
當(dāng)前,人工觀測(cè)方法清點(diǎn)雞只與雞蛋數(shù)目效率低下且易使蛋雞產(chǎn)生應(yīng)激反應(yīng)[5]。傳統(tǒng)機(jī)器視覺(jué)方法主要應(yīng)用特征信息提取和閾值分割技術(shù)開(kāi)展雞/蛋目標(biāo)檢測(cè)。畢敏娜等[6]采用SVM算法檢測(cè)散養(yǎng)病雞,應(yīng)用數(shù)碼相機(jī)采集RGB圖像,將雞頭雞冠紋理特征和雞眼瞳孔幾何特征作為病雞與健康雞分類的特征向量,結(jié)果表明病雞識(shí)別正確率為92.5%。INDRA等[7]基于大津閾值法設(shè)計(jì)雞蛋檢測(cè)模型,以獲取受精卵和不育卵的信息。MUVVA等[8]提出一種基于熱度圖和可見(jiàn)光圖像的死雞檢測(cè)方法,使用閾值分割技術(shù)提取熱度圖中活雞像素和可見(jiàn)光圖像中所有肉雞(活雞和死雞)的像素,根據(jù)兩幅圖像像素差值,輸出死雞坐標(biāo)信息,該方法在常規(guī)飼養(yǎng)密度和稀疏飼養(yǎng)密度下肉雞(≤5周齡)的死雞識(shí)別正確率分別為90.7%與95.0%。LI等[9]開(kāi)發(fā)了基于圖像分析和體質(zhì)量計(jì)數(shù)的母雞傳感器計(jì)數(shù)系統(tǒng),圖像分析計(jì)數(shù)是將原始彩色圖像轉(zhuǎn)換為灰度圖,然后根據(jù)最終生成的二值圖像中白色像素?cái)?shù)確定母雞數(shù)量,計(jì)數(shù)準(zhǔn)確率為71.23%;體質(zhì)量計(jì)數(shù)是指首先求得母雞平均體質(zhì)量,再根據(jù)傳感器獲得的籠內(nèi)母雞體質(zhì)量計(jì)算母雞數(shù)量,準(zhǔn)確率達(dá)到99.70%,但是這種方法每次僅能檢測(cè)8只母雞,效率低。上述基于各自研究場(chǎng)景下的檢測(cè)研究雖然準(zhǔn)確率較高,但無(wú)法解決籠養(yǎng)雞舍內(nèi)光線不均、雞與籠之間遮擋及雞蛋粘連等復(fù)雜場(chǎng)景下的雞只與雞蛋自動(dòng)化識(shí)別與計(jì)數(shù)問(wèn)題。
近年來(lái),深度學(xué)習(xí)技術(shù)發(fā)展迅速,目標(biāo)檢測(cè)網(wǎng)絡(luò)已在畜禽個(gè)體識(shí)別研究領(lǐng)域表現(xiàn)出優(yōu)越性能[10-12]。GEFFEN等[13]利用Faster R-CNN網(wǎng)絡(luò)實(shí)現(xiàn)籠養(yǎng)模式下母雞的檢測(cè)和計(jì)數(shù)工作,準(zhǔn)確率為89.6%,平均絕對(duì)誤差為每籠2.5只母雞。LI等[14]應(yīng)用改進(jìn)后網(wǎng)絡(luò)QueryPNet檢測(cè)和分割大鵝,大鵝檢測(cè)與分割的準(zhǔn)確率均為96.3%。JIANG等[15]通過(guò)改進(jìn)的YOLO v7網(wǎng)絡(luò)實(shí)現(xiàn)實(shí)時(shí)監(jiān)控麻鴨數(shù)量,平均精度均值(Mean average precision,mAP)為97.57%。上述模型檢測(cè)性能良好,但模型參數(shù)量較大,難以部署到GPU資源匱乏的邊緣計(jì)算設(shè)備進(jìn)行實(shí)時(shí)檢測(cè)。面對(duì)輕簡(jiǎn)化設(shè)備的應(yīng)用需求,模型小、檢測(cè)速度快的輕量級(jí)目標(biāo)檢測(cè)網(wǎng)絡(luò)優(yōu)勢(shì)較為突出[16-18]。其中應(yīng)用較為廣泛的輕量級(jí)網(wǎng)絡(luò)有SSD與YOLO微型系列網(wǎng)絡(luò)。劉慧等[19]應(yīng)用改進(jìn)的SSD網(wǎng)絡(luò)實(shí)時(shí)檢測(cè)田間行人,當(dāng)交并比閾值為0.4時(shí),模型mAP與檢測(cè)速度分別為97.46%和62.5 f/s。易詩(shī)等[20]提出一種基于YOLO v3-tiny的適宜于嵌入式系統(tǒng)部署的野雞識(shí)別方法,模型mAP和檢測(cè)速度分別為86.5%與62 f/s。ZHENG等[21]使用改進(jìn)的YOLO v5模型快速檢測(cè)麻鴨,并對(duì)比了基于不同標(biāo)注范圍(鴨頭和鴨身)的模型檢測(cè)性能,結(jié)果表明,基于鴨頭標(biāo)注的模型檢測(cè)性能更好,準(zhǔn)確率與檢測(cè)速度分別為99.29%和269.68 f/s。綜上,輕量化網(wǎng)絡(luò)的高實(shí)時(shí)性、少參數(shù)量和易部署等特點(diǎn)為實(shí)際場(chǎng)景下的應(yīng)用研發(fā)提供了可能。
基于此,針對(duì)立體籠養(yǎng)模式下巡檢過(guò)程中存在的光線不均、雞只易被遮擋和雞蛋粘連等問(wèn)題,本研究提出基于YOLO v7-tiny-DO網(wǎng)絡(luò)的籠養(yǎng)雞/蛋自動(dòng)化識(shí)別與分籠計(jì)數(shù)方法(Counting in different cages,CDC)。首先,在高效聚合層網(wǎng)絡(luò)內(nèi)構(gòu)建深度過(guò)參數(shù)化深度卷積層提取目標(biāo)深層特征,在特征融合模塊引入坐標(biāo)注意力機(jī)制提高模型捕獲雞只和雞蛋空間位置信息的能力;然后,設(shè)計(jì)和發(fā)展自動(dòng)化分籠計(jì)數(shù)方法;最后,將其部署到邊緣計(jì)算設(shè)備進(jìn)行實(shí)地測(cè)試驗(yàn)證,以期為規(guī)?;半u養(yǎng)殖智能化管理提供思路。
為實(shí)現(xiàn)自動(dòng)化數(shù)據(jù)采集和減少人工參與以保證數(shù)據(jù)的客觀性,設(shè)計(jì)并搭建了雞只視頻數(shù)據(jù)采集平臺(tái),示意圖如圖1所示。該平臺(tái)由視頻采集單元、邊緣計(jì)算單元、數(shù)據(jù)展示單元與電力供應(yīng)單元組成。其中視頻采集單元選用低成本JRWT1412型無(wú)畸變攝像頭,內(nèi)置RGB傳感器(分辨率為640像素×480像素,幀率為30 f/s);邊緣計(jì)算單元采用NVIDIA Jetson AGX Xavier開(kāi)發(fā)者套件,內(nèi)置512個(gè)NVIDIA CUDA Cores、64個(gè)Tensor Cores、8塊Carmel ARM CPU、2個(gè)DL Accelerator和1個(gè)Vision Accelerator深度學(xué)習(xí)加速器引擎,以支持視頻數(shù)據(jù)采集、模型部署與算法推理等功能的實(shí)現(xiàn);數(shù)據(jù)展示單元采用11.6寸IPS高清觸摸屏,用以展示攝像頭捕獲的視頻圖像;電力供應(yīng)單元采用便攜式移動(dòng)電源支撐巡檢機(jī)器人運(yùn)轉(zhuǎn),輸出電壓為48 V。
圖1 視頻數(shù)據(jù)采集平臺(tái)
本研究所有數(shù)據(jù)均采集于北京市華都峪口禽業(yè)有限責(zé)任公司第3場(chǎng)階梯式雞舍。采集對(duì)象為中層30籠雞,品種為京粉1號(hào)蛋雞。采集時(shí)間為2021年10月9—13日與2022年3月28日—4月14日06:00—18:00,期間每隔2 h采集1批次視頻,單個(gè)視頻時(shí)長(zhǎng)約2.5 min,從中選取雞頭未被食槽完全遮擋的視頻進(jìn)行試驗(yàn)。
數(shù)據(jù)采集流程如下:首先,在食槽特定位置張貼二維碼作為雞籠編號(hào);其次,在相機(jī)鏡頭距雞籠水平距離0.62 m處運(yùn)行巡檢機(jī)器人,以速度 0.1 m/s沿直線前進(jìn),行走過(guò)程中鏡頭距二維碼與雞籠的水平距離基本保持不變(誤差小于0.005 m);最后,獲取的雞只視頻數(shù)據(jù)(分辨率為640像素×480像素)通過(guò)USB接口傳輸至邊緣計(jì)算單元,在數(shù)據(jù)展示單元顯示并保存到本地磁盤(pán)。共拍攝視頻378 min,格式為MP4,幀率為30 f/s。采用OpenCV圖像處理庫(kù)每隔10幀截取一幅圖像,從中篩選出2 146幅圖像(分辨率為640像素×480像素)作為數(shù)據(jù)源,格式為JPG。由于籠養(yǎng)雞舍內(nèi)采用暖光燈照明,且雞只靈活性較高,因此本文采集圖像大多具有以下1種或多種特點(diǎn):①雞只被鐵絲或食槽遮擋(圖2a紅色框)。②雞只快速移動(dòng)產(chǎn)生運(yùn)動(dòng)模糊(圖2b藍(lán)色框)。③多枚雞蛋粘連在一起(圖2c黃色框)。④兩個(gè)暖光燈中間位置光線昏暗(圖2d綠色框)。
圖2 不同場(chǎng)景下圖像示例
由于籠養(yǎng)模式下養(yǎng)殖密度大,雞籠邊界不易區(qū)分,本研究通過(guò)檢測(cè)雞頭識(shí)別雞只個(gè)體,檢測(cè)二維碼區(qū)分不同雞籠。在人工可識(shí)別情況下,采用LabelImg標(biāo)注雞只頭部(head)、雞蛋(egg)與二維碼(qrcode),并生成包含目標(biāo)類別、坐標(biāo)及圖像像素信息的.xml文件,最終得到2 146幅圖像和對(duì)應(yīng)標(biāo)注文件用于訓(xùn)練與測(cè)試網(wǎng)絡(luò)模型性能。為增強(qiáng)模型泛化性和魯棒性,在訓(xùn)練過(guò)程中應(yīng)用在線數(shù)據(jù)增強(qiáng),主要方法包括色調(diào)變換、仿射變換、Mosaic增強(qiáng)與Mixup增強(qiáng),如圖3所示。數(shù)據(jù)集按照比例7∶2∶1隨機(jī)劃分為訓(xùn)練集、驗(yàn)證集和測(cè)試集,對(duì)應(yīng)圖像分別為1 501、430、215幅。
圖3 在線數(shù)據(jù)增強(qiáng)
1.3.1YOLO v7-tiny網(wǎng)絡(luò)模型結(jié)構(gòu)
YOLO v7-tiny[22]是YOLO系列的輕量化模型之一,該網(wǎng)絡(luò)在公開(kāi)數(shù)據(jù)集Microsoft COCO Dataset上取得較高的精度與較快的速度。YOLO v7-tiny整個(gè)網(wǎng)絡(luò)結(jié)構(gòu)可分為Input、Backbone與Head共3部分,網(wǎng)絡(luò)結(jié)構(gòu)如圖4所示。Input主要對(duì)輸入數(shù)據(jù)進(jìn)行預(yù)處理,對(duì)于輸入的任意尺寸圖像被自適應(yīng)放縮為模型適用分辨率(640像素×480像素),采用動(dòng)態(tài)標(biāo)簽分配策略確定正負(fù)樣本,并對(duì)數(shù)據(jù)進(jìn)行Mosaic與Mixup增強(qiáng)。
圖4 YOLO v7-tiny網(wǎng)絡(luò)結(jié)構(gòu)
Backbone由卷積模塊、高效層聚合網(wǎng)絡(luò)(Efficient layer aggregation network,ELAN)與MP模塊構(gòu)成。卷積模塊包含卷積層、數(shù)據(jù)歸一化層與激活函數(shù)3部分,激活函數(shù)采用Sigmoid加權(quán)線性單元(Sigmoid-weighted linear unit,SiLU)[23],其具有無(wú)上界、有下界、平滑與非單調(diào)等特點(diǎn)。ELAN通過(guò)控制最短與最長(zhǎng)的梯度路徑,使網(wǎng)絡(luò)在不破壞原有梯度路徑的情況下不斷增強(qiáng)網(wǎng)絡(luò)的特征學(xué)習(xí)能力,提高模型的魯棒性。MP模塊采用兩個(gè)不同分支分別進(jìn)行下采樣操作,二者采用殘差連接,以增強(qiáng)模型的特征提取能力。
Head主要包含SPPCSPC、ELAN與Detect 3個(gè)模塊。SPPCSPC由金字塔池化結(jié)構(gòu)(Spatial pyramid pooling,SPP)[24]與跨階段區(qū)域網(wǎng)絡(luò)(Cross stage partial,CSP)[25]組成,CSP將特征拆分為兩部分,特征1經(jīng)過(guò)SPP池化操作后與特征2融合,獲取4個(gè)不同尺寸(1、5、9、13)的感受野,以便Detect層檢測(cè)不同大小的目標(biāo)。Detect層輸出目標(biāo)邊界框坐標(biāo)、置信度和類別信息。
原始YOLO v7-tiny對(duì)粘連的雞蛋和光線較暗處目標(biāo)檢測(cè)性能較差,為提高模型整體檢測(cè)精度,滿足籠養(yǎng)雞舍復(fù)雜環(huán)境的應(yīng)用需求,本研究在YOLO v7-tiny網(wǎng)絡(luò)的基礎(chǔ)上,首先將SiLU激活函數(shù)替換為指數(shù)線性單元(Exponential linear unit,ELU),減少模型訓(xùn)練時(shí)間和提高目標(biāo)檢測(cè)網(wǎng)絡(luò)的整體性能。其次在ELAN結(jié)構(gòu)中采用深度過(guò)參數(shù)化深度卷積層(Depthwise over-parameterized depthwise convolutional layer,DO-DConv)[26]提取目標(biāo)深層特征,以提升光線較暗條件下目標(biāo)的識(shí)別能力。最后在Head的第2、4層引入坐標(biāo)注意力機(jī)制(Coordate attention mechanism,CoordAtt)[27],提取特征圖像中目標(biāo)空間位置信息。
1.3.2激活函數(shù)
深度學(xué)習(xí)中激活函數(shù)是將神經(jīng)網(wǎng)絡(luò)非線性化,激發(fā)隱藏結(jié)點(diǎn),此類函數(shù)通常具有連續(xù)且可微等特點(diǎn)。SiLU激活函數(shù)雖然滿足以上要求,但僅在深度神經(jīng)網(wǎng)絡(luò)的隱藏層中可用[28]。因此,本研究引入ELU激活函數(shù)。圖5為ELU與SiLU激活函數(shù)對(duì)比曲線圖,可以看出,ELU函數(shù)在定義域內(nèi)均連續(xù)且可微,滿足激活函數(shù)的基本要求。當(dāng)輸入特征向量x大于0時(shí),輸出為x本身,減輕了梯度彌散問(wèn)題(導(dǎo)數(shù)為1);當(dāng)x小于0時(shí),采用指數(shù)函數(shù)連接,避免陷入局部最優(yōu)。ELU函數(shù)輸出均值為0,與SiLU函數(shù)相比,降低了模型計(jì)算復(fù)雜度,且單側(cè)飽和,使模型收斂效果更好。
圖5 激活函數(shù)ELU與SiLU的對(duì)比圖
1.3.3改進(jìn)的高效層聚合網(wǎng)絡(luò)
目標(biāo)檢測(cè)模型中特征提取是后續(xù)特征融合的基礎(chǔ)數(shù)據(jù)來(lái)源。YOLO v7-tiny網(wǎng)絡(luò)中ELAN采用常規(guī)卷積提取目標(biāo)特征,但實(shí)際雞舍環(huán)境較為復(fù)雜,常規(guī)卷積操作難以挖掘目標(biāo)深層次特征。因此,本研究將ELAN模塊內(nèi)的常規(guī)卷積層替換為深度卷積層(Depthwise convolutional layer,DConv)以減少模型參數(shù)量,并在其基礎(chǔ)上添加過(guò)參數(shù)化組件(深度卷積)構(gòu)建深度過(guò)參數(shù)化深度卷積層,改進(jìn)后的ELAN結(jié)構(gòu)如圖6所示。與常規(guī)卷積不同,DO-DConv模塊不僅能夠通過(guò)增加網(wǎng)絡(luò)深度提高網(wǎng)絡(luò)的表達(dá)能力,而且采用多層復(fù)合線性操作,使其在推理階段折疊為單層形式,從而減少計(jì)算量。
圖6 改進(jìn)后的ELAN結(jié)構(gòu)
圖7 深度過(guò)參數(shù)化深度卷積層結(jié)構(gòu)
1.3.4坐標(biāo)注意力機(jī)制
為了進(jìn)一步提升模型對(duì)雞只和雞蛋空間位置信息的捕獲能力,本研究在網(wǎng)絡(luò)Head端引入坐標(biāo)注意力機(jī)制。CoordAtt通過(guò)精確的位置信息對(duì)通道關(guān)系和長(zhǎng)期依賴性進(jìn)行編碼,形成一個(gè)對(duì)方向和位置敏感的特征圖用于增強(qiáng)目標(biāo)的特征表示。圖8為CoordAtt編碼過(guò)程,總體可分為坐標(biāo)信息嵌入與坐標(biāo)注意力生成兩部分。
圖8 坐標(biāo)注意力機(jī)制
(1)
(2)
式中Xc(h,i)——高度h在第c個(gè)通道的分量
Xc(j,w)——寬度w在第c個(gè)通道的分量
這種轉(zhuǎn)換使注意力機(jī)制模塊可以捕捉空間方向的長(zhǎng)期依賴關(guān)系,并保存沿著另一空間方向特征的精確位置信息。經(jīng)過(guò)信息嵌入模塊的變換后,將兩個(gè)方向的坐標(biāo)信息進(jìn)行拼接,然后輸入1×1卷積函數(shù)F1中進(jìn)行變換操作,計(jì)算公式為
f=δ(F1([zh,zw]))
(3)
式中 [,]——沿空間維度的串聯(lián)操作
δ——非線性激活函數(shù)
f——對(duì)空間信息在水平與垂直方向進(jìn)行編碼的中間特征
gh=σ(Fh(fh))
(4)
gw=σ(Fw(fw))
(5)
式中σ——Sigmoid激活函數(shù)
gh——沿水平方向特征張量
gw——沿垂直方向特征張量
由于σ計(jì)算耗時(shí)較大,為了加快運(yùn)算速度,采用下采樣比r減少f通道數(shù)。綜上,對(duì)于輸入X的第c個(gè)通道上高度i和寬度j的特征Xc(i,j),經(jīng)過(guò)坐標(biāo)注意力模塊的輸出可表示為
(6)
式中yc(i,j)——嵌入坐標(biāo)注意力模塊后的輸出結(jié)果
ALPATOV等[29]提出車(chē)輛檢測(cè)與道路標(biāo)線檢測(cè)算法,并根據(jù)道路標(biāo)線算法劃分車(chē)道從而實(shí)現(xiàn)多通道車(chē)輛計(jì)數(shù),結(jié)果表明,5個(gè)通道平均計(jì)數(shù)準(zhǔn)確率為98.9%?;诖?本研究通過(guò)檢測(cè)二維碼獲取檢測(cè)框坐標(biāo)和存儲(chǔ)信息區(qū)分不同雞籠,并設(shè)計(jì)分籠計(jì)數(shù)法(Counting in different cages,CDC)實(shí)現(xiàn)雞只與雞蛋自動(dòng)化計(jì)數(shù)。該算法可分為計(jì)數(shù)感興趣區(qū)域(Counting in region of interest,CRoI)設(shè)置與自動(dòng)化分籠計(jì)數(shù)兩個(gè)階段。CRoI設(shè)置流程如下:機(jī)器運(yùn)動(dòng)過(guò)程中,采用YOLO v7-tiny-DO檢測(cè)圖像中目標(biāo),當(dāng)識(shí)別到2個(gè)二維碼時(shí),根據(jù)其檢測(cè)框坐標(biāo)分別計(jì)算待測(cè)圖像中雞只與雞蛋計(jì)數(shù)區(qū)域的橫、縱坐標(biāo),并以此為邊界劃分目標(biāo)CRoI,如圖9a(紅色框表示雞只CRoI,綠色框?yàn)殡u蛋CRoI),計(jì)算過(guò)程為
圖9 計(jì)數(shù)感興趣區(qū)域
(q=0,1,…,29)
(7)
式中q——二維碼存儲(chǔ)的雞籠編號(hào)
xq——二維碼檢測(cè)框左側(cè)上頂點(diǎn)橫坐標(biāo)
yq——二維碼檢測(cè)框左側(cè)下頂點(diǎn)縱坐標(biāo)
[xmin,xmax]——計(jì)數(shù)區(qū)域橫坐標(biāo)取值范圍
值得注意的是,若未識(shí)別到2個(gè)二維碼,則不進(jìn)行CRoI設(shè)置操作,跳至下一幀。
選定CRoI后進(jìn)行自動(dòng)化分籠計(jì)數(shù)。過(guò)程如下:首先采用pyzbar函數(shù)識(shí)別二維碼信息,選擇較小數(shù)值作為待測(cè)雞籠編號(hào)q;然后獲取當(dāng)前幀F(xiàn)(k,q)所有雞只與雞蛋檢測(cè)框的中心點(diǎn)坐標(biāo)(xi,yi),計(jì)算其在CRoI范圍內(nèi)的目標(biāo)個(gè)數(shù)觀測(cè)值F(k,q)num,計(jì)算過(guò)程為
(8)
其中
式中k——幀序號(hào)
最后,當(dāng)二維碼信息發(fā)生變化時(shí),統(tǒng)計(jì)雞籠編號(hào)q所有視頻幀的觀測(cè)值,計(jì)算其均值作為目標(biāo)數(shù)量預(yù)測(cè)值P(k,q),計(jì)算過(guò)程為
(9)
式中 「?——小數(shù)向上取整計(jì)算符號(hào)
mean——所有幀預(yù)測(cè)值的均值
實(shí)際計(jì)數(shù)過(guò)程中,巡檢機(jī)器人移動(dòng)時(shí)獲取的計(jì)數(shù)感興趣區(qū)域與實(shí)際雞籠區(qū)域相比誤差較大,導(dǎo)致分籠計(jì)數(shù)錯(cuò)誤(圖9a綠色虛線框)。為減小運(yùn)動(dòng)過(guò)程中計(jì)數(shù)區(qū)域的誤差,本研究采用單目相機(jī)標(biāo)定模型[30]對(duì)CRoI進(jìn)行校正,實(shí)現(xiàn)CRoI在像素坐標(biāo)與世界坐標(biāo)之間的相互轉(zhuǎn)換,坐標(biāo)變換過(guò)程為
(10)
(11)
式中 (cx,cy)——圖像中心點(diǎn)坐標(biāo)
(ix,iy)——雞籠邊界坐標(biāo)
z1——鏡頭到二維碼的水平距離
z2——鏡頭到雞籠的水平距離
(Wx,Wy,Wz)——(ix,iy)轉(zhuǎn)換后的世界坐標(biāo)
(Ix,Iy)——(ix,iy)糾正后坐標(biāo)
fx、fy——橫、縱像素焦距
1.5.1訓(xùn)練環(huán)境
模型訓(xùn)練硬件環(huán)境主要包括Intel(R)Core(TM)i9-10900X處理器,主頻3.70 GHz,運(yùn)行內(nèi)存24 GB,GPU型號(hào)為T(mén)itan RTX,操作系統(tǒng)為Ubantu 18.04。軟件環(huán)境為Python 3.7語(yǔ)言版本、PyTorch 1.7框架、OpenCV 4.3.5圖像處理庫(kù)與pyzbar 0.1.8二維碼識(shí)別庫(kù)。
1.5.2參數(shù)設(shè)置
網(wǎng)絡(luò)訓(xùn)練參數(shù)設(shè)置如下:輸入圖像尺寸為 640像素×480像素,批量大小為32,初始學(xué)習(xí)率設(shè)置為0.001。采用隨機(jī)梯度下降(Stochastic gradient descent,SGD)方法優(yōu)化模型,動(dòng)量因子為0.937,權(quán)重衰減因子為0.000 5。模型共訓(xùn)練300輪,迭代1個(gè)輪次保存一次模型權(quán)重,最終選擇識(shí)別精度最高的模型。
1.5.3評(píng)價(jià)指標(biāo)
采用精確率(Precision,P)、召回率(Recall,R)、平均精確率(Average precision,AP)、F1值、模型內(nèi)存占用量(Model size)和幀率(Frames per seconds,FPS)來(lái)評(píng)價(jià)模型性能,采用平均絕對(duì)誤差(Mean absolute error,MAE)和平均準(zhǔn)確率(Mean accuracy rate,MAR)評(píng)估分籠計(jì)數(shù)算法。
為驗(yàn)證YOLO v7-tiny-DO模型對(duì)雞只與雞蛋的識(shí)別能力,本研究選擇主流目標(biāo)檢測(cè)網(wǎng)絡(luò)Faster R-CNN、SSD、YOLO v4-tiny、YOLO v5n、YOLO v7-tiny與YOLO v7-tiny-DO進(jìn)行對(duì)比試驗(yàn)。訓(xùn)練過(guò)程中,所有網(wǎng)絡(luò)使用相同訓(xùn)練集,并應(yīng)用215幅測(cè)試集圖像對(duì)模型性能進(jìn)行綜合評(píng)估。經(jīng)完整測(cè)試后,不同模型檢測(cè)結(jié)果如表1所示,表中AP0.5表示交并比為0.5時(shí)的平均精確率。從表1可以看出,與Faster R-CNN、SSD、YOLO v4-tiny、YOLO v5n和YOLO v7-tiny相比,YOLO v7-tiny-DO的F1值優(yōu)勢(shì)較為突出,雞只的F1值為97.0%,分別高于以上模型21.0、4.0、8.0、1.5、1.7個(gè)百分點(diǎn);雞蛋的F1值為98.4%,比其他模型分別高31.4、25.4、6.4、4.4、0.7個(gè)百分點(diǎn)。
表1 不同檢測(cè)網(wǎng)絡(luò)對(duì)比
對(duì)比YOLO v7-tiny-DO與YOLO v7-tiny,二者幀率均高于100 f/s,能夠滿足實(shí)時(shí)檢測(cè)任務(wù)的需要;YOLO v7-tiny-DO模型檢測(cè)雞只和雞蛋的AP分別為96.9%與99.3%,相比YOLO v7-tiny分別提高3.2、1.4個(gè)百分點(diǎn);YOLO v7-tiny-DO模型內(nèi)存占用量為5.6 MB,比原模型減小6.1 MB,適用于算力匱乏的巡檢機(jī)器人。綜上,YOLO v7-tiny-DO網(wǎng)絡(luò)在提升模型精度的情況下降低了模型參數(shù)量,證明了改進(jìn)后模型的有效性。
由于實(shí)際雞舍環(huán)境較為復(fù)雜,采集圖像中通常存在局部遮擋、運(yùn)動(dòng)模糊、雞蛋粘連與光線昏暗等問(wèn)題,導(dǎo)致雞只與雞蛋自動(dòng)化識(shí)別與計(jì)數(shù)困難。因此,針對(duì)以上4種場(chǎng)景分別進(jìn)行討論。
2.2.1局部遮擋情況下識(shí)別結(jié)果對(duì)比
籠養(yǎng)雞舍環(huán)境中鐵絲或食槽遮擋易造成目標(biāo)部分特征丟失,為驗(yàn)證改進(jìn)后模型在局部遮擋情況下檢測(cè)能力,將圖2a的2幅圖像輸入6個(gè)模型進(jìn)行測(cè)試,檢測(cè)結(jié)果如圖10所示,圖中綠色、橙色、藍(lán)色和紫色橢圓分別表示雞只漏檢、雞只錯(cuò)檢、雞蛋漏檢與雞蛋錯(cuò)檢。表2為對(duì)應(yīng)檢測(cè)結(jié)果,可以看出,YOLO v7-tiny-DO、YOLO v7-tiny和YOLO v5n能夠識(shí)別圖像中所有目標(biāo);Faster R-CNN雖然能夠識(shí)別被遮擋目標(biāo),但誤將紅色飲水器識(shí)別為雞只或雞蛋(圖10a),與其模型精確率低、召回率高相對(duì)應(yīng),發(fā)生錯(cuò)檢次數(shù)較多;與Faster R-CNN不同,SSD和YOLO v4-tiny召回率低、精確率高,在遮擋較嚴(yán)重情況下,雞只或雞蛋特征缺失,易發(fā)生漏檢現(xiàn)象(圖10b、10c)。經(jīng)過(guò)對(duì)比分析,YOLO v7-tiny-DO、YOLO v7-tiny和YOLO v5n模型對(duì)于遮擋目標(biāo)檢測(cè)結(jié)果較好,未發(fā)生漏檢或錯(cuò)檢情況。
表2 局部遮擋情況下檢測(cè)結(jié)果對(duì)比
圖10 局部遮擋情況圖像檢測(cè)結(jié)果對(duì)比
2.2.2運(yùn)動(dòng)模糊情況下識(shí)別結(jié)果對(duì)比
實(shí)際巡檢過(guò)程中,雞只快速移動(dòng)易導(dǎo)致圖像中雞只頭部發(fā)生模糊現(xiàn)象,圖11為6個(gè)模型檢測(cè)圖2b中模糊雞頭情況的結(jié)果,對(duì)應(yīng)試驗(yàn)結(jié)果如表3所示。由表3可以看出,YOLO v7-tiny-DO能夠識(shí)別圖像中所有模糊雞頭,Faster R-CNN漏檢1只雞(圖11a),SSD漏檢2只雞(圖11b),YOLO v4-tiny漏檢2只雞(圖11c),YOLO v5n漏檢1只雞(圖11d),YOLO v7-tiny漏檢2只雞(圖11e)。當(dāng)圖像中雞頭發(fā)生運(yùn)動(dòng)模糊時(shí),目標(biāo)特征較為發(fā)散,不易識(shí)別。經(jīng)過(guò)對(duì)比,在運(yùn)動(dòng)模糊情況下本研究提出的YOLO v7-tiny-DO檢測(cè)性能優(yōu)于其他模型。
表3 運(yùn)動(dòng)模糊情況下檢測(cè)結(jié)果對(duì)比
圖11 運(yùn)動(dòng)模糊情況圖像檢測(cè)結(jié)果對(duì)比
2.2.3雞蛋粘連情況下識(shí)別結(jié)果對(duì)比
籠養(yǎng)模式下蛋雞飼養(yǎng)密度較大,蛋網(wǎng)上雞蛋粘連現(xiàn)象較為嚴(yán)重,圖12為6個(gè)模型在圖2c中粘連雞蛋情況下的識(shí)別結(jié)果,對(duì)應(yīng)試驗(yàn)結(jié)果如表4所示。由表4可知,YOLO v7-tiny-DO準(zhǔn)確識(shí)別圖像中所有粘連雞蛋,其他模型均存在不同程度的雞蛋漏檢情況(圖12a~12e),其中SSD識(shí)別結(jié)果最差(圖12b),僅能檢測(cè)到多個(gè)粘連雞蛋中的一枚雞蛋。經(jīng)過(guò)對(duì)比,YOLO v7-tiny-DO在雞蛋粘連情況下的雞蛋計(jì)數(shù)性能最優(yōu)。
表4 雞蛋粘連情況下檢測(cè)結(jié)果對(duì)比
圖12 雞蛋粘連情況圖像檢測(cè)結(jié)果對(duì)比
2.2.4光線昏暗情況下識(shí)別結(jié)果對(duì)比
籠養(yǎng)雞舍內(nèi)昏暗的環(huán)境為蛋雞和雞蛋識(shí)別與計(jì)數(shù)工作帶來(lái)巨大挑戰(zhàn)。圖13為6個(gè)模型在圖2d光線昏暗環(huán)境下的檢測(cè)結(jié)果,對(duì)應(yīng)試驗(yàn)結(jié)果如表5所示。由表5可以看出,YOLO v7-tiny-DO漏檢了 1只雞(圖13f);Faster R-CNN錯(cuò)檢3只雞和2個(gè)雞蛋(圖13a);SSD漏檢2只雞和12枚雞蛋(圖13b);YOLO v4-tiny漏檢2只雞和2個(gè)雞蛋,錯(cuò)檢2只雞(圖13c);YOLO v5n漏檢2只雞和2枚雞蛋(圖13d);YOLO v7-tiny漏檢2只雞和2枚雞蛋(圖13e)。綜上,圖中雞只與雞蛋的形態(tài)特征較為模糊,所有模型均存在漏檢或錯(cuò)檢情況,但相比其他模型,YOLO v7-tiny-DO漏檢與錯(cuò)檢數(shù)目最少,說(shuō)明本研究提出的模型性能更好。
表5 光線昏暗環(huán)境下檢測(cè)結(jié)果對(duì)比
圖13 光線昏暗環(huán)境圖像檢測(cè)結(jié)果對(duì)比
將YOLO v7-tiny-DO部署到NVIDIA Jetson AGX Xavier邊緣計(jì)算平臺(tái),經(jīng)深度學(xué)習(xí)引擎(DL accelerator與Vision accelerator)加速后,快速檢測(cè)視頻幀中目標(biāo),實(shí)現(xiàn)籠養(yǎng)模式下雞只與雞蛋自動(dòng)化分籠計(jì)數(shù)。為驗(yàn)證算法有效性,本研究在北京市華都峪口禽業(yè)有限公司第3場(chǎng)8舍選取30個(gè)雞籠開(kāi)展計(jì)數(shù)試驗(yàn),巡檢機(jī)器人運(yùn)動(dòng)過(guò)程中,基于內(nèi)置取幀算法每天采集15 min視頻數(shù)據(jù)用于測(cè)試,持續(xù) 3 d,期間第21號(hào)雞籠有1只死雞被淘汰。圖14為測(cè)試現(xiàn)場(chǎng)及計(jì)數(shù)結(jié)果。
圖14 測(cè)試現(xiàn)場(chǎng)與計(jì)數(shù)結(jié)果
表6為不同測(cè)試批次雞只與雞蛋的自動(dòng)化分籠計(jì)數(shù)結(jié)果。由表6可知,測(cè)試批次1中雞只和雞蛋分籠計(jì)數(shù)MAR分別為96.7%和97.2%,MAE分別為0.13只和0.07枚;測(cè)試批次2中雞/蛋分籠計(jì)數(shù)MAR分別為97.5%和94.5%,MAE分別為0.10只和0.13枚;測(cè)試批次3中雞只和雞蛋分籠計(jì)數(shù)MAR分別為96%和97.2%,MAE分別為0.17只和0.07枚。經(jīng)過(guò)分析可知,3次測(cè)試雞只與雞蛋分籠計(jì)數(shù)平均準(zhǔn)確率均值分別為96.7%和96.3%,每籠平均絕對(duì)誤差均值分別為0.13只和0.09枚,說(shuō)明通過(guò)本文算法獲取籠內(nèi)雞只與雞蛋個(gè)數(shù)是可行的。
表6 雞/蛋自動(dòng)化分籠計(jì)數(shù)結(jié)果
圖15為不同測(cè)試批次雞只與雞蛋自動(dòng)化分籠計(jì)數(shù)結(jié)果統(tǒng)計(jì)圖。從圖中可以看出,測(cè)試批次1中0、9、26、29號(hào)雞籠均漏檢1只雞,21、25號(hào)雞籠均漏檢1枚雞蛋;測(cè)試批次2中7、10、12號(hào)雞籠存在雞只計(jì)數(shù)錯(cuò)誤,7、22、26、27號(hào)雞籠存在雞蛋計(jì)數(shù)錯(cuò)誤,平均絕對(duì)誤差均為1枚;測(cè)試批次3中7、8、11、17、20號(hào)雞籠均漏檢1只雞,3、27號(hào)雞籠均漏檢1枚雞蛋。對(duì)于漏檢目標(biāo),可能是因?yàn)殡u舍內(nèi)光線較為昏暗導(dǎo)致。
圖15 雞/蛋自動(dòng)化分籠計(jì)數(shù)可視化結(jié)果
(1)選擇YOLO v7-tiny為基礎(chǔ)網(wǎng)絡(luò),首先將模型激活函數(shù)替換為ELU,然后在ELAN內(nèi)構(gòu)建深度過(guò)參數(shù)化深度卷積層,最后在Head端引入坐標(biāo)注意力機(jī)制。試驗(yàn)結(jié)果表明,YOLO v7-tiny-DO識(shí)別雞只與雞蛋的AP分別為96.9%與99.3%,幀率為106.4 f/s,模型內(nèi)存占用量為5.6 MB,與原模型相比,識(shí)別雞只與雞蛋的AP分別提高了3.2、1.4個(gè)百分點(diǎn),模型內(nèi)存占用量減少了6.1 MB,適用于部署到算力匱乏的巡檢機(jī)器人上。
(2)與主流目標(biāo)檢測(cè)網(wǎng)絡(luò)Faster R-CNN、SSD、YOLO v4-tiny和YOLO v5n相比,YOLO v7-tiny-DO的F1值更優(yōu),分別高21.0、4.0、8.0、1.5個(gè)百分點(diǎn),雞蛋的F1值分別高31.4、25.4、6.4、4.4個(gè)百分點(diǎn)。對(duì)比以上模型在復(fù)雜場(chǎng)景下的檢測(cè)性能,結(jié)果表明,YOLO v7-tiny-DO在局部遮擋、動(dòng)態(tài)模糊和雞蛋粘連情況下均能實(shí)現(xiàn)高精度識(shí)別與定位,在光線昏暗情況下識(shí)別結(jié)果優(yōu)于其他模型。
(3)將YOLO v7-tiny-DO模型部署到搭載NVIDIA Jetson AGX Xavier的巡檢機(jī)器人上,開(kāi)展為期3 d的計(jì)數(shù)測(cè)試。結(jié)果表明,3個(gè)測(cè)試批次雞只與雞蛋的分籠計(jì)數(shù)平均準(zhǔn)確率均值分別為96.7%和96.3%,每籠平均絕對(duì)誤差均值分別為0.13只雞和0.09枚雞蛋。