趙一兵,邢淑勇,劉昌華,李賓,王威淇,王?,|
1.大連理工大學(xué) 汽車學(xué)院,遼寧 大連116204
2.廣東交通職業(yè)技術(shù)學(xué)院 運(yùn)輸與經(jīng)濟(jì)管理學(xué)院,廣東 廣州 510650
對(duì)于自動(dòng)駕駛而言,隨著目標(biāo)檢測(cè)算法研究的不斷深入,通用的目標(biāo)檢測(cè)算法已經(jīng)基本能夠滿足一般交通場(chǎng)景下的目標(biāo)檢測(cè)問(wèn)題。但在復(fù)雜交通場(chǎng)景下,存在大量的目標(biāo)遮擋和小目標(biāo)檢測(cè)問(wèn)題,檢測(cè)精度難以滿足要求。因此解決密集目標(biāo)遮擋以及小目標(biāo)檢測(cè)問(wèn)題是復(fù)雜交通場(chǎng)景下目標(biāo)檢測(cè)算法的關(guān)鍵,近年來(lái)也成為目標(biāo)檢測(cè)領(lǐng)域的研究熱點(diǎn)。
李松江等[1]和Cai等[2]提出了Cascade R-CNN算法,通過(guò)4 個(gè)階段的級(jí)聯(lián)分類器調(diào)整交并比(intersection overunion,IoU)閾值,減少了檢測(cè)框的噪聲干擾,對(duì)遮擋目標(biāo)和小目標(biāo)的檢測(cè)精度有一定的提高;陳幻杰等[3]把目標(biāo)進(jìn)行分類處理,對(duì)于小占比目標(biāo),利用反卷積和區(qū)域映射操作,在高分辨率特征圖上進(jìn)行特征提取,實(shí)現(xiàn)了對(duì)小目標(biāo)的檢測(cè);李軒等[4]針對(duì)遮擋問(wèn)題提出了一種回歸損失函數(shù)Occlusion Loss,可以使訓(xùn)練得到的預(yù)測(cè)框與真實(shí)框的匹配程度更高,從而獲得更為準(zhǔn)確的位置信息,有效解決了目標(biāo)漏檢的情況;采用基于回歸YOLO 系列算法處理速度快,正確率高,在實(shí)際工業(yè)部署中得到了廣泛應(yīng)用[5];YOLOv2[6-9]、YOLOv3[10]在YOLO 算法的基礎(chǔ)上進(jìn)一步改進(jìn),使得檢測(cè)效果進(jìn)一步加強(qiáng)。但速度較快的基于回歸的檢測(cè)算法網(wǎng)絡(luò)結(jié)構(gòu)仍然較大。BOCHKOVSKIY等[11]對(duì)近幾年來(lái)目標(biāo)檢測(cè)領(lǐng)域內(nèi)比較優(yōu)秀的算法進(jìn)行移植和對(duì)比試驗(yàn),提出了YOLOv4,對(duì)各種目標(biāo)的檢測(cè)效果大幅提升。
本文根據(jù)以往研究成果提出改進(jìn)的YOLOv4目標(biāo)檢測(cè)算法,解決復(fù)雜交通場(chǎng)景下的常見道路目標(biāo)檢測(cè)問(wèn)題。主要進(jìn)行了3 個(gè)方面的改進(jìn):改進(jìn)非極大值抑制算法,提出Soft-DIoU-NMS,能夠返回更準(zhǔn)確的目標(biāo)邊界框;改進(jìn)K-means 聚類算法,生成更加準(zhǔn)確的候選框;改進(jìn)損失函數(shù),引入焦點(diǎn)損失(focal loss),緩解樣本之間的不平衡問(wèn)題。改進(jìn)后的YOLOv4 算法能夠在保證實(shí)時(shí)性的情況下,較為準(zhǔn)確地檢測(cè)出復(fù)雜交通場(chǎng)景下的遮擋目標(biāo)和小目標(biāo),檢測(cè)能力較為突出。
YOLOv4 網(wǎng)絡(luò)結(jié)構(gòu)主要由主干網(wǎng)絡(luò)層、特征增強(qiáng)層和分類回歸層組成。以輸入圖像分辨率416×416 為例,首先將圖像經(jīng)過(guò)CSPDarknet53 主干網(wǎng)絡(luò)進(jìn)行特征提取,然后先后通過(guò)SPP[12]和PANet[13]特征金字塔結(jié)構(gòu)進(jìn)行特征增強(qiáng)和融合處理,最終得到52×52、26×26 和13×13 這3 種不同分辨率的特征圖,最后通過(guò)分類回歸層得到最終的檢測(cè)結(jié)果。
YOLOv4 的主干網(wǎng)絡(luò)是Darknet53,其在YOLOv3[14]主干網(wǎng)絡(luò)Darknet53 的基礎(chǔ)上添加了跨階段初等網(wǎng)絡(luò)(cross stage paritial network,CSPNet)[15]。CSPNet 主要解決的是網(wǎng)絡(luò)在優(yōu)化過(guò)程中梯度信息重復(fù)引起的計(jì)算量過(guò)大的問(wèn)題。CSPNet 先將基礎(chǔ)層的特征映射劃分為2 部分:一部分進(jìn)行殘差連接緩解梯度爆炸和過(guò)擬合問(wèn)題,另一部分跳躍連接減少計(jì)算;然后通過(guò)跨階段層次結(jié)構(gòu)將它們合并,在保證準(zhǔn)確率的同時(shí)減少了計(jì)算量,加快了訓(xùn)練速度。
在目標(biāo)檢測(cè)領(lǐng)域,為了更好地提取融合特征,通常在主干網(wǎng)絡(luò)和輸出層之間插入特征增強(qiáng)層,主要用于特征提取增強(qiáng)以及不同特征層之間的融合。YOLOv4 的特征增強(qiáng)層主要采用了SPP 模塊和PANet 模塊。在SPP 模塊中,主干網(wǎng)絡(luò)的輸出經(jīng)過(guò)4 種不同尺度的最大池化(max pooling)操作,然后再將不同尺度的特征圖進(jìn)行拼接。SPP模塊可以將不同分辨率的圖像生成固定尺寸的圖像,很大程度上增加感受野,分離出最顯著的上下文特征,起到特征增強(qiáng)的作用;PANet 模塊對(duì)特征反復(fù)提取與融合,主要包含F(xiàn)PN 和PAN 這2 個(gè)子模塊。PANet 通過(guò)2 次特征金字塔操作,將FPN 傳達(dá)的強(qiáng)語(yǔ)義信息與PAN 傳達(dá)的強(qiáng)定位特征在對(duì)應(yīng)的檢測(cè)層上進(jìn)行特征融合,可以在淺層網(wǎng)絡(luò)和深層網(wǎng)絡(luò)同時(shí)獲取精準(zhǔn)的定位信息和豐富的語(yǔ)義信息,提高小目標(biāo)的檢測(cè)能力和目標(biāo)定位精度。
非極大值抑制(non-maximum suppression,NMS)算法是一種廣泛應(yīng)用于計(jì)算機(jī)視覺領(lǐng)域的后處理算法,其本質(zhì)思想是搜索局部最大值,抑制非極大值[16]。傳統(tǒng)NMS 算法核心的思想是通過(guò)迭代的方式,每當(dāng)置信度得分最高的基準(zhǔn)框M與預(yù)測(cè)框bi的IoU 值大于或等于閾值Nt時(shí),直接將bi的置信度si置0,即直接過(guò)濾掉這些預(yù)測(cè)框。傳統(tǒng)NMS 的置信度重置公式為
傳統(tǒng)NMS 在一般情況下效果良好,但難以解決遮擋較為嚴(yán)重的問(wèn)題。由于目標(biāo)之間互相遮擋,檢測(cè)器產(chǎn)生的預(yù)測(cè)框排列十分緊密,傳統(tǒng)NMS 無(wú)法區(qū)分某個(gè)預(yù)測(cè)框隸屬于哪個(gè)目標(biāo),使得本應(yīng)屬于另一個(gè)目標(biāo)的預(yù)測(cè)框在算法中超過(guò)閾值而被抑制掉,最終導(dǎo)致漏檢的情況。為此本文提出一種新的非極大值抑制算法Soft-DIoU-NMS,使用DIoU[17]作為距離的評(píng)判指標(biāo),并采用高斯衰減策略,其置信度重置公式為
K-means 聚類作為生成先驗(yàn)框的重要算法對(duì)于先驗(yàn)框的準(zhǔn)確性產(chǎn)生了重要的影響,距離度量作為數(shù)據(jù)之間的聚類依據(jù),直接決定著最終的聚類結(jié)果。適當(dāng)增大距離值可以緩解局部最優(yōu)解的問(wèn)題,提高生成先驗(yàn)框的準(zhǔn)確率。本文為緩解局部最優(yōu)問(wèn)題,對(duì)聚類距離度量進(jìn)行修改。修改前的距離度量公式為
式中:b為聚類的樣本框,c為聚類中心。
修改后的距離度量公式為
K-means 聚類改變前后距離度量隨IoU 值改變的對(duì)比圖如圖1 所示。由圖1 可知,實(shí)線為修改后的曲線,修改之后的距離度量函數(shù)值在IoU 值域內(nèi)總大于改變之前,這表明優(yōu)化之后的距離度量的確可以放大IoU 對(duì)距離的影響,提高聚類準(zhǔn)確率。
圖1 改變前后距離度量函數(shù)曲線對(duì)比
在訓(xùn)練目標(biāo)檢測(cè)模型的時(shí)候,損失函數(shù)作為樣本評(píng)判的重要依據(jù),很大程度上決定了模型最終收斂的效果。在YOLOv4 算法中,損失函數(shù)由回歸損失函數(shù)、分類損失函數(shù)以及置信度損失函數(shù)組成。其中回歸損失采用CIoU Loss 函數(shù),分類損失函數(shù)和置信度損失函數(shù)均采用交叉熵?fù)p失函數(shù),具體表示為
目前基于anchor 的目標(biāo)檢測(cè)算法在檢測(cè)過(guò)程中產(chǎn)生大量的預(yù)測(cè)框樣本,但其中只有小部分包含目標(biāo)正樣本,絕大多數(shù)預(yù)測(cè)框只包含背景負(fù)樣本,正負(fù)樣本數(shù)量相差懸殊。正樣本一般情況下是易分類樣本,這直接導(dǎo)致了容易分類的正樣本占據(jù)了樣本中的絕大多數(shù),造成了嚴(yán)重的樣本不均衡問(wèn)題。
為解決復(fù)雜交通場(chǎng)景下目標(biāo)相互遮擋且存在大量小目標(biāo),一定程度上會(huì)加劇樣本不均衡的問(wèn)題,本文引入焦點(diǎn)損失函數(shù)[18]代替交叉熵?fù)p失函數(shù),焦點(diǎn)損失函數(shù)的表達(dá)式為
式中:a為類別權(quán)重因子,γ為調(diào)制因子。
改進(jìn)后的YOLOv4 損失函數(shù)為
本文在訓(xùn)練過(guò)程中涉及到大量的圖片處理和計(jì)算過(guò)程,需要一定的軟硬件要求,具體的軟硬件環(huán)境如下。操作系統(tǒng):Windows10 專業(yè)版;CPU:Inter i7-8 700 3.20GHz;GPU:NVIDIA GTX 1080Ti;內(nèi)存:32GB 內(nèi)存,16GB 顯存;編程語(yǔ)言:Python3.6;CUDA:Cuda10.0;Cudnn:Cudnn7.4;深度學(xué)習(xí)框架:tensorflow、keras。
本次實(shí)驗(yàn)選取的通用數(shù)據(jù)集包括PASCAL VOC2007、MS COCO2017 和KITTI 自動(dòng)駕駛數(shù)據(jù)集,為適應(yīng)本文對(duì)復(fù)雜交通場(chǎng)景下常見道路目標(biāo)的檢測(cè),需對(duì)這3 種數(shù)據(jù)集標(biāo)注信息進(jìn)行處理,去除多余的標(biāo)注信息并將剩下的數(shù)據(jù)集標(biāo)簽改為“vehicle”、“person”、“bicycle”、“motorbike”。此外,針對(duì)復(fù)雜交通場(chǎng)景,本文手動(dòng)標(biāo)注了復(fù)雜交通場(chǎng)景(complex traffic scene,CTS)數(shù)據(jù)集,CTS數(shù)據(jù)集含有更多的遮擋目標(biāo)和小目標(biāo),可以提高模型對(duì)復(fù)雜交通場(chǎng)景下目標(biāo)的檢測(cè)能力。實(shí)驗(yàn)選用的訓(xùn)練集是本文提出的CTS 數(shù)據(jù)集和KITTI 目標(biāo)檢測(cè)數(shù)據(jù)集,各交通場(chǎng)景下每張圖片最多包含40 個(gè)目標(biāo),包含較多的遮擋目標(biāo)和小目標(biāo)。實(shí)驗(yàn)數(shù)據(jù)集共包含14 797 張圖片,按8∶1∶1 的比例將數(shù)據(jù)集分為訓(xùn)練集、測(cè)試集和驗(yàn)證集,得到訓(xùn)練集圖片11 839 張,測(cè)試集和驗(yàn)證集圖片各1 479 張。
本文實(shí)驗(yàn)使用深度學(xué)習(xí)框架tensorflow-gpu 1.13.1 和Keras 2.1.5 對(duì)改進(jìn)前后的YOLOv4 算法進(jìn)行訓(xùn)練。訓(xùn)練時(shí),初始階段圖片批量大小設(shè)置為32,即一次性加載32 張圖片進(jìn)入內(nèi)存,初始學(xué)習(xí)率設(shè)為0.001,采用自適應(yīng)矩估計(jì)(Adam)優(yōu)化器優(yōu)化模型,迭代5 000 次之后,圖片批量大小改為8,使用keras 中的“ReduceLROnPlateau”函數(shù)對(duì)學(xué)習(xí)率進(jìn)行衰減。關(guān)注模型的性能,當(dāng)?shù)? 次而模型性能不提升時(shí),后一次訓(xùn)練的學(xué)習(xí)率變?yōu)樵瓉?lái)的0.9,同時(shí)使用“EarlyStopping”函數(shù)對(duì)驗(yàn)證集損失進(jìn)行監(jiān)控,當(dāng)?shù)? 次而模型性能不提升時(shí),停止訓(xùn)練,加快訓(xùn)練速度。
3.3.1 遮擋目標(biāo)檢測(cè)實(shí)例
復(fù)雜交通場(chǎng)景之下目標(biāo)之間相互遮擋,原始算法存在漏檢問(wèn)題。如圖2 近處較為密集致使目標(biāo)之間存在一定的遮擋,原始YOLOv4 算法結(jié)果如圖2(a)所示,近處5 輛汽車僅僅檢測(cè)出了3 輛,對(duì)于后面遮擋較為嚴(yán)重的2 輛汽車出現(xiàn)了目標(biāo)漏檢問(wèn)題,嚴(yán)重影響檢測(cè)結(jié)果。改進(jìn)后的YOLOv4算法檢測(cè)結(jié)果如圖2(b)所示,算法可以返回更為準(zhǔn)確的目標(biāo)邊界框,能夠很好地檢測(cè)出被遮擋的汽車目標(biāo),檢測(cè)更為準(zhǔn)確。
圖2 算法改進(jìn)前后遮擋目標(biāo)檢測(cè)實(shí)例
3.3.2 小目標(biāo)檢測(cè)實(shí)例
為了比較直觀地顯示算法對(duì)小目標(biāo)的檢測(cè)能力,實(shí)驗(yàn)選取汽車行車記錄儀攝像頭視頻,分別使用修改前后的YOLOv4 算法進(jìn)行復(fù)雜交通目標(biāo)檢測(cè),該視頻共456 幀,每隔150 幀記錄一次檢測(cè)結(jié)果。圖3 展示了YOLOv4 改進(jìn)前后對(duì)該視頻流的部分檢測(cè)效果對(duì)比圖。
圖3 改進(jìn)前后YOLOv4 算法對(duì)視頻流的檢測(cè)效果
由圖3 可以看出,在第151 幀圖像中,圖像右側(cè)區(qū)域存在多個(gè)小目標(biāo)和密集目標(biāo),改進(jìn)之前的YOLOv4 算法對(duì)此區(qū)域出現(xiàn)了大量的漏檢情況,改進(jìn)之后的YOLOv4 算法就不會(huì)出現(xiàn)目標(biāo)漏檢的問(wèn)題。在第301 幀圖像中,目標(biāo)受遮擋程度不大且較為明顯,改進(jìn)前后的算法均能夠成功檢測(cè)出所有目標(biāo),但改進(jìn)之后的YOLOv4 算法的檢測(cè)置信度明顯更高,檢測(cè)性能更好。以圖中局部放大行人目標(biāo)和汽車目標(biāo)為例,改進(jìn)后的行人目標(biāo)置信度提升到0.85,汽車目標(biāo)置信度提升到0.99,與改進(jìn)前相比分別提升了0.44 和0.09。在第451 幀圖像中,圖像左側(cè)存在3 個(gè)小目標(biāo)且較為模糊,改進(jìn)之前的YOLOv4 算法漏檢了這些目標(biāo),而改進(jìn)之后的YOLOv4 算法則有效地將這些小目標(biāo)檢測(cè)出來(lái)。由檢測(cè)結(jié)果可知,改進(jìn)之后的YOLOv4 算法不僅提升了檢測(cè)目標(biāo)的置信度,也檢測(cè)出了之前漏檢的目標(biāo),檢測(cè)能力明顯提升。
3.3.3 算法綜合檢測(cè)能力對(duì)比實(shí)驗(yàn)
為了實(shí)驗(yàn)改進(jìn)前后YOLOv4 算法對(duì)于多類別的綜合檢測(cè)能力,本小節(jié)分別在CTS、VOC2007、COCO2017 以及KITTI 數(shù)據(jù)集中通過(guò)各類別的平均精度均值(mean average precision,mAP)對(duì)算法進(jìn)行評(píng)估。實(shí)驗(yàn)過(guò)程中,置信度閾值取0.5,非極大值抑制閾值取0.3。
圖4 給出了YOLOv4 算法改進(jìn)前后不同數(shù)據(jù)集上對(duì)于常見道路目標(biāo)檢測(cè)的平均精度變化情況。在本文提出的CTS 數(shù)據(jù)集上,mAP 值從改進(jìn)前的85.15%提升到89.91%;在較為簡(jiǎn)單的VOC-2007 數(shù)據(jù)集上,檢測(cè)精確率能夠達(dá)到更高的水平,YOLOv4 算法在改進(jìn)前mAP 值為88.90%,改進(jìn)后達(dá)到了91.16%;在較為復(fù)雜的COCO2017 數(shù)據(jù)集上,檢測(cè)精確率與CTS 數(shù)據(jù)集相比下降不多,YOLOv4 改進(jìn)前的mAP 值為81.50%,改進(jìn)后提升到84.16%;在自動(dòng)駕駛交通場(chǎng)景數(shù)據(jù)集KITTI 上,檢測(cè)能力也較為突出,YOLOv4 改進(jìn)前后mAP 值從86.17%提升到88.53%。這些實(shí)驗(yàn)結(jié)果表明,改進(jìn)后的YOLOv4 算法對(duì)小目標(biāo)和遮擋目標(biāo)檢測(cè)效果不佳、漏檢率較高的問(wèn)題具有一定的解決能力,使得算法在復(fù)雜交通場(chǎng)景中依然具有很高的綜合檢測(cè)能力,且適合不同交通場(chǎng)景,能夠滿足自動(dòng)駕駛汽車的實(shí)際要求。
圖4 YOLOv4 改進(jìn)前后不同數(shù)據(jù)集上的mAP 曲線
3.3.4 本文算法與其他算法結(jié)果對(duì)比
本小節(jié)將改進(jìn)后的YOLOv4 算法與Faster RCNN、SSD、YOLO、YOLOv4 等目標(biāo)檢測(cè)算法在CTS 數(shù)據(jù)集上進(jìn)行對(duì)比實(shí)驗(yàn),選取的評(píng)價(jià)指標(biāo)為mAP 以及幀率。
表1 給出了不同算法的目標(biāo)檢測(cè)評(píng)估結(jié)果。從評(píng)價(jià)結(jié)果分析可知,改進(jìn)后的YOLOv4 目標(biāo)檢測(cè)算法在精確率方面遠(yuǎn)遠(yuǎn)領(lǐng)先于其他算法,達(dá)到了89.91%;在檢測(cè)速度方面,檢測(cè)速度達(dá)到35.52 f/s,雖然與YOLO 和YOLOv4 相比有所下降,但仍能滿足自動(dòng)駕駛30 f/s 的實(shí)時(shí)性要求,充分說(shuō)明本文提出的YOLOv4 改進(jìn)算法的有效性。
表1 不同目標(biāo)檢測(cè)算法結(jié)果對(duì)比
1)針對(duì)復(fù)雜交通場(chǎng)景下目標(biāo)遮擋問(wèn)題,基于CIoU Loss 回歸損失函數(shù),本文提出了Soft-1DIoUNMS 非極大值抑制算法作為后處理算法,使得改進(jìn)后的YOLOv4 算法能夠提高目標(biāo)定位精度。實(shí)驗(yàn)結(jié)果表明,改進(jìn)后的YOLOv4 算法能夠有效解決目標(biāo)遮擋問(wèn)題,在各種數(shù)據(jù)集上均能發(fā)揮突出的檢測(cè)性能,具有良好的泛化能力。雖然檢測(cè)速度略有下降,但依然能夠滿足自動(dòng)駕駛汽車實(shí)時(shí)性要求。
2)對(duì)復(fù)雜交通場(chǎng)景下小目標(biāo)檢測(cè)問(wèn)題,提出改進(jìn)的K-means 方法,獲得更加準(zhǔn)確的先驗(yàn)框,為解決樣本不均衡的問(wèn)題,引入焦點(diǎn)損失修改損失函數(shù),同時(shí)訓(xùn)練時(shí)使用Mosaic 數(shù)據(jù)增強(qiáng)方法增加小樣本以豐富數(shù)據(jù)集。實(shí)驗(yàn)結(jié)果表明,改進(jìn)后的YOLOv4 算法能夠提升召回率和精確率,對(duì)小目標(biāo)漏檢和虛檢問(wèn)題解決能力突出,同時(shí)算法在各種數(shù)據(jù)集上檢測(cè)精度均有不同程度的提升,具備復(fù)雜交通場(chǎng)景下良好的道路目標(biāo)綜合檢測(cè)能力。
3)本文使用的YOLOv4 是一種基于anchor的目標(biāo)檢測(cè)算法,此類方法先在特征圖上生成大量的anchor 后進(jìn)行分類和位置精修,但是大量冗余的anchor 造成正負(fù)樣本不均衡的問(wèn)題,并且需要額外的非極大值抑制后處理算法,損害了算法的實(shí)時(shí)性。因此基于anchor-fre 的目標(biāo)檢測(cè)算法將會(huì)是一個(gè)比較重要的突破點(diǎn),值得繼續(xù)開發(fā)研究。