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