趙昀杰 張?zhí)t 姚芷馨
(新疆農(nóng)業(yè)大學(xué)計(jì)算機(jī)與信息工程學(xué)院 新疆 烏魯木齊 830052)
隨著道路交通系統(tǒng)的發(fā)展,道路中各種交通工具的數(shù)量與日俱增。然而大量的交通擁堵甚至交通事故也隨之而來(lái),這給自動(dòng)駕駛和駕駛員輔助設(shè)備等智能駕駛領(lǐng)域的研究帶來(lái)了巨大的挑戰(zhàn)。在車輛行駛過(guò)程中目標(biāo)檢測(cè)算法作為輔助駕駛員和自動(dòng)駕駛系統(tǒng)的重要方法,一直受到研究者的關(guān)注,其對(duì)車輛前方目標(biāo)的準(zhǔn)確檢測(cè)影響著智能駕駛的安全性。
在過(guò)去的幾年里,目標(biāo)檢測(cè)是一項(xiàng)重要且具有挑戰(zhàn)性的任務(wù),得益于卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)的發(fā)展,大量效果顯著的目標(biāo)檢測(cè)模型相繼出現(xiàn)。目前,大部分精確的模型推演時(shí)間較長(zhǎng),這些模型在交通領(lǐng)域大多被用于通過(guò)攝像頭推薦空停車位等對(duì)模型推演速度要求較低的場(chǎng)景。然而,基于攝像頭的車輛危險(xiǎn)預(yù)警等需要模型快速響應(yīng)的場(chǎng)景,仍缺乏準(zhǔn)確且高效的模型。
基于CNN的目標(biāo)檢測(cè)算法主要可以分為兩類,一類是基于候選區(qū)域的雙階段目標(biāo)檢測(cè)模型(Two-stage Object Detection),另一類是可實(shí)時(shí)推演的單階段檢測(cè)模型(One-stage Object Detection)。前者將目標(biāo)檢測(cè)任務(wù)分為兩個(gè)階段進(jìn)行,首先通過(guò)候選區(qū)域網(wǎng)絡(luò)選出一組可能包含目標(biāo)的感興趣區(qū)域,再對(duì)這些區(qū)域進(jìn)行進(jìn)一步分類,從而得到最終的目標(biāo)檢測(cè)結(jié)果,其中具有代表性的模型有Faster R-CNN[1]、R-FCN[2]、RepPoints[3]等。后者則是直接通過(guò)CNN所提取的全局特征直接進(jìn)行目標(biāo)的定位和分類,該類模型推演速率要優(yōu)于雙階段檢測(cè)算法,但精度有所下降,其中具有代表性的模型有YOLO[4-7]、SSD[8]、RetinaNet[9]等。
在這些基于CNN的目標(biāo)檢測(cè)模型中YOLO模型兼顧了推演速度與準(zhǔn)確率,但其主干網(wǎng)絡(luò)(Backbone)與脖頸網(wǎng)絡(luò)(Neck)效率仍比較低,且模型中缺少具有注意力機(jī)制的模塊。該類型模塊現(xiàn)已大量應(yīng)用于基于卷積神經(jīng)網(wǎng)絡(luò)的計(jì)算機(jī)視覺(jué)任務(wù)中,通過(guò)融入上下文信息,使模型能提取到更有用的特征信息,并摒棄冗余的特征信息。這些內(nèi)容的缺失導(dǎo)致網(wǎng)絡(luò)本身的擬合能力和推演速率受到了一定限制。因此,為構(gòu)建高效的駕駛場(chǎng)景目標(biāo)檢測(cè)模型,本文借助單階段檢測(cè)算法的思想,使用EfficientNet-B1[10]對(duì)圖像進(jìn)行特征提取,并將提取到的特征圖送入空間金字塔池化[11](Spatial Pyramid Pooling,SPP)層和路徑聚合網(wǎng)絡(luò)[12](Path Aggregation Network,PANet)進(jìn)行特征融合。最終使用K-means算法在訓(xùn)練集中聚類出目標(biāo)框的先驗(yàn),并借助這些先驗(yàn)框在多尺度特征融合后的特征圖上進(jìn)行目標(biāo)框的預(yù)測(cè)和分類。此外,針對(duì)PANet推演速率慢的問(wèn)題,通過(guò)對(duì)PANet結(jié)構(gòu)進(jìn)行改進(jìn),提出一種計(jì)算量更小的目標(biāo)檢測(cè)網(wǎng)絡(luò)模型,并通過(guò)訓(xùn)練技巧進(jìn)一步提升模型的精度。
2016年5月,Redmon等[4]提出了單階段目標(biāo)檢測(cè)模型YOLOv1,該模型是YOLO系列的首個(gè)模型也是其發(fā)展至今的基礎(chǔ)。該模型將目標(biāo)檢測(cè)任務(wù)作為回歸問(wèn)題來(lái)處理,通過(guò)單個(gè)卷積神經(jīng)網(wǎng)絡(luò)提取圖像的特征圖,將模型最終輸出特征圖中每個(gè)像素點(diǎn)看作一個(gè)網(wǎng)格,每個(gè)網(wǎng)格負(fù)責(zé)預(yù)測(cè)中心點(diǎn)落入其感受野的目標(biāo)及目標(biāo)的類別,該模型不僅推演速度快,且可以進(jìn)行端到端的訓(xùn)練。之后Redmon等又在首個(gè)YOLO模型的基礎(chǔ)上先后提出了YOLO9000[5]、YOLOv3[6],引入了特征金字塔網(wǎng)絡(luò)[13](Feature Pyramid Networks,FPN)作為脖頸網(wǎng)絡(luò),讓模型輸出的網(wǎng)格融入多個(gè)尺度的特征,并在多個(gè)不同尺度特征圖上進(jìn)行預(yù)測(cè)。同時(shí),使用K-means對(duì)訓(xùn)練集中的目標(biāo)框進(jìn)行聚類,模型預(yù)測(cè)時(shí)在聚類結(jié)果的基礎(chǔ)上進(jìn)行縮放以得到最終結(jié)果,這相當(dāng)于引入了先驗(yàn)信息,使訓(xùn)練過(guò)程中模型對(duì)目標(biāo)坐標(biāo)的回歸變得容易。YOLOv3的準(zhǔn)確率達(dá)到了當(dāng)時(shí)實(shí)時(shí)目標(biāo)檢測(cè)的SOTA水平。因此,基于YOLO模型在不同場(chǎng)景中的應(yīng)用與研究也逐漸增加,如Qi[14]和Wang[15]等在YOLOv3的基礎(chǔ)上,對(duì)主干網(wǎng)絡(luò)和脖頸網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行改進(jìn),提高了模型的推演效率及精度。Jiang等[16]通過(guò)增加主干網(wǎng)絡(luò)的卷積核個(gè)數(shù),提升了網(wǎng)絡(luò)的檢測(cè)精度。
2017年8月,Lin等[9]提出了使用焦點(diǎn)損失函數(shù)(Focal Loss)的RetinaNet,該模型使用殘差網(wǎng)絡(luò)(ResNet)與FPN的結(jié)合輸出特征圖,并通過(guò)兩個(gè)子網(wǎng)絡(luò)預(yù)測(cè)出目標(biāo)框和類別,該網(wǎng)絡(luò)通過(guò)改進(jìn)損失函數(shù)有效地抑制了類別不平衡問(wèn)題。
2020年4月,Bochkovskiy等[7]提出了YOLOv4網(wǎng)絡(luò),其以YOLOv3為基礎(chǔ),對(duì)原始YOLOv3主干網(wǎng)絡(luò)進(jìn)行改進(jìn),并通過(guò)馬賽克數(shù)據(jù)增強(qiáng)(Mosaic)、修改損失函數(shù)等技巧,大幅提升了模型的準(zhǔn)確率,其準(zhǔn)確率已然超越了部分雙階段檢測(cè)器。
與YOLO模型類似,大部分單階段目標(biāo)檢測(cè)模型都是由三個(gè)部分組成的,第一部分是在ImageNet大型圖像分類數(shù)據(jù)集上預(yù)先訓(xùn)練的主干網(wǎng)絡(luò),第二部分是進(jìn)行多尺度特征融合的脖頸網(wǎng)絡(luò),第三部分是輸出預(yù)測(cè)結(jié)果的檢測(cè)頭(Head)。
本文將提出的基于EfficientNet-B1的目標(biāo)檢測(cè)模型命名為Eff-InnerStage,其整體結(jié)構(gòu)如圖1所示。
在YOLO模型中,使用DarkNet-53作為主干網(wǎng)絡(luò)提取不同尺度的特征圖。隨著EfficientNet網(wǎng)絡(luò)模型的提出,該模型因其能以極少的計(jì)算量達(dá)到較高的準(zhǔn)確率,而備受關(guān)注。為保證單階段目標(biāo)檢測(cè)器能在保證精度的情況下進(jìn)一步提高推演效率,選擇計(jì)算量較少的EfficientNet-B1作為目標(biāo)檢測(cè)模型的主干網(wǎng)絡(luò)。該網(wǎng)絡(luò)主要由移動(dòng)反向瓶頸卷積[17](Mobile Inverted Bot-tleneck Convolution,MBConv)模塊和基于通道域注意力的壓縮與激發(fā)[18](Squeeze and Excitation,SE)模塊組成。
傳統(tǒng)目標(biāo)檢測(cè)模型中,主干網(wǎng)絡(luò)的結(jié)構(gòu)均可以分為多個(gè)階段,每個(gè)階段均由多個(gè)相同的模塊組成,主流的目標(biāo)檢測(cè)模型中通常將這些階段的結(jié)果作為特征層輸出給后續(xù)的脖頸網(wǎng)絡(luò)。然而通過(guò)觀察不同網(wǎng)絡(luò)的結(jié)構(gòu)后,發(fā)現(xiàn)這些階段性的特征圖維度較小,使用其作為特征層,將影響后續(xù)模型的表征能力。以輸入為512×512的EfficientNet-B1為例,移除該模型末端分類層后結(jié)構(gòu)如表1所示。
表1 EfficientNet-B1結(jié)構(gòu)表
表1中各階段的輸出特征圖維度逐漸增大,但相比于階段9較小,這一現(xiàn)象必然會(huì)導(dǎo)致主干網(wǎng)絡(luò)輸出的高層語(yǔ)義信息明顯多于低層位置信息。為在不改變?cè)W(wǎng)絡(luò)結(jié)構(gòu)的前提下解決該問(wèn)題,以階段8為例,將其整體結(jié)構(gòu)展開并省略不影響維度的批歸一化層和激活函數(shù)層,結(jié)構(gòu)如圖2所示??梢钥闯?相對(duì)于整個(gè)階段8輸出的特征圖維度,在階段8內(nèi)部存在著許多維度更大的特征圖,最大的特征圖維度達(dá)到了1 920,是階段8輸出維度的6倍。但在選擇特征圖的時(shí)候只考慮維度是不全面的,如在階段8中所有輸出維度為1 920的模塊,均包含在一個(gè)短路連接中。因?yàn)橛信月返拇嬖?若使用這些模塊的輸出作為特征圖,必然會(huì)導(dǎo)致輸出的特征有所缺失。綜合考慮各方面因素,對(duì)于EfficientNet-B1選擇其各階段中第一個(gè)卷積層的輸出作為候選特征層,該層不含旁路鏈接且維度相對(duì)較大。這種特征選擇方式不會(huì)改變?cè)鞲删W(wǎng)絡(luò)的卷積核數(shù)量,便于模型使用預(yù)訓(xùn)練權(quán)重。
圖2 EfficientNet-B1階段8結(jié)構(gòu)圖
為保證不引入過(guò)多的計(jì)算量,選擇EfficientNet-B1中下采樣倍數(shù)為8、16、32的網(wǎng)絡(luò)層輸出作為主干網(wǎng)絡(luò)提取的特征圖,對(duì)應(yīng)網(wǎng)絡(luò)中階段5、7、9第一個(gè)卷積層的輸出。為驗(yàn)證所述特征層選擇方法的有效性,以傳統(tǒng)方法選擇一組特征層進(jìn)行對(duì)比實(shí)驗(yàn),對(duì)應(yīng)網(wǎng)絡(luò)中階段4、6、9的輸出。
針對(duì)街景中目標(biāo)數(shù)量多、尺度大小多樣導(dǎo)致檢測(cè)精度下降的問(wèn)題,采用空間金字塔池化與PANet的組合對(duì)主干網(wǎng)絡(luò)特征進(jìn)行融合,并通過(guò)引入深度可分離卷積,在保證模型精度不過(guò)度下降的同時(shí)進(jìn)一步壓縮模型的計(jì)算量。
為進(jìn)一步放大主干網(wǎng)絡(luò)的有效感受野,借助空間金字塔池化,使用尺寸不同但步長(zhǎng)大小都為1的最大池化層,對(duì)下采樣倍數(shù)為32倍的特征圖進(jìn)行多尺度池化,使網(wǎng)絡(luò)對(duì)原始圖片中占據(jù)區(qū)域較大的目標(biāo)有更好的適應(yīng)能力,其結(jié)構(gòu)如圖3所示。
圖3 空間金字塔池化模塊圖
在主干模型中隨著網(wǎng)絡(luò)層數(shù)的加深,其語(yǔ)義信息變得越來(lái)越豐富,而網(wǎng)絡(luò)低層中的位置信息卻逐漸丟失,對(duì)于小目標(biāo)的檢測(cè),網(wǎng)絡(luò)低層特征往往起著決定性的作用。當(dāng)前FPN作為脖頸網(wǎng)絡(luò)被應(yīng)用于大量目標(biāo)檢測(cè)和實(shí)例分割任務(wù)中,其結(jié)構(gòu)如圖4(a)所示,FPN結(jié)合了不同尺度特征的信息,通過(guò)更豐富的特征表示提升網(wǎng)絡(luò)整體的表征性能。在FPN中主干網(wǎng)絡(luò)低層特征比較容易融入高層的語(yǔ)義信息,而主干網(wǎng)絡(luò)的高層特征要融入低層的位置信息則需要通過(guò)主干網(wǎng)絡(luò)的大量卷積操作后才能完成,如圖4中的虛線箭頭所示。在車輛行駛場(chǎng)景中經(jīng)常會(huì)遇見(jiàn)聚集的人群和擁堵的車輛,網(wǎng)絡(luò)低層中精確的定位信息對(duì)密集目標(biāo)檢測(cè)影響巨大,為此選擇PANet作為脖頸網(wǎng)絡(luò),其結(jié)構(gòu)如圖4(b)所示。PANet中卷積操作的數(shù)量要遠(yuǎn)小于主干網(wǎng)絡(luò),因此高層特征更易融入低層特征。如圖4中虛線箭頭所示,PANet在高層特征和低層特征之間建立了一個(gè)快讀通道,從而提升模型的整體精度。
(a) FPN
雖然PANet能為模型帶來(lái)精度的提升,但其引入的計(jì)算量也相對(duì)較大,在原始PANet結(jié)構(gòu)中,特征圖之間主要使用了瓶頸(Bottleneck)結(jié)構(gòu)來(lái)減少計(jì)算量,該結(jié)構(gòu)主要由1×1、3×3、1×1的三個(gè)卷積組成。首先通過(guò)第一個(gè)1×1卷積進(jìn)行降維,以減少接下來(lái)3×3卷積所需的計(jì)算量,最后再通過(guò)1×1的卷積回復(fù)維度。該結(jié)構(gòu)雖然可以顯著地降低計(jì)算量,但3×3的卷積仍然會(huì)帶來(lái)大量計(jì)算量。為此,使用深度可分離卷積(Depthwise Separable Convolution)對(duì)瓶頸中3×3卷積核進(jìn)行進(jìn)一步的優(yōu)化,改進(jìn)前后的瓶頸結(jié)構(gòu)及其輸入與輸出間的依賴關(guān)系如圖5所示。
圖5 改進(jìn)前后的Bottleneck結(jié)構(gòu)對(duì)比圖
從改進(jìn)后的瓶頸結(jié)構(gòu)中,可以看出原結(jié)構(gòu)中的Bottleneck結(jié)構(gòu)被分解為了兩部分,直接有效地降低了模型的計(jì)算量。但是若無(wú)針對(duì)性地替換原PANet中的所有3×3卷積操作必然會(huì)導(dǎo)致模型性能的大幅下降。考慮到PANet的主要任務(wù)是特征融合,對(duì)于圖4(a)中PANet的每個(gè)特征圖,若其僅包含一條輸入路徑,則說(shuō)明該特征圖對(duì)特征融合的貢獻(xiàn)較少,針對(duì)連結(jié)這些特征圖的瓶頸結(jié)構(gòu)及卷積結(jié)構(gòu)進(jìn)行改進(jìn),最終保證整個(gè)模型在擬合不受到過(guò)多影響的情況下,大幅降低模型的計(jì)算量。
模型的檢測(cè)頭主要由兩個(gè)卷積核組成,其在脖頸網(wǎng)絡(luò)輸出的3個(gè)特征圖上進(jìn)行最終的預(yù)測(cè),由于使用了基于先驗(yàn)框(Anchor Bases)的目標(biāo)檢測(cè)方法,模型預(yù)測(cè)出的目標(biāo)框長(zhǎng)度和寬度是一個(gè)縮放系數(shù),其需要與先驗(yàn)框尺寸相乘才能得到最終的預(yù)測(cè)大小。該先驗(yàn)框需通過(guò)聚類計(jì)算得到,將交并比(Intersection of Union,IoU)作為樣本點(diǎn)與質(zhì)心之間的距離計(jì)算公式,使用K-means算法對(duì)訓(xùn)練集中所有目標(biāo)框進(jìn)行聚類,以得到9個(gè)不同尺寸的先驗(yàn)框,用于模型的訓(xùn)練和預(yù)測(cè)。對(duì)于預(yù)測(cè)結(jié)果使用非極大抑制(Non-Maximum Suppression,NMS)對(duì)預(yù)測(cè)出的所有目標(biāo)框進(jìn)行篩選,以得最終結(jié)果。
模型訓(xùn)練時(shí),在YOLO模型損失函數(shù)的基礎(chǔ)上,引入CIoU損失函數(shù)替換原定位損失函數(shù)。在對(duì)模型預(yù)測(cè)的定位信息進(jìn)行損失函數(shù)值計(jì)算時(shí),YOLO主要使用均方誤差(Mean Square Error,MSE)損失函數(shù)計(jì)算預(yù)測(cè)框與真實(shí)框之間的位置及大小差距,其公式如下:
(1)
Losslocation=1-IoU+RCIoU
(2)
(3)
(4)
(5)
式中:IoU表示對(duì)預(yù)測(cè)框和真實(shí)框進(jìn)行傳統(tǒng)的交并比計(jì)算;ρ2(b,bgt)表示真實(shí)框中心點(diǎn)與預(yù)測(cè)框中心點(diǎn)之間的歐氏距離;c表示真實(shí)框與預(yù)測(cè)框組成最小矩形的對(duì)角線長(zhǎng)度;v表示真實(shí)框長(zhǎng)寬比與預(yù)測(cè)框長(zhǎng)寬比之間的差距;α是平衡參數(shù),該參數(shù)在真實(shí)框和預(yù)測(cè)框交并比較小時(shí),縮小v的權(quán)重,使模型更注重于中心點(diǎn)和邊框長(zhǎng)寬的回歸??梢钥闯鯟IoU損失函數(shù)與YOLO的原始定位損失函數(shù)相比,考慮了更多因素,能驅(qū)使模型預(yù)測(cè)出定位更加精準(zhǔn)且更加貼合目標(biāo)的預(yù)測(cè)框,但在梯度回傳時(shí)式(4)容易出現(xiàn)梯度爆炸和梯度消散問(wèn)題,其中v對(duì)w和h的導(dǎo)數(shù)公式為:
(6)
(7)
式(6)和式(7)中w2+h2位于分母位置直接導(dǎo)致了梯度值的不穩(wěn)定,為了解決這一問(wèn)題,在計(jì)算梯度值時(shí),對(duì)原梯度公式進(jìn)行改進(jìn),將式(6)和式(7)同時(shí)乘以(w2+h2)以保證梯度的穩(wěn)定回傳。
整個(gè)預(yù)測(cè)流程中,在對(duì)目標(biāo)中心點(diǎn)坐標(biāo)進(jìn)行預(yù)測(cè)時(shí),會(huì)對(duì)模型的預(yù)測(cè)結(jié)果使用sigmoid函數(shù)以得到0~1之間的值,其正好對(duì)應(yīng)了目標(biāo)中心點(diǎn)在每個(gè)網(wǎng)格中的相對(duì)坐標(biāo)。計(jì)算公式為:
bx=sigmoid(tx)+cx
(8)
by=sigmoid(ty)+cy
(9)
式中:tx和ty為模型對(duì)目標(biāo)框中心點(diǎn)坐標(biāo)的預(yù)測(cè)結(jié)果,其需要通過(guò)sigmoid計(jì)算轉(zhuǎn)化為目標(biāo)所在網(wǎng)格中的相對(duì)坐標(biāo),最終通過(guò)加入網(wǎng)格索引cx和cy,得到預(yù)測(cè)框中心點(diǎn)在特征圖中的坐標(biāo)by和by??梢园l(fā)現(xiàn)sigmoid函數(shù)的計(jì)算結(jié)果起著決定性的作用,但由于該函數(shù)本身的特性使其計(jì)算結(jié)果很難達(dá)到接近0和1的值,這一特性必然會(huì)導(dǎo)致中心點(diǎn)靠近網(wǎng)格邊緣的目標(biāo)受到影響。當(dāng)目標(biāo)中心點(diǎn)預(yù)測(cè)出現(xiàn)偏移,整個(gè)預(yù)測(cè)框的位置都將受到影響,致使原本貼合目標(biāo)的預(yù)測(cè)框出現(xiàn)偏移。在訓(xùn)練過(guò)程中模型為了擬合這些位于網(wǎng)格邊界的目標(biāo),則需要通過(guò)放大參數(shù)來(lái)增大tx和ty的值。盡管放大參數(shù)可能會(huì)使模型得到相對(duì)正確的預(yù)測(cè)結(jié)果,但過(guò)大的參數(shù)極易引起過(guò)擬合問(wèn)題。為使網(wǎng)絡(luò)對(duì)靠近網(wǎng)格邊緣的目標(biāo)更加敏感,將原中心點(diǎn)計(jì)算公式進(jìn)行如下改進(jìn):
(10)
(11)
式(10)和式(11)中引入了系數(shù)α,該系數(shù)將sigmoid的計(jì)算結(jié)果進(jìn)行放大和縮小,使其更容易得到接近或等于0和1的值。這一方法有效降低了模型對(duì)目標(biāo)中心點(diǎn)的擬合難度,尤其是中心點(diǎn)位于網(wǎng)格邊緣的目標(biāo)。同時(shí)由于引入的參數(shù)較少且計(jì)算簡(jiǎn)單,增加的計(jì)算量完全可以忽略不計(jì),α的值通常設(shè)置為1.05。
馬賽克圖像增強(qiáng)是工業(yè)界的研究者在YOLO模型的基礎(chǔ)上提出的,在模型訓(xùn)練過(guò)程中,將四幅圖片通過(guò)裁剪拼接的方式組合在一起,相當(dāng)于把原本屬于四幅圖片的標(biāo)簽融入了一幅圖片中,增加了單個(gè)樣本中所包含的目標(biāo)數(shù)量,也變相增大了批處理大小(Batch Size),使模型在訓(xùn)練時(shí)可以使用較小的批處理大小。但對(duì)整個(gè)數(shù)據(jù)集采用該方法會(huì)導(dǎo)致原數(shù)據(jù)集中的大型目標(biāo)尺寸嚴(yán)重縮減,甚至導(dǎo)致部分本就較小的目標(biāo)因尺寸過(guò)小而不參與訓(xùn)練。最終致使模型對(duì)目標(biāo)的識(shí)別準(zhǔn)確率下降,故使用概率參數(shù)來(lái)控制其使用頻率。經(jīng)該方法增強(qiáng)后的圖像如圖6所示。
圖6 馬賽克圖像增強(qiáng)
在使用梯度下降算法對(duì)模型進(jìn)行優(yōu)化時(shí),損失函數(shù)的值通常會(huì)隨著訓(xùn)練時(shí)間的增加變得越來(lái)越小。當(dāng)損失函數(shù)值接近全局最小值時(shí),應(yīng)該使用更小的學(xué)習(xí)率來(lái)保證模型不會(huì)因?yàn)檫^(guò)度調(diào)參而遠(yuǎn)離最優(yōu)解,而余弦退火(Cosine Annealing)可以通過(guò)余弦函數(shù)來(lái)降低學(xué)習(xí)率。在余弦函數(shù)中,當(dāng)弧度值處于0到π之間時(shí),余弦函數(shù)首先緩慢下降,接著加速下降,最后恢復(fù)緩慢下降,這種學(xué)習(xí)率衰減模式能有效地提升模型的性能。雖然使用了學(xué)習(xí)率衰減策略,但在模型訓(xùn)練初期仍需要通過(guò)使用更小的學(xué)習(xí)率來(lái)防止梯度爆炸。隨著學(xué)習(xí)率的衰減,本就較小的學(xué)習(xí)率將隨著訓(xùn)練時(shí)長(zhǎng)的增加變得越來(lái)越小,模型的訓(xùn)練速度也將變得越來(lái)越慢,甚至止步不前,這導(dǎo)致模型難以收斂到更高的精度,且當(dāng)模型陷入局部最優(yōu)解時(shí),由于學(xué)習(xí)率的不斷降低,模型很難跳出局部最優(yōu)解。為解決這些問(wèn)題,引入帶有預(yù)熱(Warm up)的余弦退火,在訓(xùn)練初期先對(duì)學(xué)習(xí)率進(jìn)行放大,當(dāng)達(dá)到預(yù)設(shè)的最大學(xué)習(xí)率后,再對(duì)學(xué)習(xí)率進(jìn)行余弦衰減,這加快了模型的訓(xùn)練速度,讓模型在訓(xùn)練時(shí)使用更大的學(xué)習(xí)率,幫助模型收斂至更高的精度。但若在整個(gè)訓(xùn)練過(guò)程中僅使用一次帶有預(yù)熱的余弦退火來(lái)降低學(xué)習(xí)率,在訓(xùn)練中后期模型仍然會(huì)出現(xiàn)落入局部最優(yōu)解的情況,為此在引入預(yù)熱的基礎(chǔ)上對(duì)整個(gè)訓(xùn)練周期引入熱重啟(Warm Restart),其對(duì)學(xué)習(xí)率的調(diào)整過(guò)程如圖7所示。
圖7 學(xué)習(xí)率余弦退火變化曲線
這種周期性的學(xué)習(xí)率調(diào)整模式,可以讓模型有效地跳出局部最優(yōu)解,且隨著訓(xùn)練輪數(shù)的增加,每個(gè)衰減周期的時(shí)間會(huì)逐漸變長(zhǎng),避免模型因過(guò)度震蕩而出現(xiàn)無(wú)法收斂的情況,保證其能收斂至更好的結(jié)果。
本實(shí)驗(yàn)使用的GPU為NVIDIA Tesla V100,顯存32 GB。CPU為Intel Xeon Gold 6151,內(nèi)存64 GB。操作系統(tǒng)為Ubuntu 16.04.3 LTS。
為了評(píng)價(jià)模型的檢測(cè)效果,本實(shí)驗(yàn)分別使用了BDD100K和PASCAL VOC兩個(gè)數(shù)據(jù)集。其中BDD100K數(shù)據(jù)集主要針對(duì)駕駛場(chǎng)景中的10種常見(jiàn)目標(biāo),包括行人、汽車、公交車等。每種目標(biāo)又被細(xì)分為被遮擋目標(biāo)、被截?cái)嗄繕?biāo)和正常目標(biāo)。數(shù)據(jù)集中每幅圖片都有三個(gè)獨(dú)立的屬性,分別為天氣、場(chǎng)景、時(shí)段。PASCAL VOC數(shù)據(jù)集主要針對(duì)通用目標(biāo)檢測(cè)任務(wù),其包含20類目標(biāo),該數(shù)據(jù)集還對(duì)目標(biāo)是否被截?cái)嗪褪欠耠y以識(shí)別進(jìn)行了標(biāo)注。針對(duì)BDD100K數(shù)據(jù)集,將其中包含真值標(biāo)記的80 000幅圖片隨機(jī)打亂,并按9∶1的比例分為訓(xùn)練集和測(cè)試集。針對(duì)PASCAL VOC,將PASCAL VOC 2007和PASCAL VOC 2012的訓(xùn)練集和驗(yàn)證集進(jìn)行融合,總計(jì)16 551幅圖片作為訓(xùn)練集,并將PASCAL VOC 2007的4 952幅圖片作為測(cè)試集。
本實(shí)驗(yàn)使用Tensorflow框架,在兩個(gè)數(shù)據(jù)集上采取完全相同的訓(xùn)練參數(shù)及過(guò)程。采用的數(shù)據(jù)增強(qiáng)手段有隨機(jī)裁剪、隨機(jī)縮放、水平翻轉(zhuǎn)、隨機(jī)亮度、隨機(jī)對(duì)比度、隨機(jī)色彩飽和度、隨機(jī)銳度、馬賽克圖像增強(qiáng)。訓(xùn)練過(guò)程分為兩個(gè)階段,總計(jì)訓(xùn)練50個(gè)epoch。第一階段,首先加載主干網(wǎng)絡(luò)在ImageNet上的預(yù)訓(xùn)練權(quán)重,并凍結(jié)主干網(wǎng)絡(luò)參數(shù),對(duì)網(wǎng)絡(luò)的其余部分進(jìn)行5個(gè)epoch的訓(xùn)練,以在訓(xùn)練初期得到較穩(wěn)定的結(jié)果,防止梯度爆炸;第二階段,將網(wǎng)絡(luò)參數(shù)整體解凍進(jìn)行訓(xùn)練,直至訓(xùn)練周期結(jié)束。
在整個(gè)訓(xùn)練過(guò)程中,設(shè)置批處理大小(Batch Size)為16,輸入圖像大小為512×512×3。使用SGD優(yōu)化器,設(shè)置初始學(xué)習(xí)率為0.001;動(dòng)量值為0.9;衰減率為0.000 5,并使用余弦退火重啟對(duì)學(xué)習(xí)率進(jìn)行動(dòng)態(tài)調(diào)整。
設(shè)置四組對(duì)比實(shí)驗(yàn)。第一組使用復(fù)現(xiàn)后的YOLOv4模型結(jié)構(gòu),訓(xùn)練結(jié)果命名為YOLOv4;第二組使用EfficientNet-B1中階段4、6、9的輸出作為特征層,使用SPP與改進(jìn)的PANet進(jìn)行特征融合,訓(xùn)練結(jié)果命名為Eff-Stage;第三組使用EfficientNet-B1中階段5、7、9第一個(gè)卷積層的輸出作為特征層,使用SPP與改進(jìn)的PANet進(jìn)行特征融合,訓(xùn)練結(jié)果命名為Eff-InnerStage;第四組使用與第三組相同的配置,但將PANet中所有的瓶頸結(jié)構(gòu)均使用深度可分離卷積進(jìn)行替換,訓(xùn)練結(jié)果命名為Eff-AllDepth。所有實(shí)驗(yàn)中超參數(shù)設(shè)置、訓(xùn)練流程與訓(xùn)練技巧均保持一致。最后,為測(cè)試所使用訓(xùn)練技巧和損失函數(shù)的實(shí)際效果,在BDD100K數(shù)據(jù)集上,使用Eff-InnerStage進(jìn)行消融實(shí)驗(yàn)。
為測(cè)試實(shí)驗(yàn)中模型的性能,使用與PASCAL VOC相同的評(píng)價(jià)指標(biāo),平均精度(mean Precision)、平均召回率(mean Recall)和mAP(mean Average Precision)作為模型檢測(cè)性能的評(píng)價(jià)指標(biāo)。
在考慮模型精確程度的同時(shí),模型的推演速度和模型所占內(nèi)存的大小也決定其能否被應(yīng)用于更多樣的設(shè)備及場(chǎng)景。對(duì)于模型所占內(nèi)存大小,可以使用參數(shù)量來(lái)進(jìn)行衡量。而對(duì)于模型的推演速率,以往使用推演時(shí)間(Infer Time)和每秒處理幀數(shù)(Frame Per Second,FPS)作為衡量指標(biāo)具有一定的局限性,因?yàn)椴煌脑O(shè)備之間計(jì)算能力各不相同,僅僅考慮推演時(shí)間和FPS是不全面的,故使用十億次浮點(diǎn)運(yùn)算(Giga Floating Point of Operations,GFLOPs)作為衡量模型推演速率的指標(biāo)。
模型在兩個(gè)數(shù)據(jù)集上的訓(xùn)練結(jié)果如表2和表3所示。
表2 在BDD100K數(shù)據(jù)集上模型的指標(biāo)對(duì)比
表3 在PASCAL VOC數(shù)據(jù)集上模型的指標(biāo)對(duì)比
可以看出,相比于YOLOv4模型,使用EfficientNet-B1作為主干網(wǎng)絡(luò)對(duì)網(wǎng)絡(luò)整體性能的提升是比較顯著的。
在兩個(gè)數(shù)據(jù)集上,Eff-InnerStage模型相比于YOLOv4模型消耗了更少的計(jì)算量,但mAP、mPrec、mRec的提升較高。Eff-AllDepth模型相比于Eff-InnerStage模型計(jì)算量縮小了29.48 GB,但其精度下降較多,針對(duì)速度要求高于精度要求的目標(biāo)檢測(cè)任務(wù),可應(yīng)用該模型。可以看出深度可分離卷積改進(jìn)后的PANet在減小計(jì)算量的同時(shí),仍保持著較好的特征融合能力。然而準(zhǔn)確率的提升也取決于主干網(wǎng)絡(luò)中特征層的選擇,如模型Eff-Stage雖然計(jì)算量較小,但其準(zhǔn)確率相比于其它實(shí)驗(yàn)?zāi)P瓦^(guò)于低下,說(shuō)明提出的特征層選擇方法有效改進(jìn)了主干網(wǎng)絡(luò)輸出的特征層質(zhì)量。
為進(jìn)一步對(duì)比實(shí)驗(yàn)中模型的擬合能力和收斂速度,截取訓(xùn)練過(guò)程中訓(xùn)練集損失函數(shù)值的變化圖像,如圖8和圖9所示。驗(yàn)證集損失函數(shù)值的變化圖像如圖10和圖11所示。
圖9 PASCAL VOC訓(xùn)練集上各模型的損失函數(shù)變化曲線
圖10 BDD100K驗(yàn)證集上各模型的損失函數(shù)變化曲線
圖11 PASCAL VOC驗(yàn)證集上各模型的損失函數(shù)變化曲線
在BDD100K數(shù)據(jù)集上,從損失函數(shù)值的變化可以看出,Eff-Stage、Eff-InnerStage和Eff-AllDepth在同樣的訓(xùn)練周期中,訓(xùn)練集損失函數(shù)值要低于YOLOv4,說(shuō)明使用EfficientNet-B1作為主干網(wǎng)絡(luò)是可行的。所有實(shí)驗(yàn)?zāi)P途稍谟?xùn)練集上快速收斂,這一現(xiàn)象說(shuō)明了CIoU損失函數(shù)能保證模型正常且快速的收斂。對(duì)于驗(yàn)證集損失函數(shù)值,Eff-Stage的損失值要高于其他模型,Eff-InnerStage損失值最低,這與測(cè)試集上的結(jié)果相符。在PASCAL VOC數(shù)據(jù)集上,各模型損失函數(shù)值的變化情況與BDD100K的結(jié)果相似,Eff-Stage的驗(yàn)證集損失函數(shù)隨著訓(xùn)練時(shí)長(zhǎng)的增加,損失函數(shù)值由初始的快速降低變?yōu)榫徛仙?但該模型的訓(xùn)練集損失函數(shù)值卻比其他幾個(gè)模型的損失值都要低,這表明模型Eff-Stage出現(xiàn)了過(guò)擬合現(xiàn)象。而實(shí)驗(yàn)中其他使用EfficientNet-B1作為主干網(wǎng)絡(luò)的模型均未出現(xiàn)過(guò)擬合問(wèn)題,故本文提出模型的主干網(wǎng)絡(luò)特征選擇是較合理的。
為更直觀地展示實(shí)驗(yàn)中模型的檢測(cè)準(zhǔn)確率,從兩個(gè)數(shù)據(jù)集的測(cè)試集中分別選取5幅圖片對(duì)模型進(jìn)行測(cè)試,并將結(jié)果進(jìn)行可視化展示和對(duì)比,結(jié)果如圖12和圖13所示。
(a) 原圖 (b) Eff-InnerStage (c) Eff-AllDepth(d) Eff-Stage (e) YOLOv4圖12 模型在BDD100K測(cè)試圖片上的檢測(cè)效果
(a) 原圖 (b) Eff-InnerStage(c) Eff-AllDepth (d) Eff-Stage(e) YOLOv4圖13 模型在PASCAL VOC測(cè)試圖片上的檢測(cè)效果
圖12和圖13中相同線型的目標(biāo)邊框表示同一類別的目標(biāo),其中(a)是測(cè)試集原圖,其余每一列圖片均來(lái)自不同模型的預(yù)測(cè)結(jié)果。觀察圖12(b)和圖13(b)可以發(fā)現(xiàn),Eff-InnerStage模型具有較高的檢測(cè)精度和普適性,這和訓(xùn)練得到的各項(xiàng)結(jié)果相符,也證明了該模型在面對(duì)不同規(guī)模數(shù)據(jù)集時(shí)均有著較好的檢測(cè)精度,故針對(duì)PANet的改進(jìn)是有效的。圖12中第二、第三行的測(cè)試圖片分別來(lái)自強(qiáng)光直射的白天和光線昏暗的夜晚兩種情況,從這兩幅圖片的檢測(cè)結(jié)果可以看出Eff-InnerStage模型相比于YOLOv4模型有著更好的魯棒性,其受圖片質(zhì)量的影響更小。對(duì)比圖13中各模型的檢測(cè)結(jié)果可以發(fā)現(xiàn)Eff-InnerStage相比于YOLOv4模型有著更貼合目標(biāo)的預(yù)測(cè)框,且對(duì)密集的目標(biāo)更加敏感。
在消融實(shí)驗(yàn)中,針對(duì)Eff-InnerStage的實(shí)驗(yàn)結(jié)果如表4所示。
表4 消融實(shí)驗(yàn)結(jié)果
可以發(fā)現(xiàn)在BDD100K數(shù)據(jù)集上,三種訓(xùn)練技巧均為模型帶來(lái)了一定的提升。模型Eff-InnerStage使用CIoU定位損失函數(shù)替換MSE損失函數(shù)提升不明顯,但在實(shí)驗(yàn)中能加快模型收斂。中心點(diǎn)縮放因子和余弦退火對(duì)模型的精度提升較小,然而在訓(xùn)練階段能為模型的訓(xùn)練提供保證,避免因梯度爆炸和欠擬合問(wèn)題而導(dǎo)致大量無(wú)效實(shí)驗(yàn)。馬賽克數(shù)據(jù)增強(qiáng)帶來(lái)的提升較大,相比于僅使用CIOU損失函數(shù)的模型提升了1.39百分點(diǎn),這表明本文設(shè)計(jì)的模型是受數(shù)據(jù)驅(qū)動(dòng)的,可范化至其他檢測(cè)任務(wù)中。最終多種訓(xùn)練技巧的聯(lián)合使用為模型帶來(lái)了2.57百分點(diǎn)的精度提升,不僅說(shuō)明了訓(xùn)練技巧的有效性,也說(shuō)明了不同訓(xùn)練技巧之間具有一定的互補(bǔ)性。
針對(duì)智能駕駛領(lǐng)域的目標(biāo)檢測(cè)問(wèn)題,使用精確高效的EfficientNet作為主干網(wǎng)絡(luò),結(jié)合SPP與PANet構(gòu)建單階段目標(biāo)檢測(cè)模型,并通過(guò)改進(jìn)PANet提出該模型的輕量級(jí)架構(gòu)。使用改進(jìn)后的YOLO損失函數(shù),結(jié)合多種訓(xùn)練技巧對(duì)模型進(jìn)行訓(xùn)練。實(shí)驗(yàn)結(jié)果表明,提出的Eff-InnerStage網(wǎng)絡(luò)模型以較低的計(jì)算量消耗在BDD100K和PASCAL VOC數(shù)據(jù)集上分別達(dá)到了37.79%和82.39%的準(zhǔn)確率,并通過(guò)對(duì)比實(shí)驗(yàn)和消融實(shí)驗(yàn)證明了網(wǎng)絡(luò)模型及訓(xùn)練技巧的有效性。