張長勇,郭 聰,李玉洲,張朋武
(1.中國民航大學(xué) 電子信息與自動(dòng)化學(xué)院,天津 300300;2.南航股份公司 工程技術(shù)分公司北京基地,北京 102602)
現(xiàn)代民航客機(jī),由于本身的尺寸設(shè)計(jì),絕大部分的地面服務(wù)工作,例如裝卸行李、上下旅客、檢查維修等,都需要借助相應(yīng)的地面設(shè)備或特種車輛才能完成。目前國內(nèi)外機(jī)場(chǎng)地面設(shè)備與特種車輛的靠機(jī)作業(yè)均由人工操作完成。參與作業(yè)的工作人員通常分為兩部分:一部分為監(jiān)護(hù)員,在設(shè)備上(如航食車艙門口)或飛機(jī)旁負(fù)責(zé)引導(dǎo)特種車輛靠近飛機(jī),并監(jiān)督車輛是否停靠到位;另一部分為特種車輛駕駛員,在車輛距離飛機(jī)5~10 m外,先進(jìn)行車輛與飛機(jī)的預(yù)對(duì)正,然后再依據(jù)監(jiān)護(hù)員指揮,最終完成地面設(shè)備與特種車輛的靠機(jī)任務(wù)。人工作業(yè)費(fèi)時(shí)費(fèi)力且不易于統(tǒng)一管理,因此特種車輛自動(dòng)靠機(jī)已成為智慧機(jī)場(chǎng)的發(fā)展趨勢(shì)之一[1]。
飛機(jī)艙門的準(zhǔn)確檢測(cè)與定位是實(shí)現(xiàn)特種車輛自動(dòng)靠機(jī)的關(guān)鍵。由于采用視覺的方式比使用非視覺方式能夠獲得更多的信息,且有著更強(qiáng)的泛化性和可靠性,成為目前的主流檢測(cè)方式。基于視覺的目標(biāo)檢測(cè)算法可分為一階段和二階段兩種。二階段目標(biāo)檢測(cè)算法[2-5],主要有R-CNN、SPP-net、Fast R-CNN、Faster R-CNN等系列方法,算法先通過區(qū)域提取網(wǎng)絡(luò)產(chǎn)生候選框,然后用卷積神經(jīng)網(wǎng)絡(luò)對(duì)候選框作分類和回歸;一階段目標(biāo)檢測(cè)算法,主要有 YOLO 系列[6]、SSD[7]等,通過一個(gè)網(wǎng)絡(luò)直接回歸出目標(biāo)的類別和位置。一階段算法相對(duì)于二階段算法,更適用于輕量級(jí)速度較快的實(shí)時(shí)檢測(cè)。
激光定位、雙目定位、單目定位是目前較為常用的3種定位方法。激光定位[8]具有測(cè)量精度高、體積小和速度快的優(yōu)點(diǎn),但存在集成度低,成本高的問題;雙目定位[9]具有精度高、設(shè)備集成度高的優(yōu)點(diǎn),但相機(jī)的裝配過程復(fù)雜且系統(tǒng)體積較大;單目定位[10]具有設(shè)備簡易、集成度高、體積小、系統(tǒng)簡單穩(wěn)定的優(yōu)點(diǎn),但由于單個(gè)攝像頭丟失了深度信息,所以需要給出待測(cè)物體的寬度或者高度才能進(jìn)行定位。
鑒于艙門尺寸可以事先通過飛機(jī)維修手冊(cè)(AMM,aircraft maintenance manual)和結(jié)構(gòu)修理手冊(cè)(SRM,structural repair manual)查找獲得,在綜合考慮系統(tǒng)成本、算法性能、系統(tǒng)穩(wěn)定性后,提出一種基于單目視覺的飛機(jī)艙門識(shí)別與定位方法,先采用改進(jìn)YOLOv5算法實(shí)現(xiàn)目標(biāo)艙門的檢測(cè),再利用單目相機(jī)實(shí)現(xiàn)艙門定位。通過在原始YOLOv5s模型中添加卷積注意力模塊CBAM[11],并使用改進(jìn)的空間金字塔池化結(jié)構(gòu)SPPCSPC代替了原有的快速空間金字塔池化結(jié)構(gòu)(SPPF,spatial pyramid pooling-fast),使目標(biāo)檢測(cè)模型能更好地學(xué)習(xí)目標(biāo)特征。在艙門識(shí)別的基礎(chǔ)上,通過獲取候選框中角點(diǎn)的像素,利用空間幾何關(guān)系,對(duì)傳統(tǒng)的單目相機(jī)單維度定位方法進(jìn)行改進(jìn),以實(shí)現(xiàn)飛機(jī)艙門的三維定位。在北京大興國際機(jī)場(chǎng)進(jìn)行實(shí)際測(cè)試后,表明算法的識(shí)別與定位精度能達(dá)到預(yù)期設(shè)計(jì)要求。
YOLOv5算法根據(jù)權(quán)重、深度和寬度的不同,共分為YOLOv5s、YOLOv5m、YOLOv5l 和YOLOv5x四個(gè)版本[12]。其中YOLOv5s算法網(wǎng)絡(luò)結(jié)構(gòu)最小,速度最快,更能貼合機(jī)場(chǎng)中艙門的實(shí)時(shí)檢測(cè)要求,因此可以作為艙門檢測(cè)的基本算法。YOLOv5s框架主要有4個(gè)部分,分別是輸入端、主干特征提取網(wǎng)絡(luò)、頸部和輸出端[13]。YOLOv5s 目標(biāo)檢測(cè)算法在識(shí)別目標(biāo)時(shí),同時(shí)兼?zhèn)錂z測(cè)精度高和速度快的優(yōu)勢(shì)。但為了能更加快速準(zhǔn)確的實(shí)現(xiàn)對(duì)飛機(jī)艙門的專有化識(shí)別檢測(cè),仍需要對(duì)算法進(jìn)一步改進(jìn)。
飛機(jī)艙門距離相機(jī)越遠(yuǎn),則艙門在成像平面中占有的像素比例越少。為解決遠(yuǎn)距離艙門難以識(shí)別的問題,需引入注意力機(jī)制,使YOLOv5s這種輕量級(jí)的網(wǎng)絡(luò),在大區(qū)域上關(guān)注目標(biāo),同時(shí)不會(huì)增加時(shí)間開銷[14],以此來提高算法對(duì)飛機(jī)艙門的特征提取能力。
計(jì)算機(jī)視覺應(yīng)用領(lǐng)域中的注意力大體有兩類:一類是以SE(Squeeze and Excitation)為代表的通道注意力機(jī)制,另一類是以CBAM為代表的空間注意力機(jī)制。其中,SE注意力機(jī)制是對(duì)整個(gè)通道內(nèi)的所有數(shù)據(jù)進(jìn)行平均池化,這樣就忽視了每一條通道內(nèi)的細(xì)微差別,而CBAM注意力機(jī)制可以結(jié)合通道和空間機(jī)制構(gòu)建更高層次的空間結(jié)構(gòu),使得所有輸入特征在通道和空間結(jié)構(gòu)上的聯(lián)絡(luò)更加緊密,從而更高效地獲取目標(biāo)的有效信息,其網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示。
圖1 CBAM網(wǎng)絡(luò)結(jié)構(gòu)圖
CBAM注意力機(jī)制由通道注意力模塊 (CAM,channel attention module)和空間注意力模塊 (SAM,spatial attention module)組成[15]。
CAM用于輸入圖片中重要信息的提取,其計(jì)算公式為:
MC(F)=σ(MLP((AvgPool(F))+
MLP((MaxPool(F)))=
(1)
MS(F)=σ(f(7×7))([AvgPool(F);MaxPool(F)]=
(2)
式中,MS為空間注意力圖;f(7×7)為濾波器大小為7 × 7的卷積運(yùn)算。在YOLOv5s算法中的CSP1_3中加入CBAM注意力機(jī)制,改進(jìn)后的網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示。
圖2 CSP1_3添加CBAM模塊
空間金字塔池化的最開始提出是為了實(shí)現(xiàn)一個(gè)自適應(yīng)尺寸的輸出。YOLOv5作者Glenn Jocher基于此思想提出了SPPF,網(wǎng)絡(luò)結(jié)構(gòu)如圖3所示。SPPF[16]用連續(xù)3個(gè)卷積核做池化可以與YOLOv4算法達(dá)到同樣的輸出效果,同時(shí)與前者比起來,可以減少計(jì)算量,所以速度也有所加快。圖形化的結(jié)構(gòu)可以有效地?cái)U(kuò)展感知范圍,使算法能夠適應(yīng)各種分辨率的圖像,而最大池化技術(shù)則可以實(shí)現(xiàn)這一目標(biāo)。
圖3 SPPF網(wǎng)絡(luò)結(jié)構(gòu)圖
SPPCSPC是改進(jìn)后的空間金字塔池化操作,主要解決了因裁剪、縮放操作導(dǎo)致的圖像失真問題和算法對(duì)重復(fù)特征提取的問題[17]。
SPPCSPC網(wǎng)絡(luò)結(jié)構(gòu)如圖4所示,該結(jié)構(gòu)和YOLOv5s中自帶的SPPF結(jié)構(gòu)是有些相似的,都有1*1、5*5、9*9、13*13的池化層,前后也均有卷積,不同的是有一個(gè)1*1的殘差邊[18]。這4種池化代表著4種感受野,用來區(qū)別于大目標(biāo)和小目標(biāo)。它們采用CSP思想,將特征包括兩部分,一部分用于常規(guī)處理,另一部分用于SPP結(jié)構(gòu)處理,最后將兩部份合并,可以大大減少運(yùn)算量,加快運(yùn)算速率,同樣也能提升精確度。
圖4 SPPCSPC網(wǎng)絡(luò)結(jié)構(gòu)圖
分組卷積與普通卷積的區(qū)別為將輸入特征圖分成組,每個(gè)卷積核也相應(yīng)地分成組,在對(duì)應(yīng)的組內(nèi)做卷積[19],如圖5所示。
圖5 分組卷積示意圖
實(shí)驗(yàn)表明,如果只考慮浮點(diǎn)乘,不考慮浮點(diǎn)加,在輸入輸出特征圖尺寸相同的情況下,分組巻積的參數(shù)量是常規(guī)卷積的1/g,其中g(shù)是分組的個(gè)數(shù)(圖5中是兩個(gè))。在yolov5s.yaml中使用SPPCSPC代替原有的SPPF后,并將分組的個(gè)數(shù)改為4后,參數(shù)量(Params)與計(jì)算量(GFLOPs)的參數(shù)對(duì)比表如表1所示。
表1 各空間金字塔池化結(jié)構(gòu)參數(shù)對(duì)比表
在YOLOv5s算法中的CSP1_3中加入CBAM注意力機(jī)制,并使用改進(jìn)的空間金字塔池化結(jié)構(gòu)SPPCSPC代替了原有的快速空間金字塔池化結(jié)構(gòu)SPPF,再將分組卷積改為4,最終得到改進(jìn)后的YOLOv5s艙門檢測(cè)模型網(wǎng)絡(luò)結(jié)構(gòu)如圖6所示。
圖6 改進(jìn)后的YOLOv5s網(wǎng)絡(luò)結(jié)構(gòu)圖
由于相機(jī)無法實(shí)現(xiàn)完美安裝,故單目相機(jī)可能會(huì)存在切向畸變和徑向畸變的現(xiàn)象,從而影響后期的攝像頭成像和定位結(jié)果[20]。以上兩種情況都會(huì)導(dǎo)致攝像頭的成像不準(zhǔn)確,通過攝像頭標(biāo)定工具,可以矯正上述的兩種成像畸變,使輸出的圖像質(zhì)量更好;通常假設(shè)上述兩種畸變呈多項(xiàng)式關(guān)系,徑向畸變關(guān)系式如下:
xrdis=x(1+k1r2+k2r4+k3r6)
(3)
yrdis=y(1+k1r2+k2r4+k3r6)
(4)
式中,x,y為圖像坐標(biāo)系中的理想坐標(biāo);xrdis、yrdis為徑向畸變坐標(biāo),r=(x2+y2)1/2、k=(k1,k2,k3)T為切向畸變參數(shù)。
切向畸變關(guān)系式如下:
xtdis=x+2p1xy+p2(r2+2x2)
(5)
ytdis=y+p1(r2+2y2)+2p2xy
(6)
式中,x、y為圖像坐標(biāo)系中的理想坐標(biāo),xtdis、ytdis為切向畸變坐標(biāo),r=(x2+y2)1/2、k=(p1,p2)T為切向畸變參數(shù)。
本文選用海康威視DS-E12攝像頭,分辨率為1 920×1 080,固定焦距為3.6 mm。使用matlab進(jìn)行相機(jī)標(biāo)定,矯正了攝像頭的5個(gè)畸變參數(shù)(k1,k2,k3,p1,p2)。標(biāo)定之后,還可以得到該攝像頭的焦距(fx,fy)與光心在成像平面的位置(Cx,Cy),以及相機(jī)內(nèi)參矩陣A:
如圖7所示,假設(shè)一個(gè)寬度為x的物體,在距離相機(jī)為z的位置。測(cè)得該物體在相機(jī)成像平面的像素寬度為x[21]。
圖7 單目相機(jī)測(cè)距原理圖
則相機(jī)焦距f的計(jì)算公式為:
f=(X′×Z/X)
(7)
其中:以貨艙門為例,根據(jù)改進(jìn)的YOLOv5算法識(shí)別出來貨艙門矩形框,得到貨艙門在水平和豎直方向上的像素寬度分別為Wh1和Wv1。
根據(jù)AMM查得B737-800前貨艙尺寸為1.22×0.89 m,則貨艙門與相機(jī)在Z軸方向上的距離為Z1和Z2,它們的計(jì)算公式為:
Z1=f×1.22/Wh1
(8)
Z2=f×0.89/Wv1
(9)
接下來可以得到貨艙門在檢測(cè)艙門平面下,水平和豎直方向上單位像素對(duì)應(yīng)真實(shí)的比值分別為S1和S2。它們的計(jì)算公式分別為:
S1=1.22/Wh1
(10)
S2=0.89/Wv1
(11)
圖8 圖像原點(diǎn)與檢測(cè)框原點(diǎn)示意圖
根據(jù)公式(10),(11)分別算出貨艙門真實(shí)X軸上的距離X1,X2,真實(shí)Y軸上的距離Y1,Y2。其計(jì)算公式分別為:
(12)
(13)
客艙門的定位原理與貨艙門定位原理相同。根據(jù)SRM查得B737-800前客艙門尺寸為0.86×1.83 m。根據(jù)改進(jìn)的YOLOv5算法識(shí)別出來客艙門矩形框,得到客艙門在水平和豎直方向上的像素寬度分別問Wh2和Wv2。則貨艙門與相機(jī)在Z軸方向上的距離為Z3和Z4。計(jì)算公式為:
Z3=f×0.86/Wh2
(14)
Z4=f×1.83/Wv2
(15)
再得到在檢測(cè)艙門平面下,水平和豎直方向上單位像素對(duì)應(yīng)真實(shí)的比值分別為S3和S4。它們的計(jì)算公式分別為:
S3=0.86/Wh2
(16)
S4=1.83/Wv2
(17)
根據(jù)公式(16),(17)分別算出客艙門X軸上的真實(shí)距離X3,X4,艙門真實(shí)Y軸上的距離Y3,Y4。其計(jì)算公式分別為:
(18)
(19)
至此,根據(jù)貨艙門和客艙門的識(shí)別框在水平和豎直方向上對(duì)應(yīng)的像素寬度,得到了兩套貨艙門三維定位方案,它們分別是為X1,Y1,Z1和X2,Y2,Z2。也制定了兩套客艙門的三維定位方案,它們分別是為X3,Y3,Z3和X4,Y4,Z4。
采用AutoDL云服務(wù)平臺(tái)進(jìn)行艙門檢測(cè)模型訓(xùn)練,其中CPU類型為Intel,使用存儲(chǔ)器為45GB,GPU類型為NVIDIA GeForce RTX 3090*1,內(nèi)存大小為24 GB。數(shù)據(jù)集隨機(jī)拆分為訓(xùn)練集、驗(yàn)證集和測(cè)試集,使用YOLOv5s、Pytorch1.9.0、CUDA版本和1.11.1的框架。根據(jù)經(jīng)驗(yàn),將初始和終止學(xué)習(xí)率均設(shè)置為0.01[22],批量大小設(shè)置為32,迭代輪數(shù)設(shè)置為500。表2提供了軟硬件配置和實(shí)驗(yàn)參數(shù)的詳細(xì)信息。
表2 艙門檢測(cè)平臺(tái)軟硬件參數(shù)表
艙門檢測(cè)數(shù)據(jù)集由國內(nèi)某機(jī)場(chǎng)自主采集。如圖9所示。在經(jīng)過亮度、對(duì)比度和飽和度的數(shù)據(jù)增廣后,艙門檢測(cè)數(shù)據(jù)集共包含開啟的客艙門(open_cabin door)、關(guān)閉的客艙門(closed_cabin door)、開啟的貨艙門(open_cargo door)、關(guān)閉的貨艙門(closed_cargo door)各1 200張,總共4 800張圖像,其中包含的艙門目標(biāo)約10 000個(gè)。
圖9 數(shù)據(jù)集展示
為了對(duì)改進(jìn)后的算法性能做出評(píng)估,本文選取了精確度(P,Precision)、召回率(R,Recall)、平均精度(mAP,mean average precision)作為評(píng)價(jià)指標(biāo)[23]。精確率、召回率以及平均精度的計(jì)算式如式所示:
(20)
(21)
(22)
(23)
式中,TP為飛機(jī)艙門狀態(tài)被正確檢測(cè)出的數(shù)目;FP為飛機(jī)艙門開啟或者關(guān)閉但被檢測(cè)錯(cuò)誤的數(shù)目;FN為飛機(jī)艙門標(biāo)志丟失的數(shù)量;psmooth(r)為進(jìn)行平滑處理后的P-R曲線,psmooth(r)=maxr′≥rp(r′),0≤r≤1,0≤r′≤1。n為類別,而N則為總類別數(shù)。
加入CBAM后,mAP由原來的90.9%提升到了92.8%。如圖10所示。
圖10 添加CBAM后的mAP
在添加CBAM后,又使用SPPCSPC代替原有的SPPF后,并將分組卷積改為4后,mAP由原來的92.8%提升到了96.5%,如圖11所示。
圖11 添加CBAM和分組的SPPCSPC后的mAP
原始模型和改進(jìn)后的模型在準(zhǔn)確率、召回率和平均精確度方面的對(duì)比結(jié)果如表3所示。
表3 實(shí)驗(yàn)對(duì)比結(jié)果
由表3可知,添加在原有的YOLOv5s中加入CBAM后,mAP提升了1.9%。在此基礎(chǔ)上添加改進(jìn)的分組SPPCSPC后,mAP又提升了3.7%。綜上,添加注意力機(jī)制和SPPCSPC算法的YOLOv5算法mAP達(dá)到96.5%,相比原始YOLOv5提升了5.6%。且收斂速度更快,相比之前算法達(dá)到了提升模型檢測(cè)精確度的目的。
根據(jù)貨艙門和客艙門的識(shí)別框在水平和豎直方向上對(duì)應(yīng)的像素寬度為依據(jù),在2.2節(jié)中分別制定了貨艙門和客艙門各兩套定位方案。為了驗(yàn)證兩套定位方案的優(yōu)劣性,保持相機(jī)平面平行于,機(jī)身縱軸和立軸所形成的平面,將單目相機(jī)P擺放在與艙門中心點(diǎn)O的不同的空間位置處,如圖12所示。
圖12 空間位置說明圖
在圖12中,單目相機(jī)初始擺放在距離艙門中心點(diǎn)O在X、Y、Z軸上分別-15 m,-0.75 m,19 m的位置處,如圖11中的P1。隨后X間隔5 m,Y間隔0.25 m,Z間隔6 m為一組,對(duì)應(yīng)圖中表示為P2~P7。
在實(shí)際實(shí)驗(yàn)中發(fā)現(xiàn),由于飛機(jī)本身的橫剖線為橢圓形,所以識(shí)別圖像中的豎直方向識(shí)別框比水平方向上的識(shí)別框更貼合艙門實(shí)際輪廓,故將算法中貨艙門和客艙門與相機(jī)在Z軸方向上的距離分別定為Z2和Z4,在X軸上的距離分別定為X2和X4,在Y軸上的距離分別定為Y2和Y4。
在實(shí)際實(shí)驗(yàn)中發(fā)現(xiàn),算法預(yù)測(cè)值略小于實(shí)際值,將得到的實(shí)驗(yàn)數(shù)據(jù)通過matlab擬合,得到X、Y、Z軸的線性方程來修正誤差。
Xcor=1.045*Xpre-0.005 971
(24)
Ycor=1.049*Ypre+0.003 024
(25)
Zcor=1.053*Zpre-0.086 27
(26)
式中,Xcor,Ycor,Zcor分別為加入線性擬合方程后算法在X、Y、Z軸的最終預(yù)測(cè)距離,Xpre,Ypre,Zpre分別為加入線性擬合方程前算法在X、Y、Z軸的預(yù)測(cè)距離。
再加入線性擬合方程后,繼續(xù)相機(jī)平面平行于,機(jī)身縱軸和立軸所形成的平面,保持?jǐn)z像頭離地高度1.5 m(距離艙門中心點(diǎn)Y軸距離0.30 m),距離艙門中心點(diǎn)Z軸距離1.85 m處位置不變,將攝像頭放置在分別在距離艙門中心點(diǎn)X為-1.00 m,0 m和0.30 m的3個(gè)位置處,使用Intel (R )Core (TM )i5-5200U CPU @2.20 GHz ,運(yùn)行內(nèi)存為12.0 GB的處理器在北京大興機(jī)場(chǎng)晚上21:30運(yùn)行時(shí),得到的檢測(cè)結(jié)果如圖13所示。
圖13 算法實(shí)時(shí)檢測(cè)結(jié)果
將上述實(shí)時(shí)檢測(cè)結(jié)果匯總得到表4,由表4分析可知,加入線性擬合方程后的算法,在艙門正前方1.8米處平均誤差只有0.03米,且算法預(yù)測(cè)值可以達(dá)到0.302秒更新一次,滿足實(shí)時(shí)定位的速度需求。
表4 算法實(shí)時(shí)定位結(jié)果
繼續(xù)保持相機(jī)平面平行于,機(jī)身縱軸和立軸所形成的平面,將攝像頭P擺放在與圖12中的相同位置處,將加入線性擬合修正前后的算法預(yù)測(cè)結(jié)果整理如表5,驗(yàn)證改進(jìn)后定位算法的準(zhǔn)確性。
表5 定位實(shí)驗(yàn)結(jié)果
實(shí)驗(yàn)數(shù)據(jù)表明,隨著攝像頭與艙門距離的增大,測(cè)量誤差逐漸增大。修正前,預(yù)測(cè)值均略小于實(shí)測(cè)值,在艙門前方19米處測(cè)得最大誤差為0.96米;修正后,在艙門前方13米范圍內(nèi),預(yù)測(cè)值略高于實(shí)測(cè)值,13米范圍外時(shí),預(yù)測(cè)值略低于實(shí)測(cè)值,在19米處的最大誤差降低到0.15米,艙門正前方1米處的實(shí)時(shí)定位誤差為0.01米。定位算法平均檢測(cè)時(shí)間約為0.302秒,定位精度滿足特種車輛靠機(jī)完成后,與艙門保持5~10厘米的安全距離要求。
飛機(jī)艙門的準(zhǔn)確識(shí)別與定位是實(shí)現(xiàn)機(jī)場(chǎng)特種車輛自動(dòng)靠機(jī)的重要前提。本文先采用改進(jìn)后的YOLOv5算法對(duì)艙門進(jìn)行識(shí)別,再利用單目成像模型法進(jìn)行艙門定位。在機(jī)場(chǎng)環(huán)境下測(cè)得的艙門定位速度和精度能夠滿足特種車輛靠機(jī)作業(yè)要求。方法具有成本低、體積小、方便調(diào)試等特點(diǎn),可為特種車輛自動(dòng)靠機(jī)系統(tǒng)的設(shè)計(jì)提供借鑒和參考。