高 港,魏利勝 ,唐紹語
(安徽工程大學(xué)電氣工程學(xué)院,安徽 蕪湖 241000)
隨著人工智能快速發(fā)展,基于計算機視覺測距的應(yīng)用在各行業(yè)層出不窮,如機器人、智能交通、智能監(jiān)控等[1]。各行業(yè)對檢測目標(biāo)進行反饋的要求,如機器人路障規(guī)避、機械手臂抓取物體等,使其保持高精度、高快速性,同時實現(xiàn)目標(biāo)檢測與距離測量,成為當(dāng)前測距研究的熱點與難點。因此,如何有效地結(jié)合各種目標(biāo)檢測算法與單目視覺來提高測距精度和速度,具有重要的研究意義。
國內(nèi)外眾多學(xué)者已在單目測距領(lǐng)域進行了廣泛而深入的研究,取得了諸多成果。于國防等[2]結(jié)合單目測距和有限局域圖像快速匹配算法,實現(xiàn)倒車影像系統(tǒng)中目標(biāo)距離探測;汪亞兵等[3]融合RANSAC(Rando m Sa mple Consensus)算法、Pn P(Perspective-n-Point)算法和單目測距進行目標(biāo)距離的計算;關(guān)闖等[4]利用路況消隱點的單目測距方法結(jié)合數(shù)字圖像處理Hough變換,實現(xiàn)車輛間距離測量;劉軍等[5]把參變逆透視和道路消失點運用到單目視覺測距,實時測量車輛距離;劉斌等[6]通過邊緣損失函數(shù)、跨階段部分網(wǎng)絡(luò)和雙向特征金字塔的融合,實現(xiàn)基于紅外圖像的更快更準(zhǔn)的深度計算;Bojan等[7]利用YOLOv3(You Only Look Once Version 3)算法和立體視覺測量算法,預(yù)估目標(biāo)與攝像頭的距離。黃同愿等[8]突出單目測距原理中偏航角和俯仰角的作用,使用冗余切圖和邊界框篩選,改善行人測距精度;李占旗等[9]采用SSD(Single Shot Multi Box Detector)算法、Pn P算法和單目測距,實現(xiàn)前車車牌距離探測;許洋等[10]結(jié)合YOLOv3目標(biāo)檢測網(wǎng)絡(luò)和多目標(biāo)跟蹤算法,通過相似三角形原理的單目測距算法實現(xiàn)在特定結(jié)構(gòu)化道路環(huán)境的測距;王永森等[11]利用基于車輛下邊沿估計和逆透視變換的單目測距方法,實現(xiàn)車輛測量精度的提升;王文勝等[12]結(jié)合YOLOv5目標(biāo)檢測和單目測距進行車體與標(biāo)志牌距離的測量。
以上研究成果總體上對匹配算法依賴性強,導(dǎo)致測量精度不高、速度不快,為此,本文將在以上研究的基礎(chǔ)上,探討一種基于改進YOLOv5的測距策略,在目標(biāo)檢測階段采用K-means++自適應(yīng)錨框計算、Focal-EIOU 邊界框損失函數(shù)以及EIOU 非極大抑制優(yōu)化YOLOv5算法的輸入端和輸出端,并將得到的目標(biāo)檢測輸出預(yù)測框作為幾何單目測距輸入,同時結(jié)合攝像機內(nèi)外參進行相似三角形測距運算,從而實現(xiàn)目標(biāo)精確測距。
基于改進YOLOv5算法的單目測距原理如圖1所示。從圖1可以看出,基于改進YOLOv5算法的單目測距主要分為目標(biāo)檢測、內(nèi)外參數(shù)獲取以及單目測距3個組成部分。在目標(biāo)檢測階段,主要采用改進YOLOv5算法得到檢測框;然后,通過對相機的標(biāo)定,獲取其內(nèi)外參;最后,根據(jù)相似三角形測距原理,將目標(biāo)檢測輸出框底部中點作為映射點與相機內(nèi)外參相結(jié)合,實現(xiàn)單目精確測距。
圖1 改進YOLOv5測距原理
YOLOv5算法由經(jīng)典的單階段目標(biāo)檢測YOLO 算法發(fā)展而來,主要有4種類型分別為YOLOv5s、YOLOv5 m、YOLOv5l、YOLOv5x,在視覺目標(biāo)檢測領(lǐng)域均得到了廣泛的應(yīng)用。本文將選用YOLOv5s算法作為單目視覺測距目標(biāo)檢測階段的基底模型,并從自適應(yīng)錨框計算、邊界框損失函數(shù)、非極大抑制3個方面進行改進。改進后的YOLOv5算法流程圖如圖2所示。由圖2可知,改進的YOLOv5算法由預(yù)處理、特征提取、特征融合以及預(yù)測框輸出4個組成部分,改進策略主要集中在YOLOv5s算法的輸入和輸出兩端,其中輸入端采用K-means++自適應(yīng)錨框,輸出端則采用Focal-EIOU 損失函數(shù)以及基于EIOU的NMS(Non Maxi mu m Suppression)完成預(yù)測輸出。
圖2 改進YOLOv5算法流程圖
(1)K-means++自適應(yīng)錨框獲取。錨框又稱先驗框,是現(xiàn)階段眾多目標(biāo)檢測的基礎(chǔ)。錨框用于邊界框的回歸,其大小和位置越接近初始標(biāo)定真實框越好。當(dāng)前,YOLOv5算法錨框主要采用K-means聚類方法計算得到,而K-means聚類方法存在兩個方面的問題:①K 值的設(shè)定具有偶然性,可能存在聚類中心個數(shù)設(shè)定不合理的情況;②初始聚類中心的選取具有隨機性,影響聚類速度。為此,在YOLOv5算法錨框初始化階段研究了一種K-means++聚類方法,其流程圖如圖3所示。從圖3可見,K-means++算法首先從一張圖片標(biāo)記的N個標(biāo)簽中隨機選取第i個標(biāo)簽,作為初始聚類中心,并記錄此時聚類中心個數(shù)和位置大小:a=1,(wa,ha)=(wi,hi);然后選擇a個聚類中心中使1-IOUij最大的標(biāo)簽,將此標(biāo)簽定義為第a+1個聚類中心并記錄標(biāo)簽位置大小:(wi,hi)=(wj,hj);若a未達到設(shè)定K值,則重復(fù)上一步驟,直至完成K個聚類中心的選取;在此基礎(chǔ)上,根據(jù)所選取聚類中心采用基于1-IOU的K-means算法,算出每個標(biāo)簽和每個聚類中心的距離d,按照距離大小劃分為K簇標(biāo)簽,求解每一類別中所有標(biāo)注框高和寬的平均值;最后輸出K個簇錨框初始尺寸大小。
圖3 K-means++算法流程圖
(2)Focal-EI OU 損失函數(shù)選取。Y OL Ov5s目標(biāo)檢測中使用CI OU(Co mplete-I OU)損失回歸邊界框,雖然考慮到了邊界框回歸的重疊度、中心點、邊界長寬等3個方面的因素,但存在長寬比相同、梯度符號相反等問題,易導(dǎo)致錨框長寬均大于或小于目標(biāo)框時,出現(xiàn)不合理回歸現(xiàn)象[13]。為此,在原Y OL Ov5s算法中參考EI OU 損失函數(shù),其表達式如下:
式中,LIOU表示IOU;Ldis、Lasp分別表示距離、長寬損失;b為預(yù)測框中心點;bgt為目標(biāo)框中心點;ρ2(b,bgt)代表歐幾里得距離;c是真實框和生成框最小外接矩形框的對角線長度;Cw、Ch分別是外接矩形框的寬度和高度。
此外,為解決目標(biāo)檢測中的不平衡問題,使EI OU 損失聚焦于高質(zhì)量錨框,引入聚焦損失Focal L1 Loss[13],如式(2)所示:
式中,c是一個常量,為保證上式在x =1處連續(xù),使C =;β是用于控制聚焦損失曲線線形的參數(shù);α是用于將不同β情況下對應(yīng)高低質(zhì)量錨框梯度的歸一化;x是邊界框回歸損失。
考慮到將EI OU 代替Focal L1 Loss中的x,會引起整體梯度變小,從而弱化EI OU 損失邊界框加權(quán)影響。為此,使用I OU 值對EI OU 損失函數(shù)進行加權(quán)處理,得到Focal-EI OU 損失函數(shù)為:
式中,IOU表示交并比;γ表示用于抑制低質(zhì)量預(yù)測框的參數(shù)。這樣,隨著邊界框回歸誤差的增大,錨框的梯度值會隨之發(fā)生變化,高質(zhì)量錨框的梯度值會增加,而低質(zhì)量錨框的梯度值會降低。
(3)EI OU-NMS設(shè)置。在Y OL Ov5算法中,采用基于I OU 的NMS,以I OU為閾值,濾除I OU大的預(yù)測框,可能導(dǎo)致其他目標(biāo)預(yù)測框被誤刪除。為此,在非極大抑制部分采用基于EI OU-NMS策略,使得邊界框篩選可基于不同I OU 的NMS,具體如下:
式中,M表示得分(置信度)最高的預(yù)測框;Bi為同一目標(biāo)其他預(yù)測框;EIOU(M,Bi)為M和Bi的EI OU 損失;ε為NMS 閾值;si為分類置信度。 可見,當(dāng)EIOU(M,Bi)小于定值ε時,Bi預(yù)測框分類置信度留存,否則si置0,即被抑制。
本文采用MATLAB標(biāo)定工具箱對實驗相機標(biāo)定內(nèi)外參,使用該工具箱對相機進行標(biāo)定,需要將準(zhǔn)備好的約25張棋盤格照片導(dǎo)入工具箱,通過標(biāo)定輸出內(nèi)參矩陣N1和組成相機外參矩陣N2,如式(5)所示[14]:
式中,(u0,v0)為圖像平面中心;fx、fy分別表示u軸、v軸的尺度因子;R表示旋轉(zhuǎn)矩陣;T表示平移向量。
根據(jù)所得目標(biāo)檢測預(yù)測框與相機標(biāo)定內(nèi)外參矩陣,采用基于俯仰角的相似三角形幾何測距,通過攝像機成像幾何數(shù)學(xué)模型把視覺坐標(biāo)系下特征點信息與成像平面坐標(biāo)系投影點信息對應(yīng)關(guān)系建立起來,選取目標(biāo)檢測階段輸出預(yù)測框底部的中點Q作為距離測量的參考點,利用Q坐標(biāo)與相機內(nèi)外參進行計算,從而得到確定檢測目標(biāo)的位置信息。測距原理如圖4所示。由圖4可見,Oc為相機光心,Zc為相機光軸,XcYcZc為相機坐標(biāo)系,相機成像平面為xO1y,滿足x軸、y軸 與Xc軸、Yc軸 平 行,Zc與 平 面xO1y的交點是O1,相機焦距為O1Oc,XwYwZw為建立于M平面上的世界坐標(biāo)系,坐標(biāo)系原點為Ow,Q(Xw,Yw,Zw)為M平面上的點,Q'是Q在平面xO1y上的映射,為Q'(x,y),對應(yīng)平面xO1y像素坐標(biāo)系uO0v中的坐標(biāo)為(u,v)??赏频每臻g中任意一點Q距離攝像頭深度信息Zc為:
圖4 單目視覺測距原理圖
式中,N =N1N2表示3×3的投影矩陣,其中N1為單目相機內(nèi)參,N2為單目相機外參。
實驗1 目標(biāo)檢測
本實驗采用VOC 2007數(shù)據(jù)集,在Windows 10操作系統(tǒng)、Py Char m 2021.3集成開發(fā)環(huán)境下進行,使用Pytorch 1.10.0框架,CUDA 版本為11.3,用Python語言編程。所采用的硬件配置為AMD R7 CPU,GTX 3070顯卡,8 G 顯存。網(wǎng)絡(luò)參數(shù)設(shè)置為:識別類別數(shù)20、網(wǎng)絡(luò)深度增益0.33、卷積通道增益0.50、batch-size=8、epochs=15、輸入圖像大小默認(rèn)640×640等。經(jīng)過訓(xùn)練后,得出檢測效果如圖5所示。由圖5可見,0~19數(shù)字分別表示飛機、自行車、鳥、船、杯子、公共汽車、小汽車、貓、椅子、奶牛、餐桌、狗、馬、摩托車、人、盆栽植物、羊、沙發(fā)、火車、電視。從檢測結(jié)果中可以看出,算法即使在目標(biāo)與背景相似、檢測目標(biāo)密集的情況下,也具有很好的檢測效果。為驗證所提方法的有效性,選用精確度、召回率、平均精度平均值(mAP)、每秒傳輸幀數(shù)(FPS)、訓(xùn)練模型文件大小5個性能指標(biāo)對算法結(jié)果進行評估,并在經(jīng)過15 epochs訓(xùn)練后,與YOLOv3、YOLOv5s進行比較實驗,所得結(jié)果如表1所示。由表1可知,改進的YOLOv5算法雖然在召回率上分別較YOLOv3有所下降,但是比YOLOv5s高3.2%,且在準(zhǔn)確率和mAP上均優(yōu)于YOLOv3和YOLOv5s,分別高出16.0%、0.6%和1.5%、2.1%,同時,改進的YOLOv5算法檢測速度和模型大小更優(yōu)。
圖5 改進YOLOv5目標(biāo)檢測效果圖
表1 目標(biāo)檢測算法性能參數(shù)比較表
實驗2 單目測距
本實驗中,單目相機為聯(lián)想拯救者RP 9000筆記本自帶攝像頭,分辨率為1280×720,焦距為35 mm,放置在距地面0.72 m 高度,保持路面與攝像機光軸平行,實驗測量距離不同目標(biāo),經(jīng)標(biāo)定可得相機內(nèi)外參為:
為了檢測不同目標(biāo)(行人和自行車)的距離,經(jīng)過單目相機拍攝,得到3張待檢測源圖像,結(jié)果如圖6所示。由圖6可見,源圖像Ⅰ表示15.0 m 位置行人照,源圖像Ⅱ表示15.0 m 位置自行車照,源圖像Ⅲ表示15.0 m 位置自行車和20.0 m 位置行人混合照。采用改進后的YOLOv5算法輸出預(yù)測框的底部中點作為單目測距原理中的Q 點進行測距,同時與YOLOv3、YOLOv5s算法進行測距比較實驗,所得結(jié)果如圖7~9所示。
圖6 待檢測源圖像
為便于比較改進后的YOLOv5與YOLOv3、YOLOv5s的測距精確度和快速性,將圖7~9中實驗參數(shù)統(tǒng)計,得到3種方法的測距對比如表2所示。由表2可知,對源圖像Ⅰ,改進后的YOLOv5對于行人測距效果更優(yōu),測距誤差與YOLOv3測距方法相同,較YOLOv5s降低了8.6%,而平均耗時較YOLOv3方法縮短了0.006s,與YOLOv5s方法相當(dāng);對源圖像Ⅱ,改進后的YOLOv5對自行車測距效果更優(yōu),相較YOLOv5s測距誤差優(yōu)化6.7%,耗時相當(dāng),而YOLOv3方法未能檢測出圖像中自行車;對源圖像Ⅲ,改進后的YOLOv5對多目標(biāo)測距效果更優(yōu),能同時實現(xiàn)行人和自行車的高精度測距,而YOLOv3 與YOLOv5s方法均未能檢測圖像中的自行車。綜上可見,本文所提方法對單目標(biāo)或多目標(biāo)識別精度和識別速度均有所改善,特別是多目標(biāo)的場景,實驗效果更優(yōu)。
圖8 源圖像Ⅱ測距效果對比
圖9 源圖像Ⅲ測距效果對比
表2 3種方法測距對比表
針對YOLOv3與YOLOv5s算法在多目標(biāo)場景下識別率不高、測距精度不準(zhǔn)的問題,研究了一種基于改進YOLOv5的單目測距方法。通過對YOLOv5算法自適應(yīng)性錨框計算能力、邊界框回歸質(zhì)量、預(yù)測框篩選精度的改進,以提高目標(biāo)檢測算法的快速性和準(zhǔn)確性,并進行了兩個實驗驗證,表明所提方法在單目測距中的可行性和有效性。如何進一步降低單目相機內(nèi)外參標(biāo)定不準(zhǔn)確所帶來的測距誤差,提高復(fù)雜多目標(biāo)場景下的目標(biāo)精確識別,這將是接下來的重點研究工作。