蔡向上
(上海交通大學 船舶海洋與建筑工程學院,上海 200240)
具備實時視覺感知以及裝配機械手的ROV(Re原motely Operated Vehicle)目前已經(jīng)在漁業(yè)養(yǎng)殖,水下船體檢測,維修以及水下搜救與取證等領域被廣泛應用[1]。連接中繼器TMS(Tether Management System)與ROV 本體的臍帶纜可以實時傳輸電力以及視頻信息,在大幅延長ROV 的工作時間與作業(yè)范圍的同時還提升了ROV 實時高效處理視頻信息并做出相應決策的能力。這使得ROV 可以完美代替人在水下復雜環(huán)境中高效地執(zhí)行各種任務,既減小了人力成本又提升任務安全系數(shù)。在淺水湖泊中就可以部署ROV 監(jiān)測魚群的動向,并且實時提供魚群的健康信息以及攝食習慣等,為專業(yè)養(yǎng)殖人員提供全面的信息。
ROV 在工作結(jié)束后往往會通過中繼器TMS 進行回收。原始籠式TMS 回收方案中ROV 在靠近回收裝置的時候會關(guān)閉推進器,然后通過絞車收縮臍帶纜的方式緩慢地步進中繼器。這需要有專人負責回收過程末端ROV 與中繼器的對準與固定鎖緊工作,效率低且失敗幾率高。機器視覺的發(fā)展打破了這一尷尬局面,2020年P(guān)etar Trslic[2]提出了一種基于4個引導燈進行ROV 與TMS 裝置相對位姿估計的視覺方案,采集到的圖像通過ROV 控制艙中計算機進行濾波、二值化閾值處理提取燈光區(qū)域,最終基于四個引導等中心點位置與相機參數(shù)得到位姿轉(zhuǎn)換矩陣。這是首次實現(xiàn)ROV 與TMS 的自主動態(tài)對接,大西洋的對接試驗證明了他們方案的有效性。然而固定閾值的二值化方式僅僅適用于深?;璋档沫h(huán)境,在存在噪點光源影響環(huán)境光照或者其余雜物的遮擋的情形中,這種檢測方案很可能失敗。
GPU 算力的提升以及神經(jīng)網(wǎng)絡的不斷完善,基于深度學習的機器視覺也成了不同領域?qū)W者的研究熱點。傳統(tǒng)視覺算法中的特征提取算子(sift/surf/orb)帶來了算法的高復雜度,實時性較差。此外淺水環(huán)境存在的水草,雜質(zhì)以及不均勻的光照等都會影響傳統(tǒng)視覺算法檢測精度,魯棒性較差?;谏疃葘W習的視覺檢測算法具有較好的檢測精度與強魯棒性,在訓練過程中自動提取適合檢測目標的特征,但是巨大的卷積計算量以及GPU 顯存消耗給嵌入式設備帶來了不小的挑戰(zhàn)。本研究基于端到端的深度學習神經(jīng)網(wǎng)絡yolov4 提出了1 種輕量化模型方案,基于tensorrt 加速以及deepstream 部署,在jetson Xavier nx 上獲得了較好實時性的檢測結(jié)果。為了提升算法在復雜淺水環(huán)境中提取目標特征的能力,引入了CBAM 注意力機制,這以較低的計算成本提升了模型精度。
目標檢測指的是對圖像或者視頻中的目標進行分類和定位的任務。早期目標檢測模型是人為選取特征提取算子的集合,速度慢且準確度較低。卷積神經(jīng)網(wǎng)絡和深度學習的引入改變了視覺感知領域的格局,2016年Joseph redmon[3]提出的單階段端到端的檢測算法yolov1 相比于之前的RCNN 系列算法在實時性上大大提高,隨后更多研究人員加入了yolo 系列算法改進更新迭代的工作中?;贒urga Nooka Venkatesh Alla 的研究成果,yolov4 算法在AUV 水下對接識別塢站上平均精度最高,本研究選取yolov4 作為輕量化模型的baseline。
Yolov4 模型架構(gòu)如圖1 所示。其主干部分通過CSPDarknet53 將輸入圖片進行32 倍下采樣并完成特征提取,其中CSP 結(jié)引入CSPnet 的理念在減少計算量的基礎上獲得更豐富的特征圖;Neck 部分的FPN與PAN 結(jié)構(gòu)將不同尺度特征層中的信息進行融合并將這些特征分配給檢測頭。CBL 與CBM 都負責特征提取,分別由Conv+Batch Normalization 以及Leaky-ReLU/MISH 激活函數(shù)組成。區(qū)別在于Mish 激活函數(shù)允許負梯度區(qū)間值的流入,允許更好的信息流入神經(jīng)網(wǎng)絡;3個尺度不一的特征圖則負責實現(xiàn)目標的檢測與分類,三層檢測頭的設計能減小目標尺度變化對檢測造成的影響。
圖1 原始YOLOv4 結(jié)構(gòu)圖
1.2.1 引入Ghost 模塊
為了確保卷積神經(jīng)網(wǎng)絡對數(shù)據(jù)有深刻的理解,性能優(yōu)秀的神經(jīng)網(wǎng)絡的特征層中往往包含著大量冗余重復的信息。殘差結(jié)構(gòu)的提出使得神經(jīng)網(wǎng)絡往更深層次,更復雜的方向發(fā)展,當然模型平均精度也大大提升。為了適應Jetson Xavier NX 有限的顯存與算力,引入Ghost 模塊對yolov4 進行輕量化處理。
2020年Han Kai[4]等人發(fā)現(xiàn)神經(jīng)網(wǎng)絡卷積層各個通道之間存在重復相似的特征圖,提出了一種基于線性變換生成相似特征圖以減少計算量的方法。圖2 是Ghost 卷積的示意圖,Ghost 卷積計算分為兩部分,一部分與普通卷積完全相同,另一部分基于普通卷積的結(jié)果進行線性變換得到,最后將兩部分進行通道拼接得到最終結(jié)果。Ghost 卷積思想并不在于完全去除網(wǎng)絡中的冗余信息,而是采用廉價計算操作生成比之前更豐富且性能更好的特征映射。所實現(xiàn)的Ghost 卷積中普通卷積數(shù)量為50%,線性變換操作通過3*3 的depthwise 卷積實現(xiàn)。
圖2 Ghost 卷積示意圖
給定輸入圖片尺寸c·h·w,c代表通道數(shù),h,w分別代表圖片的高度與寬度;卷積核尺寸為c·k·k·n,其中n 代表輸出卷積核數(shù)量;卷積核輸出的尺寸為n·h憶·w憶。則普通卷積的浮點數(shù)計算量為:
Ghost 卷積在生成同樣數(shù)量的輸出特征圖的情況下所需要的浮點數(shù)計算量為:
兩者比值接近于s,其中d 是depthwise 卷積核的尺度,取值3;s是原始卷積與Ghost 卷積中普通卷積數(shù)量的比值,本文取為2。本文把yolov4 網(wǎng)絡中所有的普通卷積全部替換為Ghost 卷積,因此理論上改進后的yolov4 模型大小與參數(shù)會壓縮至原本的一半。
1.2.2 引入CBAM 注意力機制
淺水環(huán)境十分復雜,存在著水草、魚群以及其余氣泡等雜質(zhì)等干擾中繼器的檢測。此外水下光線的散射與反射會使得拍攝到的圖像存在失真,為了提高中繼器的檢測精度,本文在三個檢測頭部分引入了CBAM 注意力機制,在檢測目標前對特征進行自適應細化處理。
CBAM 是一個輕量級的即插即用的注意力模塊,可以集成到卷積神經(jīng)網(wǎng)絡結(jié)構(gòu)中一起進行訓練,其模塊示意圖如圖3 所示。特征層的每個通道都相當于一個特征提取器,通道注意力使網(wǎng)絡關(guān)注于檢測目標所需要的重要特征,抑制其余干擾特征,關(guān)心的是我該“看”什么。而空間注意力則關(guān)注的是在圖像二維平面中,我該“看”哪里。經(jīng)過訓練后,CBAM 結(jié)構(gòu)能自適應地細化輸入到檢測頭中的特征圖。CBAM 結(jié)構(gòu)這樣的特性無疑十分適用于嵌入式jetson 主板在復雜淺水環(huán)境下檢測中繼器的任務場景。
圖3 CBAM 結(jié)構(gòu)示意圖
Zhu Xingkui[5]等人將CBAM 結(jié)構(gòu)插在了yolov5頸部帶有殘差結(jié)構(gòu)的C3 模塊與卷積模塊之間,而本文經(jīng)過實際對比發(fā)現(xiàn)將CBAM 模塊插入到檢測頭前面對于map 值有更好的提升。改進后yolov4 整體結(jié)構(gòu)圖如圖4 所示。
圖4 改進后的Ghost-YOLOv4 結(jié)構(gòu)圖
1.2.3 損失函數(shù)調(diào)整
非極大值抑制(NMS)是一種經(jīng)典的目標檢測后處理技術(shù),將得分最高的檢測框與其余檢測框逐一計算IOU 值,并過濾掉超過閾值的檢測框。實際場景中往往存在距離很近而重合度很高的目標,YOLOv4 為了提高檢測高重合目標物體的召回率,引入了DIOU-NMS 后處理方法。在ROV 淺水回收任務場景中僅存在一個待檢測中繼器,本文選用經(jīng)典NMS 進行檢測后處理。
YOLOv4 損失函數(shù)依舊由分類損失,置信度損失與邊界框回歸損失三部分組成。本文屬于單一類別檢測,參考Yang Lin 等人DONN 網(wǎng)絡的設計去掉了分類損失的計算。為了提高檢測精度,本文在經(jīng)過實驗測試后設定置信度損失與邊界框回歸損失權(quán)重比值為1頤3。邊界框回歸損失采用的是CIOU函數(shù),表達式如下:
b,bgt分別代表了Anchor 框和目標框的中心點,p代表計算兩個中心點的歐式距離,c代表的是可以同時覆蓋Anchor 框和目標框的最小矩形的對角線距離。琢與v則考慮了預測框與擬合框的長寬比。
本實驗軟件環(huán)境為Win11 系統(tǒng)、pytorch 1.10.1、cuda 11.3,訓練主機CPU 型號i7-11700,顯卡為Nvidia Geforce RTX 3060。ROV 嵌入式主板為JETSON XAVIER NX,配置有8 GB Nvidia Volta GPU 以及Nvidia Carmel ARMv8.2 版本CPU。
ROV 水下中繼器不存在公開數(shù)據(jù)集,本文采用UUV 水下對接塢站公開數(shù)據(jù)集UDID 作為評估數(shù)據(jù)集并自己基于虛幻引擎UE4.26 制作ROV 中繼器數(shù)據(jù)集進行最終驗證。
為了加快模型訓練速度,本文采取預訓練方式以VOC 2007 數(shù)據(jù)集訓練權(quán)重作為初始權(quán)重。UDID 數(shù)據(jù)集12000 張以4頤1 的比例分配訓練集與測試集,并基于梯度下降法訓練150epoch。采用SGD 優(yōu)化器并設置初始學習率0.01,學習率基于余弦退火策略進行衰減直到0.001。Batchsize 設置為32 以確保更準確的梯度更新方向。
算法主要以UDID 數(shù)據(jù)集平均精度map,模型參數(shù)量,模型計算量以及嵌入式主板運行算法時檢測時間作為評估標準。本文對比了改進前后的YOLOv4 算法性能并做了消融實驗以說明改進方案的有效性,具體見表1。從消融實驗結(jié)果可知引入Ghost 模塊后,YOLOv4 模型參數(shù)量減少了81.6%,浮點數(shù)運算量減少了89.4%,單幀圖片檢測時間減少了40 ms,不過在網(wǎng)絡輕量化的同時網(wǎng)絡平均精度有所降低。引入CBAM 注意力模塊后,最終Ghost_V4-CBAM 模型平均精度僅比原始YOLOv4 模型相差不到1%。在精簡網(wǎng)絡提升實時性能的同時精度滿足本次淺水回收ROV 檢測中繼器任務要求。
表1 網(wǎng)絡改進前后參數(shù)對比
Nvidia TensorRT 是NVIDIA 公司發(fā)布的一個高性能的深度學習推理加速框架。可以優(yōu)化深度學習模型架構(gòu),并提供高吞吐率和低延遲的推理部署,目前廣泛用于大規(guī)模數(shù)據(jù)中心、嵌入式平臺或自動駕駛平臺進行推理加速。
原始訓練好的FP32 網(wǎng)絡模型導入到Jetson Xavier NX,檢測速度為16 幀/s。這并不能滿足實時性要求較高的與中繼器對接任務的要求。Tensorrt 有多種輸入網(wǎng)絡模型方式,首先將pytorch 下訓練好的模型轉(zhuǎn)為ONNX 模型,然后導入到Tensorrt 生成engine文件,這便是加速后的可執(zhí)行推理引擎。
DeepStream 應用程序?qū)⑸疃壬窠?jīng)網(wǎng)絡和其他復雜的處理任務引入到流處理管道中,以實現(xiàn)對視頻和其他傳感器數(shù)據(jù)的近實時分析。Deepstream 處理視頻編碼,解碼的速度比傳統(tǒng)方法要快很多,圖像處理完畢后在調(diào)用引擎進行推理。淺水ROV 檢測中繼器依靠兩個攝像頭的輸入,通過Deepstream 部署可以加快整個檢測速度,因此,將上文Tensorrt 生成的引擎文件部署至Deepstream 中進行加速。最終Jetson XAVIER NX 執(zhí)行的推理速度可以達到60 幀/s,滿足淺水檢測中繼器任務要求。UDID 塢站公開數(shù)據(jù)集以及UE4.26 自建中繼器仿真數(shù)據(jù)集上算法運行結(jié)果如圖5 所示。
圖5 輕量化網(wǎng)絡模型應用于不同數(shù)據(jù)集下檢測結(jié)果
基于YOLOv4 算法模型以及輕量化網(wǎng)絡Ghostnet 提出了一種ROV 中繼器的輕量級檢測模型Ghost_V4-CBAM 用于ROV 淺水回收。為了提升輕量化模型的檢測精度,使網(wǎng)絡專注于檢測中繼器的重要特征,在檢測頭前插入3個CBAM“注意力”模塊,并調(diào)整了損失函數(shù)權(quán)重強調(diào)訓練時的邊界框定位損失。在公開數(shù)據(jù)集以及自建仿真數(shù)據(jù)集上評估了算法并基于Tensorrt 以及Deepstream 加速了嵌入式主板上Jetson Xavier NX 上算法的推理速度,能夠滿足ROV淺水回收時檢測中繼器的實時性要求。