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