王偉芳,殷健豪,高春奇,劉 梁
(大連海洋大學(xué)信息工程學(xué)院,遼寧 大連 116023)
近年來,隨著智慧漁業(yè)精準(zhǔn)養(yǎng)殖、水生生物保護(hù)、維護(hù)生態(tài)平衡等概念的提出,對魚類個(gè)體進(jìn)行精準(zhǔn)識(shí)別的需求也越來越迫切,已逐步受到產(chǎn)業(yè)界、學(xué)術(shù)界的普遍重視。魚類個(gè)體識(shí)別技術(shù)可以廣泛應(yīng)用于漁業(yè)養(yǎng)殖、科學(xué)研究、生態(tài)保護(hù)等領(lǐng)域[1-3]。P. Cisar 等提出一種以皮膚點(diǎn)圖案模式進(jìn)行魚類個(gè)體自動(dòng)識(shí)別的方法[4],通過在點(diǎn)定位的基礎(chǔ)上融合HOG 特征[5]進(jìn)行個(gè)體識(shí)別,但使用的魚類數(shù)據(jù)均是離開水面的圖像,不適用于水下實(shí)時(shí)環(huán)境。
白云翔在改良HOG 特征的基礎(chǔ)上,提出了一種對斑馬魚進(jìn)行多目標(biāo)跟蹤的新方法[6],通過以斑馬魚背部紋理之間的相關(guān)關(guān)系為基礎(chǔ),并與SVM 分類機(jī)理相結(jié)合對其進(jìn)行分類[7],建立斑馬魚的多目標(biāo)三維軌跡,但對交叉遮擋嚴(yán)重的斑馬魚追蹤正確率不高。B. Renato 等人通過計(jì)算機(jī)輔助識(shí)別證明了照片識(shí)別技術(shù)在溪流棲息的羅漢魚個(gè)體識(shí)別中的潛在應(yīng)用,但當(dāng)使用有大量圖像的數(shù)據(jù)庫時(shí),識(shí)別準(zhǔn)確率和速度有所下降[8]。E.Kristensen 等人根據(jù)皮膚圖案識(shí)別梭子魚個(gè)體,根據(jù)重新捕獲的魚預(yù)測湖中梭子魚的個(gè)數(shù),并顯示出比使用標(biāo)準(zhǔn)化的刺網(wǎng)采樣所看到的尺寸更全面的結(jié)構(gòu),然而該方法依賴于釣魚者捕獲梭子魚個(gè)體[9]。
上述方法較之前依賴人工的識(shí)別方法在工作量及難度上有所降低。然而,經(jīng)典的圖像分割和特征提取技術(shù)主要用于傳統(tǒng)的機(jī)器學(xué)習(xí)中,僅對符合處理?xiàng)l件的圖像進(jìn)行簡單的特征提取,當(dāng)處理模糊或有遮擋的圖像時(shí),識(shí)別精度會(huì)嚴(yán)重下降。
為此,本文提出了一種增強(qiáng)細(xì)節(jié)信息特征提取的魚類個(gè)體識(shí)別算法(FishNet-v1)。
在進(jìn)行魚類個(gè)體識(shí)別之前需要先識(shí)別目標(biāo),這是因?yàn)橹挥忻鞔_了需要識(shí)別的目標(biāo)和目的,才能選擇適當(dāng)?shù)淖R(shí)別技術(shù)和方法。其次,確切的目標(biāo)使得研究者能夠確定需要記錄的信息,并創(chuàng)建適當(dāng)?shù)臄?shù)據(jù)庫以收集和處理數(shù)據(jù)。YOLOv5 網(wǎng)絡(luò)的原始輸出為6 維,包括預(yù)測框中心點(diǎn)的坐標(biāo)、寬高、置信度和類別。添加5 個(gè)關(guān)鍵點(diǎn)的輸出后,輸出就由原來的6 維變成16 維,增加了關(guān)鍵點(diǎn)的參數(shù),每個(gè)關(guān)鍵點(diǎn)坐標(biāo)有x和y維度上2 個(gè)偏移量。
YOLOv5 網(wǎng)絡(luò)在進(jìn)行訓(xùn)練和輸出時(shí),tx、ty兩個(gè)參數(shù)為中心點(diǎn)坐標(biāo)的偏移量。中心點(diǎn)坐標(biāo)和目標(biāo)矩形框的寬度和高度需根據(jù)預(yù)測結(jié)果中的4 個(gè)參數(shù)進(jìn)行計(jì)算,具體的計(jì)算公式如下:
式中:Cx、Cy表示預(yù)測框左上角的坐標(biāo)值;bx、by表示當(dāng)前預(yù)測框的中心位置;pw、ph是YOLOv5 模型中預(yù)定義的錨框?qū)挾群透叨?;bw、bh是目標(biāo)矩形框的寬度和高度;x1、y1和x2、y2分別為目標(biāo)矩形框左上角和右下角的坐標(biāo)值。
基于此,利用式(1)中的目標(biāo)矩形框的寬度和高度計(jì)算出魚體關(guān)鍵點(diǎn)的位置,計(jì)算公式為:
式中:δ(tx)、δ(ty)表示中心點(diǎn)偏移量;對于關(guān)鍵點(diǎn)MO,(MOx,MOy)表示嘴巴處該點(diǎn)坐標(biāo)的偏移量,需要注意的是,該偏移量是相對于預(yù)測框左上角而言的;同樣地,(LRx,LRy)、(UFx,UFy)、(BAx,BAy)、(CTx,CTy)均表示其他4 個(gè)關(guān)鍵點(diǎn)的偏移量。關(guān)鍵點(diǎn)坐標(biāo)的計(jì)算方式為左上角坐標(biāo)加上各個(gè)關(guān)鍵點(diǎn)的偏移量。
利用目標(biāo)關(guān)鍵點(diǎn)的位置改進(jìn)損失函數(shù)。在目標(biāo)檢測和關(guān)鍵點(diǎn)檢測任務(wù)中,傳統(tǒng)的損失函數(shù)通常采用交叉熵形式,但該損失函數(shù)忽略了目標(biāo)關(guān)鍵點(diǎn)的空間信息,這可能導(dǎo)致訓(xùn)練出的模型在檢測和定位目標(biāo)上效果不理想。因此,本文根據(jù)魚體關(guān)鍵點(diǎn)的位置修改YOLOv5輸出參數(shù),改進(jìn)損失函數(shù),在原損失函數(shù)的基礎(chǔ)上添加關(guān)鍵點(diǎn)的損失。最終損失函數(shù)公式如下:
式中:x為檢測魚體關(guān)鍵點(diǎn)坐標(biāo)的預(yù)測值與真實(shí)值之間的誤差;ω表示非負(fù)數(shù),其區(qū)間值為(-ω,ω);ε表示曲率,對曲線進(jìn)行約束;C為常數(shù),將損失函數(shù)的兩部分連接起來,即線性部分和非線性部分。
1.2.1 特征信息的獲取
本文提出的識(shí)別模塊中,主干網(wǎng)絡(luò)在MobileNet-v1的基礎(chǔ)上進(jìn)行改進(jìn)。首先是對首層卷積層進(jìn)行改進(jìn),首層卷積直接將圖像像素級的數(shù)據(jù)進(jìn)行輸入,后續(xù)所有卷積操作均在首層提取的特征基礎(chǔ)上進(jìn)行,經(jīng)過不同尺寸大小的卷積核提取特征之后,形成代表該圖像的最終特征矩陣。因此第一層卷積后的濾波輸出結(jié)果至關(guān)重要,將直接影響網(wǎng)絡(luò)模型最終的識(shí)別準(zhǔn)確率。其次換掉ReLU 激活函數(shù),使用Leaky ReLU,保留負(fù)值特征信息。
深度卷積層對輸入的特征信息計(jì)算公式為:
式中:i表示當(dāng)前特征層;yi j則為這一層中排序?yàn)閖的特征圖;ki、kj分別表示當(dāng)前層第j個(gè)特征圖以及前層所有特征圖的累計(jì)值;xi-1j表示前一層排序?yàn)閖的特征圖;kj為卷積核,作用于前后兩層排序?yàn)閖的特征圖;bj為偏置;“?”為深度卷積操作符號;f(·)為作用于Leaky ReLU的激活函數(shù)。
深度卷積取反層對輸入的特征信息計(jì)算公式為:
1.2.2 特征圖加權(quán)
特征圖加權(quán)在目標(biāo)個(gè)體識(shí)別中可以幫助模型更好地捕捉目標(biāo)的特征,提高識(shí)別的準(zhǔn)確性。具體而言,特征圖加權(quán)是指在特征提取階段,基于目標(biāo)區(qū)域的位置和特征對特征圖進(jìn)行加權(quán)。其強(qiáng)調(diào)目標(biāo)區(qū)域的重要性,這樣可以使模型更專注于目標(biāo)區(qū)域,提高模型的感知能力和識(shí)別準(zhǔn)確度。為了增加網(wǎng)絡(luò)對于特征圖的加權(quán)操作,在網(wǎng)絡(luò)結(jié)構(gòu)末端全連接層前增加了特征加權(quán)層,去掉了卷積神經(jīng)網(wǎng)絡(luò)中常用的池化層。對特征圖進(jìn)行加權(quán)的步驟如下:
1)對最終卷積層處的每一個(gè)特征圖進(jìn)行局部池化運(yùn)算,使用尺寸為w×h、步長為s的滑動(dòng)窗口進(jìn)行池化。局部池化的目的是對特征進(jìn)行二次提取并降低數(shù)據(jù)規(guī)模,每個(gè)特征圖得到一個(gè)三維的特征張量;
2)池化后的三維特征張量所對應(yīng)的特征圖,賦予各個(gè)特征像素點(diǎn)(i,j)一個(gè)權(quán)重值αij;
3)設(shè)池化后有k個(gè)特征圖,給每個(gè)特征圖賦予權(quán)重,值為βk;
4)進(jìn)行加權(quán)計(jì)算,將步驟2)和步驟3)所得到的特征像素加權(quán)和特征圖加權(quán),公式為:
式中:xkij表示經(jīng)過池化后的三維張量中,第k個(gè)特征映射中的第(i,j)個(gè)像素點(diǎn);x′kij為加權(quán)后的三維特征張量中,第k個(gè)特征映射中的第(i,j)個(gè)像素點(diǎn);αij為每個(gè)像素點(diǎn)的權(quán)值;βk為每個(gè)特征圖的權(quán)值。加權(quán)計(jì)算就是將三者進(jìn)行相乘:
式中:f為加權(quán)后的各個(gè)特征圖,均為三維張量,并將得到的三維帶權(quán)張量聚合成一維特征張量F;fk的計(jì)算公式表示特征像素在對應(yīng)的特征圖上依次進(jìn)行加權(quán)操作。
本文收集并構(gòu)建了一個(gè)水下魚類數(shù)據(jù)集DLOUFish,該數(shù)據(jù)集包含4 000 張圖像,其中1 700 張錦鯉圖片、1 350 張東方紅鰭魚圖片和950 張河豚圖片,DLOUFish 數(shù)據(jù)集示例如圖1 所示??紤]到水下參考對象的模糊性,很難通過背景環(huán)境來識(shí)別魚體,因此提取了視頻的幀,根據(jù)視頻的連續(xù)性人為地標(biāo)記魚體的身份信息,并在中斷后建立數(shù)據(jù)集。
本文使用高級深度學(xué)習(xí)程序庫Keras 搭建網(wǎng)絡(luò)結(jié)構(gòu),采用Python 3.6 為程序設(shè)計(jì)語言,在集成開發(fā)環(huán)境Pycharm 平臺(tái)上進(jìn)行仿真實(shí)驗(yàn)。
為了驗(yàn)證YOLOv5 目標(biāo)檢測網(wǎng)絡(luò)添加關(guān)鍵點(diǎn)檢測后對于模型識(shí)別準(zhǔn)確率性能的提升,設(shè)置對照組。一組是目標(biāo)檢測模塊使用原始YOLOv5 目標(biāo)檢測網(wǎng)絡(luò),另一組是目標(biāo)檢測模塊使用改進(jìn)后的YOLOv5 目標(biāo)檢測網(wǎng)絡(luò),即在輸出檢測框位置、置信度及分類之外,增加關(guān)鍵點(diǎn)的輸出。兩組實(shí)驗(yàn)均基于DLOUFish 數(shù)據(jù)集進(jìn)行的,實(shí)驗(yàn)結(jié)果如表1 所示。
表1 目標(biāo)檢測網(wǎng)絡(luò)在DLOUFish 上的識(shí)別準(zhǔn)確率 %
由表1 實(shí)驗(yàn)結(jié)果可知,目標(biāo)檢測模塊使用增加關(guān)鍵點(diǎn)檢測的YOLOv5 后,魚類個(gè)體識(shí)別準(zhǔn)確率有所提升,相較于原始YOLOv5 目標(biāo)檢測網(wǎng)絡(luò),平均準(zhǔn)確率提高1.81%,最高準(zhǔn)確率提高2.46%。為了驗(yàn)證本文模型的有效性,將其與新發(fā)布的方法進(jìn)行比較,以平均準(zhǔn)確率和最高準(zhǔn)確率作為模型的評價(jià)指標(biāo),對比結(jié)果如表2所示。
表2 不同方法在DLOUFish 數(shù)據(jù)集上的準(zhǔn)確率 %
從表2 可以看出,本文提出的FishNet-v1 算法的平均準(zhǔn)確率為92.46%,最高準(zhǔn)確率為95.69%。其原因是本文改進(jìn)算法在目標(biāo)檢測模塊和識(shí)別模塊上分別進(jìn)行改進(jìn)。在目標(biāo)檢測模塊增加關(guān)鍵點(diǎn)分支對數(shù)據(jù)進(jìn)行預(yù)處理,結(jié)合加權(quán)特征層進(jìn)一步提高有效信息的提取,從整體上提高了魚類個(gè)體識(shí)別的準(zhǔn)確率。
本文提出一種增強(qiáng)細(xì)節(jié)信息特征提取的魚類個(gè)體識(shí)別算法,該算法將改進(jìn)后的YOLOv5 作為模型的目標(biāo)檢測部分。另一方面,識(shí)別網(wǎng)絡(luò)通過設(shè)計(jì)取反層和融合層來改進(jìn)MobileNet-v1。在DLOUFish 數(shù)據(jù)集上對本文模型的識(shí)別準(zhǔn)確率進(jìn)行了驗(yàn)證,實(shí)驗(yàn)結(jié)果表明所提出的模型是有效的。