石小濤,馬 欣,2 ,黃志勇,,胡 曉,2 ,威力斯
(1.三峽大學 湖北省魚類過壩技術國際科技合作基地,湖北 宜昌 443002; 2.三峽大學 水利與環(huán)境學院,湖北 宜昌 443002;3.三峽大學 計算機與信息學院,湖北 宜昌 443002)
對魚道進行監(jiān)測是判斷魚道過魚效果的前提,也是后續(xù)優(yōu)化魚道設計的依據[1]。目前魚道過魚效果監(jiān)測的主要研究方法是通過錄制高幀視頻,采用軟件技術對視頻處理后得到魚類的游動軌跡,然后將魚類游動軌跡與魚道池室內水力因子的空間分布疊加,量化分析魚類對魚道水力特性的偏好范圍,為優(yōu)化魚道的水力設計指標提供依據[2]。因此,從魚道監(jiān)測視頻中提取出魚類的游動軌跡是指導魚道水力設計的前提。由于魚道監(jiān)測視頻處理的復雜性和后處理數據的不可復用性,當前針對魚道監(jiān)測視頻作后處理提取魚類游動軌跡的軟件技術往往不能兼顧軌跡提取的效率和準確度。
現有的基于視頻處理,提取魚類軌跡的方法主要有:
(1)借助標記軟件人為手動連續(xù)點擊鼠標標記視頻中魚的關鍵點實現軌跡的手動提取,如柯森繁等[3]使用Logger Pro32軟件手動標記視頻中魚的尾部點,手動提取了魚的尾部軌跡用于分析魚的擺尾頻率。
(2)使用傳統計算機視覺方法識別魚類目標并計算出魚體形心點從而實現魚類軌跡的自動提取,如劉星橋等[4]使用最大類間方差(Otsu)閾值分割得到二值圖像,基于Canny邊緣檢測算法提取出了魚體輪廓并根據圖像原點幾何不變矩原理計算出了魚類的形心點,連接各視頻幀中的魚類形心點得到了魚類軌跡。
(3)基于無關鍵點識別的深度學習算法識別出魚類目標并用矩形框進行定位,跟蹤矩形框的幾何中心實現軌跡的提取,如Li等[5]利用深度學習目標檢測模型Faster RCNN[6]檢測出圖像中的魚類目標并用矩形邊界框定位了魚類目標在圖像中的位置,根據邊界框幾何中心隨時間的變化提取出了魚類游動軌跡。使用Logger Pro軟件手動提取的魚類軌跡精度高,但需人為手動連續(xù)點擊鼠標進行形心點的標定,且只能根據標記結果提取本次標記視頻中的魚類軌跡,不能復用到其他視頻,導致勞動強度大、耗時長且效率低;傳統計算機視覺可以通過圖像處理算法自動獲取魚類軌跡,識別魚體目標時依靠目標物體與背景之間的差異來進行識別,比如:物體的灰度、顏色、邊緣、紋理等特征,但魚類姿態(tài)變化、遮擋、光照強度等環(huán)境的干擾使得提取的特征不能復用[7],而且該方法提取軌跡的步驟多、耗時較長,無法實時獲取魚類的游動軌跡;基于無關鍵點識別的深度學習算法能通過卷積神經網絡自動學習魚類目標最明顯的特征[8],檢測精度受環(huán)境改變的影響較小,學習到的特征能夠遷移到其他監(jiān)測視頻中進行復用,軌跡提取步驟少,只需輸入魚類視頻即可端到端提取魚類軌跡,軌跡提取的效率和準確率都有了很大程度的提升。但使用邊界框幾何中心作為魚的關鍵點來提取軌跡,當魚大幅度改變游動姿態(tài)如擺尾時,邊界框的幾何中心會偏離魚體導致提取的軌跡與魚類實際的游動軌跡存在一定的偏差,從而對魚道的水力優(yōu)化設計造成干擾。
鑒于此,本研究基于人臉關鍵點識別算法RetinaFace[9],通過改進骨干網絡、特征金字塔網絡、上下文建模網絡、損失函數、重新編解碼魚類關鍵點等改進措施,構建了魚類關鍵點檢測的深度學習模型;用Resnet50骨干網絡的預訓練參數初始化模型以及為魚類關鍵點添加了額外的監(jiān)督訓練使得魚類關鍵點檢測模型能快速準確地識別出魚類的關鍵點;使用數據關聯方法關聯前后幀的魚類關鍵點,根據關鍵點坐標隨視頻幀的變化提取魚類的游動軌跡。
目前,常用的魚類數據集是Fish4Knowledge[10]數據集和3D-Zef斑馬魚數據集[11]。這些數據集中僅有魚類目標的位置標注,并沒有魚體關鍵點的標注。因此本研究在MOT Challenge的3D-Zef斑馬魚數據集中隨機挑選了3 000張斑馬魚圖片,使用Computer Vision Annotation Tool (CVAT)在線標注工具不僅對數據集中斑馬魚的位置進行標注還為斑馬魚的頭部點和形心點添加了額外的手工標注,用最小矩形框標定出數據集里每張圖片中的魚類目標,用可區(qū)分顏色的點標記每張圖片中魚體的頭部點和形心點,并設置特定的標簽區(qū)分每條魚的頭部點和形心點。使用CVAT標注工具將數據集標注完成后,在導出數據集標注時,CVAT標注工具會將魚類目標的分類、魚類目標所在位置坐標和魚體關鍵點坐標保存到XML文件中。導出數據集標注后,編寫腳本解析XML文件,將XML文件中的魚類目標的類別、關鍵點坐標以及位置坐標提取出來作為模型的輸入。當由于魚體相互遮擋,或者魚類圖像較為模糊無法標記其關鍵點時,將其關鍵點坐標設置為-1,并按照8∶2∶2的劃分比例將魚體關鍵點數據集劃分為訓練集、驗證集和測試集。數據集共標注了6 000個魚類目標和約12 000個魚體關鍵點,數據集的標注示例如表1所示。
表1 魚體關鍵點數據集標注示例
為了實現魚體關鍵點的檢測并提高關鍵點檢測的速度與精度,本研究在RetinaFace算法的基礎上,采取以下改進措施構建了魚類關鍵點檢測模型:①采用更輕量的ResNet-50骨干網絡[12]替換原算法中的ResNet-152,作為提取魚類特征的骨干網絡,并利用Restnet50的預訓練參數初始化魚類關鍵點檢測模型;②以Resnet50骨干網絡的最后3層的輸出作為有效特征層重新構建了特征金字塔網絡;③在上下文建模網絡中將2個3×3卷積得到的特征進行融合替代原算法中的可變形卷積;④優(yōu)化錨框的尺寸和數量以適應不同尺寸魚類目標的識別;⑤編碼和解碼魚類的關鍵點(頭部點和形心點);⑥基于對魚類關鍵點空間分布的分析重構了損失函數。改進后得到魚體關鍵點檢測模型的網絡結構如圖1所示,整個模型由骨干網絡、特征金字塔網絡、上下文建模網絡和多任務聯合預測頭4個部分組成。
圖1 魚體關鍵點檢測模型網絡結構
1.2.1 特征金字塔網絡的構建
原RetinaFace對于輸入大小為640像素×640像素的圖像,特征金字塔由6個特征層(P2—P6)構成,以適應不同大小人臉的識別。對于魚類目標的識別,通過對數據集中魚類圖像的尺寸和實際過魚視頻中不同的魚類目標尺寸大小不一的情況進行分析,發(fā)現圖像中不同的魚類目標雖然尺寸有變化但相對于原圖的比例較為適中,沒有出現魚類目標占滿整個視頻畫面或魚類目標在視頻畫面中占比特別小的情況,因此移除原特征金字塔網絡中用于檢測特大目標的特征層P2和檢測特小目標的特征圖P6;為了能檢測出過魚視頻中不同尺寸的魚類目標,使用P3(105×105×256)、P4(53×53×256),P5(27×27×256)3個尺寸(尺寸單位均為像素)的特征圖來構建特征金字塔以適應大、中、小3個尺度魚類目標的識別與定位。
1.2.2 上下文建模網絡的構建
本研究借鑒了InceptionV2-V3[13]和SSH[14]算法的思想改進了上下文建模網絡,通過2個3×3的卷積和3個3×3的卷積并聯替換原上下文建模網絡中的可變形卷積,并作為多任務聯合預測中各預測頭的輸入。通過該方法構建的上下文建模網絡相比于可變形卷積,在卷積層感受野不受明顯影響的同時節(jié)省了計算空間。改進后的上下文建模網絡結構如圖2所示。
圖2 上下文建模網絡結構
1.2.3 錨框的優(yōu)化
設置過多的錨框會帶來的更大的計算開銷和導致模型訓練時由于正負樣本極度不均衡帶來更高的假陽性風險,同時為了保證特征金字塔中的3個有效特征層的尺寸適中以適應魚類目標的檢測,所以將輸入圖像尺寸改為840像素×840像素,并對特征金字塔中3個尺寸分別為105像素×105像素、53像素×53像素、27像素×27像素的P3、P4和P5特征層設置2個錨框,錨框的尺度步長按照8、16、32的比例逐步遞增使得錨框在特定尺寸的特征圖上均勻分布,網絡能通過不同的錨框對不同尺度的魚類目標進行回歸預測。改進后,布置在各層級特征圖上的錨框尺度如表2所示。
表2 改進后錨框的尺寸及數目
1.2.4 多任務聯合損失的構建
不同于人臉及其關鍵點的檢測任務,魚類關鍵點數據集中并沒有密集的魚體關鍵點空間分布,所以本文基于原RetinaFace損失函數的設計,同時借鑒了SSD算法中的多框損失函數[15](Multibox Loss),舍棄了原RetinaFace損失函數中的密集損失函數,保留了分類損失、檢測框回歸損失和關鍵點回歸損失。改進后的損失函數表示為
(1)
模型在檢測魚類目標及其關鍵點時,不是直接檢測魚類目標及其關鍵點的位置,而是檢測魚類目標預測框(Predict)與魚類目標真實位置邊界框(Ground Truth)的偏移量和關鍵點預測結果相對于魚真實關鍵點位置的偏移量,然后根據這個偏移量進行某種形式的歸一化,這個過程稱為魚目標及其關鍵點的編碼。關鍵點編碼過程如圖3所示。
圖3 魚類關鍵點編碼過程
平移:
(2)
(3)
尺度縮放:
(4)
(5)
將魚目標框編碼后,魚的關鍵點只需按照與真實框中心點的相對位置來進行編碼即可。魚關鍵點的編碼公式為:
(6)
(7)
魚目標及其關鍵點的解碼是編碼的反向過程,根據編碼公式反向求解可得到魚目標及其關鍵點的解碼結果。
使用魚類關鍵點檢測模型檢測出魚類目標檢測框和關鍵點后,視頻或圖片序列中前后兩幀的檢測框和關鍵點的關聯并不明確,此時需要把這些檢測框和關鍵點按時間信息連接起來才能確定某一條魚的游動軌跡。前后兩幀中檢測框和關鍵點的數據關聯需要預測運動目標狀態(tài),計算關聯代價矩陣,然后根據關聯代價矩陣將檢測框和關鍵點匹配。
1.4.1 魚類目標運動預測
1.4.2 計算關聯代價矩陣
由于魚類目標的運動是連續(xù)的,同一條魚的卡爾曼濾波預測值和觀測值在大小、形狀和空間上都比較接近,所以使用交并比來作為預測值與觀測值的關聯度量,分別計算前后幀中每個檢測框與預測框的交并比從而得到關聯代價矩陣。
1.4.3 基于關聯代價矩陣匹配魚類關鍵點
匈牙利算法已廣泛應用于檢測框的關聯度匹配任務, 它能夠解決二分圖的最大匹配問題, 根據視頻前一幀魚類目標檢測框與后一幀的跟蹤框的關聯代價進行逐一匹配將得到一個最大匹配, 然后根據最大匹配使用檢測框替代跟蹤框, 得到整個時間序列里的檢測框運動軌跡, 將這些檢測框里的關鍵點連接起來就能得到魚類運動目標的游動軌跡。
本文將魚體關鍵點數據集中20%的圖片用于測試分析,共計600張。評估指標采用目標檢測領域常用的平均精度AP(Average Precision)、平均精度均值mAP(mean Average Precision)和每秒幀率FPS(Frame Per Second)來客觀評價本文算法對魚類目標以及魚體關鍵點的檢測性能。AP和mAP的計算公式分別為:
(8)
(9)
式中:n表示類別的個數,在本文中,n=2表示某一個類別;p表示準確率;r表示召回率。
在評估魚類關鍵點的識別精度時,用TensorBoard繪制的魚類關鍵點識別平均精度均值曲線如圖4所示。
圖4 魚類關鍵點識別平均精度均值
每秒幀率(FPS)用來評估目標檢測的速度,即每秒內可以處理的圖片數量,推理時間越短,速度越快。經測試,單幅圖像中魚類目標及其關鍵點的識別速度為0.031 3 s,FPS約為32.04幀/s。在魚類軌跡提取研究中,FPS>25幀/s即可認為滿足實時的要求。
本研究方法測試圖片的分辨率為2 704像素×1 520像素,在顯存為12 G的RTX3060 GPU上的評估數據如表3所示。
表3 魚類關鍵點檢測模型評估結果
圖5 本研究方法提取軌跡與手動標記的實際軌跡的對比
軌跡提取流程的復雜程度決定了軌跡提取的效率,本研究方法與傳統計算機視覺方法提取魚類軌跡的流程如圖6所示。從圖6可看出本研究方法提取魚類軌跡時,輸入魚類圖像識別出魚類關鍵點并關聯后即可輸出魚類軌跡,而傳統計算機視覺方法[15]在識別出魚類目標后還需經過形態(tài)學處理、標記連通區(qū)域、邊緣檢測提取魚體輪廓、根據魚體輪廓計算形心點等步驟才能輸出魚類軌跡,軌跡提取步驟多、耗時長?;谠摲椒╗4]處理單幅圖像平均需要90 ms,而本研究方法處理單幅圖像的平均幀率為32幀/s,約為31 ms。處理單幅圖像所需時間如圖7所示;圖8和表4為2種方法提取軌跡的對比試驗結果。本研究方法提取第1條魚的軌跡MREx為0.065%、MREy為0.112%,略低于計算機方法的0.093%、0.144%;第2條魚的軌跡MREx為0.092%、MREy為0.011%,略低于計算機視覺的0.123%、0.237%。
圖6 2種軌跡提取方法的差別
圖7 傳統計算機視覺方法與本研究方法單幅圖像處理速度對比
圖8 本研究方法提取軌跡與傳統計算機視覺方法提取軌跡的對比
表4 傳統計算機視覺與魚體關鍵點檢測提取軌跡對比試驗結果
無關鍵點識別的深度學習算法[5]采用兩階段(Two Stage)檢測器檢測視頻中的魚類目標, 在檢測魚類目標時需要先生成可能包含待檢測魚類目標的預選框(Proposal), 再對生成的預選框進行分類和位置修正, 因為需要進行多次檢測與分類流程, 所以使用該方法檢測魚類目標的速度相對較慢, 使用該方法檢測魚類目標的速度為64 ms; 而本研究方法采用單階段(One Stage)檢測器檢測魚類目標, 僅需將輸入圖像送入網絡一次即可一次性檢測出圖像中的所有魚類目標,檢測速度相對較快, 使用本研究方法檢測魚類目標的速度為31 ms。 2種方法處理單幅圖像的速度對比如圖9所示。
圖9 無關鍵點識別方法與本研究方法單幅圖像處理速度對比
無關鍵點識別的深度學習算法[5]能夠較為準確地識別并定位魚類目標,并將魚類目標位置邊界框的幾何中心近似為魚的關鍵點來提取魚類的游動軌跡,但由于邊界框的幾何中心點不是魚類的形心點或頭部點,當魚大幅度改變游動姿態(tài)如擺尾時,邊界框的幾何中心會偏離魚體,根據偏離魚體的幾何中心點提取出的魚類軌跡與實際的魚類軌跡存在一定的偏差;表5和圖10為2種方法提取軌跡準確率的對比試驗結果。本研究方法提取第1條魚的軌跡MREx為0.065%、MREy為0.112%,低于無關鍵點識別深度學習方法的4.089%、2.094%;提取第2條魚的軌跡MREx為0.092%、MREy為0.011%,低于無關鍵點識別深度學習方法的3.641%、2.115%。
圖10 本研究方法提取軌跡與無關鍵點識別方法提取軌跡的對比
表5 無關鍵點識別與魚體關鍵點檢測提取軌跡對比試驗結果
本研究針對現有魚類軌跡提取方法不能兼顧效率和準確率的問題,基于人臉關鍵點識別算法RetinaFace作了相應改進,構建了基于魚類關鍵點識別與定位的魚類軌跡提取模型。結果表明,基于魚類關鍵點檢測模型能夠高效準確地獲取魚類游動軌跡。本研究的主要結論如下:
(1)本研究方法識別魚類目標及其關鍵點的準確率、召回率、平均精度均值分別為97.12%、95.72%、96.42%,FPS為32幀/s,輸入魚類視頻圖像即可實時獲取魚類游動軌跡。
(2)通過與現有的魚類軌跡提取方法對比,本研究提取魚類軌跡的方法在軌跡提取的效率和準確率2個方面都有明顯的優(yōu)勢,達到了兼顧軌跡提取效率和準確率的目的,以期為未來魚道的過魚效果監(jiān)測研究提供參考。