覃學(xué)標(biāo),黃冬梅,2,宋 巍,賀 琪,杜艷玲,袁小華
(1 上海海洋大學(xué)信息學(xué)院,上海 201306;2 上海電力大學(xué)電子與信息工程學(xué)院,上海 200090)
在漁業(yè)養(yǎng)殖過程中,需要定期地對養(yǎng)殖池內(nèi)魚的數(shù)量進(jìn)行監(jiān)測[1-2],以估算生產(chǎn)潛力、分析魚的構(gòu)成和統(tǒng)計生物量等[3-6]。而魚生活在水下,受成本、安全和對生物體毀壞等因素的影響[7],依靠人工計數(shù)容易出錯并會對魚造成一定的傷害[8-9]。利用各種遠(yuǎn)程可操控的潛水設(shè)備替代人工觀測是良好的解決方案,通過這些設(shè)備可以大范圍地收集魚類在水下活動的圖像[10]。但要對這些圖像中魚的數(shù)量進(jìn)行統(tǒng)計,仍然需要人工進(jìn)行處理[11]。近幾年基于機(jī)器學(xué)習(xí)的圖像處理方法快速發(fā)展[12-15],被廣泛地應(yīng)用于人臉識別、行為監(jiān)測和自動駕駛等領(lǐng)域[16-21],如何利用機(jī)器學(xué)習(xí)的方法自動統(tǒng)計圖像中魚的數(shù)量是當(dāng)前研究的熱點(diǎn)之一[22-24]。
當(dāng)前基于機(jī)器學(xué)習(xí)的魚類數(shù)量統(tǒng)計方法主要有回歸分析法、計算黑點(diǎn)法和深度學(xué)習(xí)方法等,諸多學(xué)者基于這些方法開展了魚類數(shù)量統(tǒng)計的研究。如Zhang等[25]提出密度分級和局部回歸的魚類數(shù)量統(tǒng)計方法,用于檢測魚類在相互重疊時的數(shù)量。Albuquerque等[26]運(yùn)用高斯混合的方法檢測圖像中的黑點(diǎn),以此計算魚苗的數(shù)量。Hernandez等[27]將輸入圖像轉(zhuǎn)為黑白圖像,并通過設(shè)置閾值的方式計算其中的黑點(diǎn),以此統(tǒng)計圖像中魚苗的數(shù)量。Lainez等[28]基于深度學(xué)習(xí)方法開展魚苗數(shù)量統(tǒng)計研究,由于魚苗的個體較小,為了避免漏檢,對圖像進(jìn)行切塊,在較小范圍內(nèi)進(jìn)行數(shù)量統(tǒng)計。除此之外,基于深度學(xué)習(xí)的魚類檢測模型也用于魚的數(shù)量統(tǒng)計。如Yang等[29]使用YOLOv3和Faster R-CNN模型對海參、扇貝和海膽的圖像進(jìn)行檢測,對輸出結(jié)果進(jìn)行統(tǒng)計可以得到相應(yīng)類別的數(shù)量。Gray等[30]使用Mask R-CNN模型對無人機(jī)采集的鯨魚圖像進(jìn)行檢測,對檢測結(jié)果進(jìn)行統(tǒng)計可得到鯨魚的數(shù)量。上述方法中,回歸分析法和計算黑點(diǎn)法對圖像的質(zhì)量要求較高,主要應(yīng)用于室內(nèi)魚苗數(shù)量的統(tǒng)計。在養(yǎng)殖環(huán)境下,受水體渾濁度和水中光衰減的影響,水下圖像普遍具有模糊、對比度低的特點(diǎn),難以通過回歸分析或計算黑點(diǎn)的方法對魚的數(shù)量進(jìn)行統(tǒng)計。基于深度學(xué)習(xí)的魚類數(shù)量統(tǒng)計方法對模糊的水下圖像具有較強(qiáng)的適用性,可以應(yīng)用于養(yǎng)殖環(huán)境下魚類數(shù)量的統(tǒng)計。但在養(yǎng)殖條件下,魚在水中相互遮擋,圖中可觀測到的具有完整輪廓的魚類目標(biāo)較少,在這樣的情況下運(yùn)用當(dāng)前基于深度學(xué)習(xí)的模型進(jìn)行數(shù)量統(tǒng)計存在較嚴(yán)重的漏檢問題,影響了數(shù)量統(tǒng)計的準(zhǔn)確率。
本研究提出局部優(yōu)選及改進(jìn)輸出尺度的魚類數(shù)量統(tǒng)計方法。在檢測魚的全身的基礎(chǔ)上,增加檢測魚的頭部和魚的尾部等局部信息,優(yōu)選三個類別中數(shù)量最多的類作為數(shù)量統(tǒng)計的結(jié)果,以減少遮擋帶來的漏檢問題。另外,魚的全身、魚的頭部和魚的尾部在圖像中顯示為大尺度目標(biāo)或中尺度目標(biāo),為了提高模型對該類目標(biāo)的檢測能力,本方法對模型的輸出尺度進(jìn)行改進(jìn),增加了大尺度目標(biāo)和中尺度目標(biāo)的特征輸出,使其更適合當(dāng)前條件下的數(shù)量檢測,進(jìn)一步提高了數(shù)量統(tǒng)計的準(zhǔn)確率。
使用水下攝像機(jī)GoPro RX0在室外養(yǎng)殖池中采集數(shù)據(jù),時間為2020年5月~6月下午13:00—16:00,圖像分辨率為1 920×1 080,幀速率50 fps。將視頻按10幀一張輸出,從中取出具有一條或多條完整輪廓的魚的圖像。由于采集的數(shù)據(jù)中魚類相互遮擋,大量的圖像質(zhì)量不高,需要進(jìn)行清洗。清洗后得到3 595張圖像,構(gòu)成魚類數(shù)據(jù)集(Data1)。使用標(biāo)注軟件LabelImg將圖像中的魚標(biāo)注為“fish”“head”和“tail”?!癴ish”定義為肉眼可辨別的魚;“head”定義為魚嘴到魚顎的部分;“tail”定義為魚肛門到尾鰭夾角的部分,標(biāo)注過程如圖1所示。按7∶3比例將數(shù)據(jù)劃分為訓(xùn)練集2 517張,測試集1 078張。由3人分別對測試集中魚的總數(shù)量進(jìn)行計數(shù),取平均數(shù)作為人工計數(shù)的結(jié)果。經(jīng)過計算,測試集中人工計數(shù)的魚的總數(shù)為3 546條。
圖1 魚類數(shù)據(jù)集
Data1為經(jīng)過挑選的數(shù)據(jù),不能代表實(shí)時條件下的數(shù)據(jù)特征,為了進(jìn)一步驗(yàn)證模型的魯棒性,建立了時序數(shù)據(jù)集(Data2)。從所采集的數(shù)據(jù)中隨機(jī)截取10 min視頻,按1 s一張輸出,得到600張時序圖像,人工計數(shù)每一張圖像中魚的數(shù)量并保存成時序數(shù)列,如圖2所示。經(jīng)過計數(shù),時序數(shù)據(jù)集中魚的總數(shù)為2 287條。
圖2 時序數(shù)據(jù)集
1.2.1 局部優(yōu)選的魚類數(shù)量統(tǒng)計
由于在拍攝畫面中存在魚的相互遮擋或畫面截斷等實(shí)際情況,具有完整輪廓的魚類目標(biāo)較少,以魚的全身作為目標(biāo)進(jìn)行檢測將導(dǎo)致漏檢問題。然而,畫面中魚的頭部和魚的尾部出現(xiàn)的情況較多且比較完整,將其選為目標(biāo)進(jìn)行檢測比較理想。
基于此,本研究在檢測魚的全身的基礎(chǔ)上,增加檢測魚的頭部和魚的尾部等局部信息,通過優(yōu)選3個類別中數(shù)量最多的類作為數(shù)量統(tǒng)計的結(jié)果,達(dá)到提高數(shù)量統(tǒng)計準(zhǔn)確率的目的,如圖3所示。
圖3 局部優(yōu)選的檢測過程
將圖像輸入魚類檢測模型,記輸出的魚的全身、魚的頭部和魚的尾部的數(shù)量分別為Nfish、Nhead和Ntail,優(yōu)選的數(shù)量統(tǒng)計結(jié)果表示為:
N=max(Nfish,Nhead,Ntail)
(1)
式中:N表示魚的數(shù)量。
1.2.2 改進(jìn)輸出尺度的魚類檢測模型
Gray等[26]的研究表明,YOLO模型在魚類的檢測上取得較好的檢測結(jié)果,基于此,本研究選取YOLOv5模型作為魚類檢測模型開展試驗(yàn)。YOLOv5模型依據(jù)網(wǎng)絡(luò)寬度和深度不同分為l、m和s三種結(jié)構(gòu),為了能夠快速完成部署,本研究在計算量較小的YOLOv5s模型上開展試驗(yàn),其網(wǎng)絡(luò)結(jié)構(gòu)如圖4所示。
圖4 YOLOv5s模型的網(wǎng)絡(luò)結(jié)構(gòu)
將魚類圖像輸入YOLOv5s模型,同時對魚的全身、魚的頭部和魚的尾部進(jìn)行檢測,優(yōu)選數(shù)量最多的類作為數(shù)量統(tǒng)計的結(jié)果。一般情況下,養(yǎng)殖魚類的體型較大,屬于大尺度目標(biāo),魚頭和魚尾則屬于中尺度目標(biāo)。為了提高模型對這類目標(biāo)的檢測能力,本方法將YOLOv5s模型的輸出尺度改為76×76、38×38、38×38、19×19和19×19。通過對模型輸出尺度的改進(jìn),使其更適合當(dāng)前條件下的魚類檢測,引入局部優(yōu)選和改進(jìn)輸出尺度后的YOLOv5s+模型如圖5所示。
圖5 YOLOv5s+的網(wǎng)絡(luò)結(jié)構(gòu)
將Data1的訓(xùn)練集輸入YOLOv5s+模型進(jìn)行訓(xùn)練,訓(xùn)練參數(shù)為輸入尺寸640×640,激活函數(shù)Mish,損失函數(shù)Focal loss,學(xué)習(xí)率0.01,訓(xùn)練輪數(shù)300輪。作為對比,在YOLOv3、Mask R-CNN和未改進(jìn)的YOLOv5s模型上進(jìn)行試驗(yàn),模型的訓(xùn)練參數(shù)使用原文默認(rèn)值。試驗(yàn)環(huán)境為處理器AMD 1950X 3.4GHz,內(nèi)存32G,顯卡GTX-1080Ti,操作系統(tǒng)Ubuntu16.04,編輯環(huán)境Python3.8。
引入檢測數(shù)量和檢測時間對本方法進(jìn)行評價,檢測數(shù)量定義為檢測概率大于0.3的目標(biāo)個數(shù),以人工計數(shù)的數(shù)量作為衡量的基準(zhǔn)。檢測時間定義為單幀圖像的檢測時間,準(zhǔn)確率為檢測數(shù)量除以人工計數(shù)的數(shù)量。
表1為不同方法在Data1的測試集和Data2上試驗(yàn)結(jié)果的對比。
表1 試驗(yàn)結(jié)果的對比
從表1中可以看出,本方法YOLOv5s+獲得較好的數(shù)量統(tǒng)計結(jié)果。在Data1上的檢測數(shù)量與人工計數(shù)誤差較小,準(zhǔn)確率為96.3%;在Data2上檢測的準(zhǔn)確率為88.9%,檢測時間為0.009s,幀速率為111 fps。對比其他方法,本方法在Data1上的準(zhǔn)確率比未改進(jìn)的YOLOv5s高10.4%,比YOLOv3高13.4%,比Mask R-CNN模型高26.2%。說明本方法可以較準(zhǔn)確地對魚類數(shù)量進(jìn)行檢測,在速度方面可以滿足實(shí)時性的檢測需求。
引入檢測數(shù)量和提升幅度對局部優(yōu)選的性能進(jìn)行評估。提升幅度δ的計算方法為
(2)
式中:Δ為增量;C為基準(zhǔn)值。
表2為僅以魚的全身作為目標(biāo)進(jìn)行檢測與局部優(yōu)選檢測結(jié)果的對比,試驗(yàn)?zāi)P蜑閅OLOv5s+??梢钥闯?,僅以魚的全身作為目標(biāo)進(jìn)行檢測,Data1和Data2的檢測數(shù)量與人工計數(shù)的結(jié)果相差較大,出現(xiàn)較嚴(yán)重的漏檢問題。局部優(yōu)選的策略通過優(yōu)選三個類別中數(shù)量最多的類作為數(shù)量統(tǒng)計的結(jié)果,其檢測結(jié)果接近人工計數(shù)的結(jié)果,比僅以魚的全身作為目標(biāo)進(jìn)行檢測的結(jié)果高37.4%和30.7%,說明局部優(yōu)選的策略有效地提高了模型的檢測數(shù)量。
表2 僅以魚的全身作為目標(biāo)進(jìn)行檢測與局部優(yōu)選檢測結(jié)果的對比
圖6為從Data1中選擇樣例圖像對局部優(yōu)選的結(jié)果進(jìn)行展示。從圖6中可以看出,在不同條件下,魚的全身、魚的頭部和魚的尾部都有數(shù)量占優(yōu)的情況,通過優(yōu)選數(shù)量最多的類作為數(shù)量統(tǒng)計的結(jié)果,可以提高檢測的準(zhǔn)確率。圖6b和圖6c展示了僅以魚的全身作為目標(biāo)進(jìn)行檢測所出現(xiàn)的漏檢情況。圖6b局部優(yōu)選的檢測結(jié)果為4條,而以魚的全身作為目標(biāo)進(jìn)行檢測的結(jié)果僅為1條,少了3條;圖6c局部優(yōu)選的檢測結(jié)果為3條,而以魚的全身作為目標(biāo)進(jìn)行檢測的結(jié)果為2條,少了1條。說明局部優(yōu)選的策略有效地提高了模型的檢測數(shù)量。
圖6 魚的全身、魚的頭部和魚的尾部檢測結(jié)果(紅色數(shù)字為優(yōu)選的結(jié)果)
以下對輸出尺度改進(jìn)前后的性能進(jìn)行分析。引入檢測數(shù)量和檢測精度AP[31]進(jìn)行評價,AP計算方法為
(3)
(4)
(5)
式中:R為召回率,P為準(zhǔn)確率,T為將正樣本檢測為正樣本的數(shù)量,N為將正樣本檢測為負(fù)樣本的數(shù)量,F(xiàn)為將負(fù)樣本檢測為正樣本的數(shù)量。
選擇AP50作為檢測精度衡量依據(jù),將預(yù)測框與真實(shí)框交并比大于50%的結(jié)果定為正確結(jié)果。
表3為輸出尺度改進(jìn)前后在Data1上檢測結(jié)果的對比。從表中可以看出,對比未改動的YOLOv5s模型,改進(jìn)后的YOLOv5s+模型在魚的全身、魚的頭部和魚的尾部三個類別中AP50分別提高了2.2%、1.9%和1.9%,檢測數(shù)量分別提高了12.7%、3.0%和9.4%,局部優(yōu)選的檢測數(shù)量提高了4.9%。在檢測時間上,由于增加了輸出的尺度,檢測時間增長0.002 s。說明本方法對YOLOv5s模型輸出尺度的改進(jìn)可以進(jìn)一步提高檢測精度和檢測數(shù)量,對局部優(yōu)選的檢測結(jié)果也產(chǎn)生了影響。
表3 輸出尺度改進(jìn)前后檢測結(jié)果的對比
表4為輸出尺度改進(jìn)前后在Data2上檢測結(jié)果的對比。由于Data2為未標(biāo)注的時序數(shù)據(jù),僅對其改進(jìn)前后的檢測數(shù)量進(jìn)行對比。從表4中可以看出,對比未改動前,改進(jìn)后的YOLOv5s+模型在魚的全身、魚的頭部和魚的尾部三個類別中的檢測數(shù)量分別提高了52.3%、9.0%和16.3%,局部優(yōu)選的檢測數(shù)量提高了15.4%。Data2為未經(jīng)挑選的數(shù)據(jù),魚類相互遮擋,圖像質(zhì)量較差,可以代表實(shí)時條件下的數(shù)據(jù)特征。在輸出尺度改進(jìn)后的模型上,其檢測結(jié)果的提升幅度比Data1的提升幅度更加明顯,說明對輸出尺度的改進(jìn)在實(shí)時數(shù)據(jù)的檢測中發(fā)揮了更大的作用。
表4 輸出尺度改進(jìn)前后檢測結(jié)果的對比
由于Data2為連續(xù)的時序數(shù)據(jù)并已人工計數(shù)每一張圖像中魚的數(shù)量,在Data2上開展本方法的應(yīng)用驗(yàn)證。為了更直觀地將本方法機(jī)器統(tǒng)計的結(jié)果與人工計數(shù)的結(jié)果進(jìn)行對比,以10為窗口單位,輸出兩者的移動平均線,如圖7所示??梢钥闯?,兩者之間未表現(xiàn)出較大的背離。說明本方法的檢測結(jié)果與人工計數(shù)的結(jié)果相近,在實(shí)時魚類數(shù)量統(tǒng)計上具有實(shí)用性。
圖7 移動平均線對比
本研究提出局部優(yōu)選及改進(jìn)輸出尺度的魚類數(shù)量統(tǒng)計方法,可以準(zhǔn)確地對圖像中魚的數(shù)量進(jìn)行統(tǒng)計,并在速度上滿足實(shí)時性的統(tǒng)計需求。方法所采用的局部優(yōu)選策略使得統(tǒng)計數(shù)量提高了37.4%,對輸出尺度的改進(jìn)使得統(tǒng)計數(shù)量提高了4.9%,可以應(yīng)用于漁業(yè)養(yǎng)殖實(shí)時魚類數(shù)量統(tǒng)計的生產(chǎn)中。
□