趙新龍 顧臻奇 李 軍
(1.浙江理工大學(xué)信息科學(xué)與工程學(xué)院, 杭州 310018; 2.臺州學(xué)院智能制造學(xué)院, 臺州 318000)
黑水虻幼蟲又稱“鳳凰蟲”,是一種全世界廣泛分布的資源昆蟲,其以禽畜糞便、生活廢棄物為食,而其本身蛋白質(zhì)、脂肪含量較高,能用于生產(chǎn)高價值的動物蛋白飼料,在全世界范圍內(nèi)被大量用于廚余垃圾、牲畜糞便等有機(jī)廢物的無害化處理[1-2]。有機(jī)廢物轉(zhuǎn)化效率受其生物密度影響,為達(dá)到效率的最大化,需要找到幼蟲密度與有機(jī)廢物處理速度之間的關(guān)系,因此需要對黑水虻幼蟲進(jìn)行計數(shù)[3]。
過去常使用人工計數(shù)方式,近幾年,隨著機(jī)器視覺的廣泛應(yīng)用,基于機(jī)器視覺的目標(biāo)計數(shù)成為一大研究方向。而黑水虻幼蟲這類目標(biāo)具有繁殖迅速、生物量巨大的特性,人工計數(shù)方式費時費力,所以基于機(jī)器視覺的目標(biāo)計數(shù)方式有巨大的應(yīng)用價值。在目前研究中,基于機(jī)器學(xué)習(xí)的檢測計數(shù)有兩種主要的實現(xiàn)方式:第1種為通過獲得包含需求計數(shù)目標(biāo)的圖像數(shù)據(jù)集,將圖像中的所有目標(biāo)統(tǒng)計出來;第2種根據(jù)被識別目標(biāo)的運動學(xué)特性實現(xiàn)計數(shù)。第2種方式自上而下需要經(jīng)過目標(biāo)識別和目標(biāo)追蹤兩個過程,經(jīng)過大量研究成果總結(jié),第1種方式主要研究問題為:對大密度和重疊導(dǎo)致大量信息丟失的目標(biāo)進(jìn)行目標(biāo)識別[4-6]。第2種方式主要研究的問題為實現(xiàn)目標(biāo)識別后的目標(biāo)追蹤任務(wù)[7]。兩種計數(shù)方式應(yīng)用場景不同,各有優(yōu)劣:第1種方式以張璐等[8]對魚群計數(shù)的研究為例,優(yōu)點在于算法邏輯簡單,但現(xiàn)實應(yīng)用中存在圖像過大導(dǎo)致處理速度下降的缺點。針對上述問題,本文主要進(jìn)行第2種方式的研究。
關(guān)于目標(biāo)識別,在應(yīng)用于黑水虻幼蟲的情境下,本文需要克服兩個困難:飼料背景對幼蟲目標(biāo)的干擾以及幼蟲聚集的情況。普通算法提取特征單一,無法考慮多維特征,但深度學(xué)習(xí)算法可以提取多維度特征,為此類情況的解決提供了方法。其中,基于卷積神經(jīng)網(wǎng)絡(luò)(Convolutional neural network,CNN)建立的目標(biāo)識別算法,在農(nóng)業(yè)采摘機(jī)械、光伏設(shè)備缺陷檢測、各種機(jī)器人視覺中被大量應(yīng)用[9-13]。文獻(xiàn)[14]在研究Faster R-CNN(更快速區(qū)域卷積神經(jīng)網(wǎng)絡(luò))檢測方面的研究過程中,對比了YOLO網(wǎng)絡(luò)和Faster R-CNN網(wǎng)絡(luò)處理速度,相同條件下YOLO網(wǎng)絡(luò)擁有比Fast R-CNN快一個數(shù)量級的速度優(yōu)勢。文獻(xiàn)[15]通過改進(jìn)YOLO v3網(wǎng)絡(luò)提高了其對小目標(biāo)檢測的敏感性,使目標(biāo)推理精度提高2.36%,達(dá)到92.43%。文獻(xiàn)[16]使用YOLO v3-tiny,為YOLO系列中結(jié)構(gòu)最簡單的網(wǎng)絡(luò),識別農(nóng)田中的障礙物,精度和召回率也分別達(dá)到95.5%和93.7%。最近,隨著Yolo系列新網(wǎng)絡(luò)模型YOLO v6和YOLO v7的推出,目標(biāo)檢測技術(shù)的研究和應(yīng)用又取得了新的突破[17-19]。其中,文獻(xiàn)[20]證明了改進(jìn)后的YOLO v7在小目標(biāo)檢測方面優(yōu)于其他模型的效果。綜上所述,YOLO網(wǎng)絡(luò)在目標(biāo)識別的大量實際應(yīng)用場景有較好的精度表現(xiàn),對小目標(biāo)具有很好的靈敏度,再加之其運行速度快,對應(yīng)文中黑水虻幼蟲個體目標(biāo)小、數(shù)量多的特點,作為本研究的目標(biāo)識別部分算法能達(dá)到較好的效果。
多目標(biāo)追蹤(Multiple object tracking,MOT)主要需要解決目標(biāo)形態(tài)尺度變化、目標(biāo)遮擋消失、重新出現(xiàn)后再次追蹤這三大問題。由于其在實際應(yīng)用中巨大的價值,在全世界有大量研究者,且提出了許多不同的方法解決這個問題,主要可以分為3種方向:基于排序算法(Simple online and realtime tracking,SORT)和DeepSORT的先檢測后追蹤的方式[21-24];基于JDE和CenterTrack的檢測和追蹤結(jié)合的方式;基于TransTrack和TrackFormer的注意力機(jī)制的方式[25-26]。本文采用第1種目標(biāo)追蹤方式,其中SORT適用于處理高密度目標(biāo)的情況,而DeepSORT是在SORT基礎(chǔ)上發(fā)展而來的算法,它將深度學(xué)習(xí)技術(shù)應(yīng)用于目標(biāo)跟蹤中,適用于需要進(jìn)行多目標(biāo)跟蹤以及在遮擋和交叉行人等情況下進(jìn)行目標(biāo)追蹤的應(yīng)用場景。然而,針對黑水虻幼蟲計數(shù)應(yīng)用,其目標(biāo)追蹤在傳送帶上無遮擋,且由于幼蟲密度高導(dǎo)致計數(shù)速率要求高,因此SORT算法更加適合當(dāng)前的應(yīng)用情況。文獻(xiàn)[27]構(gòu)建了標(biāo)準(zhǔn)SORT算法,在使用較小計算量的情況下,精度與最先進(jìn)在線追蹤器相當(dāng),同時,追蹤器更新頻率達(dá)到260 Hz,為本文目標(biāo)追蹤實現(xiàn)提供了思路。
本文完成硬件平臺搭建,根據(jù)硬件設(shè)備建立數(shù)據(jù)集。自上而下實現(xiàn)基于YOLO v5s深度學(xué)習(xí)網(wǎng)絡(luò)黑水虻幼蟲的目標(biāo)識別任務(wù)和基于標(biāo)準(zhǔn)SORT目標(biāo)追蹤算法,結(jié)合兩種算法實現(xiàn)上文的第2種計數(shù)方式。在目標(biāo)識別算法方面,本文通過對比YOLO v5s與其他網(wǎng)絡(luò)的性能差異,提供選擇YOLO v5s的依據(jù);在目標(biāo)追蹤方面,針對原始SORT算法目標(biāo)追蹤不穩(wěn)定導(dǎo)致的計數(shù)精度不足問題,本文結(jié)合卡爾曼濾波原理,改進(jìn)SORT目標(biāo)追蹤模型,通過仿真和應(yīng)用實驗,論證改進(jìn)SORT模型在幼蟲計數(shù)系統(tǒng)應(yīng)用上的優(yōu)越性。
1.1.1硬件平臺搭建
為收集數(shù)據(jù)需要,設(shè)計并制造如圖1所示設(shè)備,設(shè)備主要由上料機(jī)構(gòu)、傳輸機(jī)構(gòu)、相機(jī)支架機(jī)構(gòu)、支撐機(jī)構(gòu)等4部分組成。使用深圳億維X1-32TD-E0型可編程邏輯控制器(PLC)作為下位機(jī)控制機(jī)械部分動作,伺服電機(jī)選用禾川SV-X3MM200A。使用個人計算機(jī)(PC)作為上位機(jī)進(jìn)行圖像處理,顯卡為NVIDIA RTX2060,顯存6 GB,CPU型號為Intel i7-11700 2.5 GHz,深度學(xué)習(xí)框架為Pytorch(Python 3.9,Pytorch 1.10.2,torchvision 0.11.3)。
1.1.2實驗數(shù)據(jù)收集
使用上述設(shè)備獲取5段黑水虻幼蟲計數(shù)視頻作為本文計數(shù)結(jié)果測試數(shù)據(jù)集。另外,分別通過上述設(shè)備和手機(jī)拍攝的方式獲取各50幅共100幅包含目標(biāo)的圖像作為訓(xùn)練集,構(gòu)成中等規(guī)模的訓(xùn)練集用于YOLO v5s網(wǎng)絡(luò)訓(xùn)練。
為實現(xiàn)幼蟲計數(shù)目標(biāo),需要研究基于YOLO v5s的目標(biāo)識別、基于SORT的目標(biāo)追蹤和程序?qū)崿F(xiàn)3個部分,各部分包含功能如圖2所示。系統(tǒng)中首先使用YOLO v5s實現(xiàn)目標(biāo)識別,再通過SORT算法實現(xiàn)被識別目標(biāo)的身份標(biāo)識號(Identity document,ID)指派,同一個ID目標(biāo)分別有兩幀畫面在劃線兩側(cè)則計數(shù)值增加,圖3為劃線計數(shù)邏輯示意圖。
圖3 劃線計數(shù)示意圖
1.2.1基于YOLO v5s的目標(biāo)識別實現(xiàn)
YOLO v5s是YOLO v5網(wǎng)絡(luò)中深度最小的網(wǎng)絡(luò),該網(wǎng)絡(luò)在本文硬件配置情況下運行速度能夠達(dá)到156 f/s,目標(biāo)識別的精度也能達(dá)到預(yù)期需求。YOLO v5s[28]網(wǎng)絡(luò)主要由Backbone、Neck、Detect網(wǎng)絡(luò)組成,圖4為其網(wǎng)絡(luò)結(jié)構(gòu)圖。Backbone由一系列卷積神經(jīng)網(wǎng)絡(luò)組成以提取圖像特征,其第1層Focus層能減少模型的計算量,加快訓(xùn)練速度。Neck是一系列圖像特征混合組合的特征聚合層,將Backbone層傳輸來的特征降維排列,然后將輸出的特征圖傳輸?shù)紻etect層。Detect層主要用于模型的最終檢測,對上一層輸出的特征圖應(yīng)用錨框,輸出一個向量,包含被識別的目標(biāo)位置、執(zhí)行度以及類別,有76×76、38×38、19×19共3種尺寸的輸出,分別用于對大、中、小3種尺度目標(biāo)的識別,需提升對更小物體的敏感性可減少19×19輸出層的大小。
圖4 YOLO v5s網(wǎng)絡(luò)基本結(jié)構(gòu)
1.2.2基于SORT的目標(biāo)追蹤實現(xiàn)
圖5為目標(biāo)追蹤算法實現(xiàn)過程的示意圖。主要流程為:首先,獲得Ti幀中目標(biāo)位置;然后,使用卡爾曼濾波獲得Ti幀目標(biāo)在Ti+1幀時預(yù)測位置,如圖5中Ti+1時刻的彩色框所示,Ti+1時刻灰色目標(biāo)為實際目標(biāo)位置;最后,獲得預(yù)測位置(彩色)與實際位置(灰色)的交并比(Intersection over union,IOU),通過匈牙利算法以上述交并比取非為代價矩陣得到前后兩幀目標(biāo)之間的對應(yīng)關(guān)系。在主程序中實現(xiàn)過程:先通過目標(biāo)識別算法獲得包含[x1, y1, x2, y2, cls]5個特征的列表,然后將列表輸入SORT算法后返回[x1, y1, x2, y2, ID]列表,如前后兩幀中相同ID的目標(biāo)為同一目標(biāo)。
圖5 SORT算法追蹤示意圖
(1)標(biāo)準(zhǔn)卡爾曼濾波跟蹤模型實現(xiàn)
在SORT算法中使用標(biāo)準(zhǔn)卡爾曼濾波模型,其狀態(tài)量公式為
(1)
式中x——目標(biāo)框長軸中心位置
y——目標(biāo)框?qū)捿S中心位置
s——目標(biāo)框面積
r——目標(biāo)框長寬比
X——狀態(tài)向量
使用通用運動學(xué)模型離散化后得到
(2)
式中F——狀態(tài)轉(zhuǎn)移矩陣
Xk-1——第k-1時刻的狀態(tài)向量
Xk——第k時刻的狀態(tài)向量
觀測量為卡爾曼預(yù)測輸出結(jié)果,只需要狀態(tài)量中前4個變量,得到卡爾曼濾波觀測方程為
(3)
式中H——觀測矩陣
Zk——第k時刻的觀測向量
(2)交并比計算實現(xiàn)
兩個目標(biāo)框交集面積與并集面積的比值可以用于評定兩個目標(biāo)框重合的程度,即
(4)
式中A(C)——目標(biāo)框C面積
A(G)——識別框G面積
Iou(C,G)——目標(biāo)框C與識別框G的交并比
重合度與IOU的關(guān)系如圖6所示。
圖6 交并比計算示意圖
(3)使用匈牙利算法解決ID指派問題
在卡爾曼濾波器正常工作的前提下,預(yù)測框與目標(biāo)框的重合度越高,則IOU越大;反之,重合度越低,則IOU越小。匈牙利算法能夠解決n×m維矩陣的最小代價匹配問題,使用MIOU作為匈牙利算法的代價矩陣,來匹配目標(biāo)框和與其IOU最小的追蹤框,實現(xiàn)兩個框之間的最高重合度匹配。交并比矩陣MIOU為
MIOU=
(5)
式中Iou(dn,tm)——第n個目標(biāo)框和第m個識別框的交并比
1.2.3改進(jìn)卡爾曼濾波模型設(shè)計
圖7為同時考慮運動模型預(yù)測位置和實際識別位置獲得真實位置k的示意圖。對于運動模型預(yù)測來說,本文假設(shè)真實位置k出現(xiàn)在預(yù)測位置xk周圍空間的概率滿足高斯分布,因此加入滿足高斯分布的噪聲w。同時,本文認(rèn)為實際檢測位置受幀率不穩(wěn)定、識別框抖動干擾而不穩(wěn)定,也需要引入滿足高斯分布的噪聲u。運動模型預(yù)測位置xk與實際識別位置Zk兩者高斯分布的重合部分就是真實位置k出現(xiàn)位置的分布區(qū)域,且滿足高斯分布,如圖中灰線所示。噪聲w和u滿足高斯分布
圖7 可能位置概率圖
(6)
式中N(0,Q)——均值為0、協(xié)方差為Q的正態(tài)分布
N(0,R)——均值為0、協(xié)方差為R的正態(tài)分布
p(w)——w噪聲概率
p(u)——u噪聲概率
根據(jù)卡爾曼濾波原理,每個預(yù)測循環(huán)中進(jìn)行的濾波器更新公式為
(7)
式中A——狀態(tài)轉(zhuǎn)移矩陣
Pk-1——第k-1時刻的狀態(tài)估計誤差協(xié)方差矩陣
Pk——第k時刻的狀態(tài)估計誤差協(xié)方差矩陣
P′k——第k時刻的協(xié)方差矩陣計算過渡矩陣
Q——系統(tǒng)噪聲協(xié)方差矩陣
R——測量噪聲協(xié)方差矩陣
Kk——第k時刻的卡爾曼增益
下一幀位置更新公式為
xk+1=Ak+vt
(8)
式中xk+1——第k+1時刻的運動模型預(yù)測位置
針對實際應(yīng)用中面對的勻速直線運動情況,傳統(tǒng)的卡爾曼濾波模型可以綜合考慮多維的運動變量來預(yù)測目標(biāo),但對于當(dāng)前的應(yīng)用對象,引入其他維度的預(yù)測信息只會對IOU產(chǎn)生負(fù)面影響,從而降低ID指派成功率。因此,本文建立一維運動模型,將狀態(tài)轉(zhuǎn)移矩陣A設(shè)置為1,將觀測矩陣H設(shè)置為1,從而提高了卡爾曼濾波的目標(biāo)追蹤效果。
此外,隨著傳送帶運動速度的增加,目標(biāo)可能僅在畫面中出現(xiàn)2、3幀,因此需要提高卡爾曼濾波器的響應(yīng)速度。Q、R、P矩陣分別描述系統(tǒng)狀態(tài)的隨機(jī)擾動、觀測值的噪聲和狀態(tài)估計誤差的不確定性,降低這些矩陣的值可以提高濾波器對觀測值的信任程度,從而使預(yù)測框更快地追蹤上目標(biāo)框。但在實際應(yīng)用中,除了需要滿足快速性外,當(dāng)目標(biāo)框的位置跳動較大時,卡爾曼濾波的輸出也不能過于接近觀測值。因此,需要通過實驗和仿真確定一個折中的值,使預(yù)測框既能快速跟上目標(biāo)框,又不會受到過多目標(biāo)框位置跳動的影響。本文最終將Q、R、P的初值分別設(shè)置為10、10、800。
在當(dāng)前實驗應(yīng)用的前提下,假定配置環(huán)境相同且使用相同訓(xùn)練參數(shù),YOLO v5s和其他網(wǎng)絡(luò)模型的訓(xùn)練結(jié)果如表1(表中mAP@0.5表示IOU重疊閾值大于0.5的識別對象的平均精度)所示,本文使用的YOLO v5s網(wǎng)絡(luò)經(jīng)過訓(xùn)練后運行幀率達(dá)到156 f/s,mAP@0.5為99.10%,精度(Precision,P)為90.11%,召回率(Recall,R)為99.22%。對于真實應(yīng)用場景中的圖像,選取3種YOLO網(wǎng)絡(luò)模型進(jìn)行推理,并對其效果進(jìn)行比較,結(jié)果如圖8所示。
表1 不同網(wǎng)絡(luò)模型實驗結(jié)果對比
圖8 不同YOLO模型應(yīng)用效果對比
由表1和圖8可知YOLO系列的網(wǎng)絡(luò)性能優(yōu)于Faster-R CNN;另一方面,即使YOLO v5s精度低于其他兩個YOLO網(wǎng)絡(luò),但其幀率、mAP@0.5和召回率卻高于其他兩個網(wǎng)絡(luò)。在幀率方面,由于本文提出的計數(shù)方法需要應(yīng)用于工業(yè)現(xiàn)場,實時性要求高,因此YOLO v5s具有更大的優(yōu)勢。在召回率方面,由于目標(biāo)識別過程中無法被召回而丟失的個數(shù)將為計數(shù)過程引入絕對誤差,因此YOLO v5s具有更高的召回率。在精度和mAP@0.5方面,其他兩個網(wǎng)絡(luò)的該值低于YOLO v5s,但它們?nèi)孔R別目標(biāo)的平均精度高于YOLO v5s,說明它們在訓(xùn)練后賦予了過高的精度于IOU重疊閾值較低的個體,這表明模型的泛化能力較差。這與當(dāng)前應(yīng)用條件下訓(xùn)練集數(shù)量過少,以及YOLO v6s和YOLO v7模型相對于YOLO v5s模型更加復(fù)雜有關(guān)。從圖8的實際應(yīng)用效果比較中,也可以得出這一結(jié)論。綜上所述,在當(dāng)前應(yīng)用條件下,相比其他網(wǎng)絡(luò)模型,YOLO v5s網(wǎng)絡(luò)具有更好的應(yīng)用效果。
為了直觀顯示追蹤效果,假設(shè)目標(biāo)運動的真實運動模型為從零點位置以速度3 834像素/s勻速運動,步長選擇視頻幀率的倒數(shù)1/71 s。由于實際應(yīng)用的需求,需要在較少個步長內(nèi)追上識別框,因此在仿真實驗中只需仿真20個循環(huán)。同時,相機(jī)拍攝為離散情況,導(dǎo)致物體出現(xiàn)第一幀不在坐標(biāo)原點,因此,在仿真的第9個循環(huán)開始加入卡爾曼濾波追蹤。
圖9a為預(yù)測開始之后預(yù)測位置、真實位置、加入干擾的觀測位置隨時間的變化,圖9b為預(yù)測位置與真實位置的差值,可以看到,預(yù)測能快速逼近真實位置,誤差像素能穩(wěn)定在系統(tǒng)正常運行允許的區(qū)間內(nèi)。
圖9 仿真實驗結(jié)果
將通過仿真的改進(jìn)卡爾曼濾波模型應(yīng)用于SORT算法中,實際黑水虻幼蟲目標(biāo)追蹤效果如圖10所示,其中紅色為預(yù)測框,綠色為目標(biāo)框??梢姼倪M(jìn)卡爾曼濾波模型實際追蹤效果達(dá)到仿真預(yù)期:預(yù)測框能快速跟上目標(biāo)框,同時在第k+2幀追蹤目標(biāo)位置發(fā)生跳變的情況下,自動進(jìn)行誤差補(bǔ)償,在長時間內(nèi)保持了穩(wěn)定的追蹤效果。
圖10 改進(jìn)卡爾曼濾波預(yù)測效果
使用同樣的YOLO v5s目標(biāo)識別網(wǎng)絡(luò),將匈牙利算法的3個參數(shù)同樣設(shè)置為max_age=1、min_hits=0、iou_threshold=0.1。由于上料密度會改變料的堆積、并排等情況,導(dǎo)致目標(biāo)識別準(zhǔn)確度下降影響精度,因此,采集5段測試用數(shù)據(jù)集,包含不同上料密度情況,對比本文方法與基于標(biāo)準(zhǔn)SORT算法的劃線計數(shù)算法計數(shù)精度,具體結(jié)果如表2、3所示。
表2 YOLO v5s+標(biāo)準(zhǔn)SORT計數(shù)方式實驗結(jié)果
表3 YOLO v5s+改進(jìn)SORT計數(shù)方式實驗結(jié)果
本文采用視頻中包含幼蟲目標(biāo)的有效幀總數(shù)來定量判斷實際上料密度,由于上料總數(shù)不變,有效幀越多,則單位幀平均幼蟲數(shù)量越少,上料密度越小;反之,有效幀越少,則單位幀平均幼蟲數(shù)量越多,上料密度越大。由表2、3可知,較大密度上料的計數(shù)精度往往差于較小密度上料的計數(shù)精度。同時,使用本文改進(jìn)卡爾曼濾波的SORT目標(biāo)追蹤計數(shù)方式不論大密度或是小密度上料的計數(shù)精度都高于標(biāo)準(zhǔn)SORT目標(biāo)追蹤計數(shù)方式。本方法計數(shù)最高精度達(dá)到99.71%,平均精度達(dá)到95.55%,滿足系統(tǒng)設(shè)計要求。
(1)針對黑水虻幼蟲目標(biāo)識別過程中需要克服的飼料與幼蟲混合的干擾以及幼蟲堆料,本文對比多種目標(biāo)識別模型效果,最終選用YOLO v5s深度學(xué)習(xí)網(wǎng)絡(luò)提取圖像多尺度特征,使用中型規(guī)模的數(shù)據(jù)集訓(xùn)練出可用的目標(biāo)識別網(wǎng)絡(luò),實驗結(jié)果表明,其幀率為156 f/s,mAP@0.5為99.10%,精度為90.11%,召回率為99.22%,達(dá)到本文需求的目標(biāo)識別要求。
(2)通過實際實驗,驗證了使用標(biāo)準(zhǔn)卡爾曼濾波配合匈牙利算法實現(xiàn)SORT目標(biāo)追蹤為劃線計數(shù)分配ID方式的可行性。
(3)針對標(biāo)準(zhǔn)卡爾曼濾波預(yù)測效果不佳導(dǎo)致計數(shù)精度較差的問題,本文提出了改進(jìn)卡爾曼濾波模型。通過仿真和實際實驗發(fā)現(xiàn),基于本文模型的計數(shù)最高精度為99.71%,平均精度為95.55%,均高于使用標(biāo)準(zhǔn)卡爾曼濾波預(yù)測模型。因此,相比于標(biāo)準(zhǔn)卡爾曼濾波模型,本文提出的模型更適用于黑水虻幼蟲劃線計數(shù)系統(tǒng)。