肇啟明,張 濤,孫 俊
江南大學(xué) 人工智能與計算機(jī)學(xué)院,江蘇 無錫 214122
目標(biāo)檢測任務(wù)就是要找出圖像當(dāng)中所包含的感興趣的物體,包括它們在圖像當(dāng)中的位置以及所屬類別。一些計算機(jī)視覺的其他方向,例如目標(biāo)跟蹤、行人重識別等,其前置任務(wù)也都是目標(biāo)檢測,因此不論是學(xué)術(shù)界還是工業(yè)界,目標(biāo)檢測都是最熱門的方向之一。隨著深度學(xué)習(xí)的迅猛發(fā)展,目標(biāo)檢測也從傳統(tǒng)的數(shù)字圖像處理算法轉(zhuǎn)向了基于深度學(xué)習(xí)的目標(biāo)檢測算法,目前基于深度學(xué)習(xí)的目標(biāo)檢測算法可以分為兩類。第一類是以Fast R-CNN(fast regions with convolutional neural network features)[1]系列為代表的雙階段(Two-Stage)檢測方法,此類方法將檢測任務(wù)分為兩個階段,即第一階段通過提議網(wǎng)絡(luò)提出候選區(qū)域集合,第二階段對候選區(qū)域使用卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural network,CNN)進(jìn)行分類和邊界框回歸進(jìn)而得到最終結(jié)果,其特點(diǎn)是準(zhǔn)確率高,但是速度較慢。第二類則是以YOLO(you only look once)[2-4]系列為代表的單階段(One-Stage)檢測方法,此類方法提取圖像特征之后直接對邊界框做回歸并得到類別,幾乎實(shí)現(xiàn)端到端的檢測,其特點(diǎn)是速度快,但起初準(zhǔn)確率不高。隨著算法的不斷改進(jìn),目前One-Stage 檢測算法既擁有比Two-Stage 算法更快的速度,同時還能保證較高的精度。
盡管目前各種各樣的目標(biāo)檢測算法被提出,但幾乎所有One-Stage檢測網(wǎng)絡(luò)都可以抽象地看作由骨干網(wǎng)絡(luò)(Backbone)、頸部(Neck)、檢測頭(Head)三個部分組成。如圖1所示,Backbone部分用來抽取圖像當(dāng)中不同尺度大小的特征,Neck 部分對Backbone 抽取的多尺度特征進(jìn)行特征融合等操作,Head 部分則是使用Neck 融合處理過的特征進(jìn)行預(yù)測,最終輸出圖像中物體的邊界框位置以及物體所屬類別。
圖像當(dāng)中物體尺寸差別大一直以來都是目標(biāo)檢測任務(wù)中的一大挑戰(zhàn),起初的One-Stage 檢測器例如YOLOv1,只采用單尺度的特征圖進(jìn)行檢測(圖2(a)),導(dǎo)致網(wǎng)絡(luò)對小目標(biāo)檢測效果很差,后來YOLOv3使用了FPN(feature pyramid network)[5](圖2(b))作為Neck融合多尺度特征,使得檢測效果得到了極大提升。后續(xù)各種Neck 例如SPP(spatial pyramid pooling)[6]、PAN(path aggregation network)[7]被提出,可見Neck 部分在檢測網(wǎng)絡(luò)當(dāng)中起著承上啟下的關(guān)鍵作用。
圖2 不同尺度的檢測方法Fig.2 Methods for detection at different scales
目標(biāo)檢測的損失函數(shù)一般由兩部分組成,分別為類別損失和位置損失。YOLO 系列還額外需要一個置信度損失。類別損失即用來計算目標(biāo)預(yù)測類別與實(shí)際類別的誤差,位置損失即用來計算目標(biāo)預(yù)測邊界框與實(shí)際邊界框的坐標(biāo)位置誤差。
One-Stage 算法之所以準(zhǔn)確率不理想,一方面是因?yàn)樵O(shè)計的Neck 融合特征能力有限,導(dǎo)致小目標(biāo)檢測效果很差。另一方面則是由于位置損失函數(shù)的不足,現(xiàn)有的位置損失函數(shù)并沒有考慮到損失函數(shù)內(nèi)部各組成部分之間的關(guān)系,導(dǎo)致網(wǎng)絡(luò)優(yōu)化的過程不夠準(zhǔn)確。針對目前目標(biāo)檢測任務(wù)這兩個部分存在的不足,本文首先提出了一個基于IoU 的動態(tài)交并比損失函數(shù),能夠根據(jù)真實(shí)邊界框與預(yù)測邊界框之間不同的位置狀態(tài),動態(tài)地給予位置損失中各組成部分不同權(quán)重,讓網(wǎng)絡(luò)能夠在不同的階段更有針對性地去優(yōu)化邊界框位置。其次本文將可變形卷積應(yīng)用到Neck 部分,基于PAN 結(jié)構(gòu)設(shè)計了一個可以即插即用的結(jié)合可變形卷積的Neck 來進(jìn)行特征融合,提升網(wǎng)絡(luò)對小目標(biāo)檢測能力。
實(shí)驗(yàn)部分本文使用YOLOv6作為基線網(wǎng)絡(luò)。為了評估方法的性能,本文在與原論文相同的COCO2017數(shù)據(jù)集上進(jìn)行訓(xùn)練與測試。本文主要的貢獻(xiàn)如下:
(1)設(shè)計了針對目標(biāo)檢測的位置損失函數(shù)和Neck部分,可以即插即用應(yīng)用于各種目標(biāo)檢測網(wǎng)絡(luò)當(dāng)中。
(2)將本文方法應(yīng)用于三種體量的YOLOv6 模型上以實(shí)現(xiàn)其性能的提升。
(3)在COCO2017 數(shù)據(jù)集上驗(yàn)證本文方法的有效性。
目標(biāo)檢測任務(wù)要檢測出圖像當(dāng)中目標(biāo)的位置和類別。傳統(tǒng)的目標(biāo)檢測主要基于數(shù)字圖像處理提取目標(biāo)區(qū)域的傳統(tǒng)特征,例如方向梯度直方圖(histogram of oriented gradient,HOG)[8]和尺度不變特征變換(scale invariant feature transform,SIFT)[9]等,再利用分類器例如支持向量機(jī)(support vector machine,SVM)對區(qū)域進(jìn)行分類,存在著精度低、魯棒性差等問題。近年來,隨著深度學(xué)習(xí)的迅猛發(fā)展,基于深度學(xué)習(xí)的目標(biāo)檢測方法[10-11]在速度和精度方面都遠(yuǎn)超傳統(tǒng)目標(biāo)檢測,取得了巨大成功。一般可以根據(jù)檢測流程將算法分為兩類:先提取物體區(qū)域,再進(jìn)行分類識別的雙階段方法和直接做回歸得到目標(biāo)位置坐標(biāo)與類別的單階段方法。雙階段檢測算法的代表為Fast RCNN[1]系列。R-CNN[12]網(wǎng)絡(luò)率先將深度學(xué)習(xí)應(yīng)用到目標(biāo)檢測任務(wù)當(dāng)中,先使用選擇性搜索算法(selective search)在圖像上生成大量的提議區(qū)域,這對應(yīng)著雙階段當(dāng)中的第一個階段,再使用CNN 提取每一個提議區(qū)域的特征,最后對每一個類別訓(xùn)練一個SVM 作為分類器,來預(yù)測提議區(qū)域的類別,這也對應(yīng)著雙階段的第二階段。由于R-CNN對每一個提議區(qū)域都需要重新輸入到CNN 中提取特征,導(dǎo)致速度極慢。后來的Fast R-CNN 只使用CNN 提取一次特征,得到圖像的特征圖,再將原圖像當(dāng)中的提議區(qū)域直接映射到特征圖上,而不用重新提取特征,節(jié)省大量計算時間,并且把最后的回歸與分類也放入了CNN當(dāng)中,速度較R-CNN 提升顯著。Faster R-CNN[13]則是成功地將區(qū)域提議、特征提取、回歸與分類融合到了整個模型當(dāng)中,速度和精度又得到了較大提升。雙階段檢測算法的優(yōu)點(diǎn)是精度高,但因?yàn)殡p階段檢測結(jié)構(gòu)固有的局限性,導(dǎo)致速度遠(yuǎn)不如單階段檢測。
單階段檢測算法則是拋棄了繁重的區(qū)域提議階段,端到端地進(jìn)行檢測,代表算法為YOLO 系列。YOLOv1[2]使用CNN 提取原圖像特征并直接對邊界框做回歸與分類,速度較雙階段有極大提升但是精度卻不理想。YOLOv2[3]則是提出了錨框機(jī)制,對位置的預(yù)測不再是盲目暴力地回歸,而是基于預(yù)先給定的錨框大小,計算與實(shí)際邊界框的偏移,極大地提升了收斂速度和檢測精度。YOLOv3[4]則是加入了FPN 作為Neck,融合多尺度特征進(jìn)行預(yù)測,使得模型在速度和精度都得到了進(jìn)一步提升,YOLOv3也一度成為了工業(yè)界使用最為廣泛的模型之一。近期某團(tuán)隊基于RepVGG 的思想設(shè)計出了更高效的EfficientRep Backbone、RepPAN NECK 與Efficient Decoupled Head,并且使用了全新的SIoU Loss 作為位置損失函數(shù),提出了YOLOv6[14],在速度與精度上超過其他同體量的算法。
目標(biāo)檢測任務(wù)的損失函數(shù)一般由兩部分構(gòu)成,分別是類別損失和位置損失。而YOLO 額外多出一個置信度誤差,所謂置信度就是指模型預(yù)測的邊界框中包含物體的概率。
常見的類別損失有Cross Entropy Loss、Focal Loss[15]等。而對于位置損失,YOLOv1 使用均方誤差來計算預(yù)測框與真實(shí)框中心點(diǎn)坐標(biāo)以及寬高的誤差,由于均方誤差損失約束能力有限,并且對邊界框尺度比較敏感,導(dǎo)致模型精度不高。目前的位置損失大多是基于交并比(intersection over union,IoU)而發(fā)展出來的,如IoU Loss[16]、GIoU Loss(generalized IoU loss)[17]、DIoU Loss(distance IoU loss)[18]、CIoU Loss(complete IoU loss)[18]等。而所謂IoU 就是指兩個邊界框之間交集與并集的比值。IoU Loss定義為:
然而IoU Loss存在著弊端,當(dāng)兩個邊界框不相交時,無論兩個邊界框相距多遠(yuǎn)損失恒為1,即無法衡量兩個不相交邊界框之間距離的大小。為了解決這個問題,GIoU Loss被提出。GIoU Loss定義為:
其中,C表示預(yù)測框A與真實(shí)框B的最小外接矩形面積,這樣解決了邊界框不重合時存在的問題。然而當(dāng)兩個框呈包含關(guān)系時,GIoU Loss 便退化為了IoU Loss,進(jìn)而DIoU Loss 又被提出以解決此問題。DIoU Loss定義為:
其中,ρ(b,bgt)表示兩個邊界框中心點(diǎn)的距離,c表示最小外接矩形框的對角線長度。
一個好的位置損失函數(shù)要考慮到三種因素,即IoU、中心點(diǎn)距離以及邊界框形狀,于是又提出了CIoU Loss,定義為:
其中,w、h、wgt、hgt分別為預(yù)測邊界框的寬、高和真實(shí)邊界框的寬、高??梢钥闯?,CIoU Loss 在DIoU Loss的基礎(chǔ)上,又引入了寬高比,使得損失函數(shù)更加完善。
而YOLOv6 中則是使用了最新的SIoU Loss(scylla IoU loss)[19]作為位置損失函數(shù),SIoU Loss 進(jìn)一步引入了兩個邊界框之間的角度信息如圖3。損失函數(shù)中應(yīng)該考慮到邊界框之間的角度α,當(dāng)α小于π/4 時去約束α,使其等于0,即讓預(yù)測邊界框中心點(diǎn)向真實(shí)框中心點(diǎn)所在X軸靠攏,大于π/4 則最小化β,向Y軸靠攏。
圖3 SIoU Loss角度損失Fig.3 Angle cost of SIoU Loss
角度損失Λ定義為:
SIoU距離損失定義為:
其中,Cw、Ch、W、H如圖3 中所示??梢奡IoU 中角度損失最后是以距離損失組成部分的形式存在的。加上衡量形狀的形狀損失Ω,最終SIoU Loss定義為:
然而最新的SIoU Loss 仍存在一些問題:首先,對于角度小于π/4 的情況,向X軸優(yōu)化,反之向Y軸優(yōu)化,這種不一致的優(yōu)化行為不利于網(wǎng)絡(luò)的訓(xùn)練;其次,將角度損失融合進(jìn)了距離損失當(dāng)中,不能夠清晰地體現(xiàn)角度損失對網(wǎng)絡(luò)的約束作用;最后一點(diǎn)也是這一系列IoU 損失函數(shù)的共同問題,就是沒有充分考慮到損失函數(shù)內(nèi)部各組成部分之間的內(nèi)在聯(lián)系,不能使網(wǎng)絡(luò)在訓(xùn)練的不同階段有針對性地進(jìn)行優(yōu)化,這些正是本文要解決的問題。
觀察整個目標(biāo)檢測任務(wù)訓(xùn)練過程,不難發(fā)現(xiàn)在訓(xùn)練的初期如圖4,真實(shí)邊界框和預(yù)測邊界框之間距離往往較遠(yuǎn)甚至不相交,此時即使是兩個邊界框形狀完全相同,預(yù)測效果仍然很差,因此此時網(wǎng)絡(luò)應(yīng)該更多去關(guān)注角度損失,對角度的約束可以讓兩個邊界框中心點(diǎn)能夠更快地貼近。反映在損失函數(shù)上就是應(yīng)該增大角度損失的權(quán)重,而適當(dāng)降低形狀損失的權(quán)重。到了訓(xùn)練的中后期如圖5,邊界框相距較近,即使不按照約束的角度,網(wǎng)絡(luò)也有能力對中心點(diǎn)距離進(jìn)行優(yōu)化,如果此時還過分關(guān)注角度損失,反而會對訓(xùn)練造成干擾。而此時形狀成為了影響檢測效果的主要因素,因此網(wǎng)絡(luò)應(yīng)該更多去關(guān)注形狀損失。反映在損失函數(shù)上就是要降低角度損失權(quán)重,提高形狀損失的權(quán)重。這種現(xiàn)象是各種目標(biāo)檢測任務(wù)中普遍存在的。
圖4 訓(xùn)練初期邊界框狀態(tài)Fig.4 Bounding box status at beginning of training
圖5 訓(xùn)練中后期邊界框狀態(tài)Fig.5 Bounding box status in middle and late training
基于這種想法,本文設(shè)計了基于IoU Loss的動態(tài)交并比損失函數(shù)(dynamic intersection over union loss,DYIoU Loss)來動態(tài)調(diào)整不同訓(xùn)練階段位置損失函數(shù)各組成部分的不同權(quán)重。損失函數(shù)由IoU 損失、距離損失、角度損失、形狀損失四部分構(gòu)成。
(1)角度損失
對于角度損失不再分情況進(jìn)行優(yōu)化,不論夾角α是否小于π/4,均讓其向π/4優(yōu)化,即約束預(yù)測邊界框沿著夾角π/4的方向朝真實(shí)邊界框靠近。
角度損失Λ定義為:
其中,bx、by分別表示邊界框中心點(diǎn)橫、縱坐標(biāo),gt代表真實(shí)邊界框,Cw、Ch分別表示真實(shí)邊界框中心點(diǎn)與預(yù)測邊界框中心點(diǎn)的水平、豎直距離,如圖6 所示。當(dāng)x=1 時,即α=π/4 時,角度損失為0。與SIoU 中分情況的角度損失相比,本文中這種一致性的行為更有助于網(wǎng)絡(luò)訓(xùn)練。
(2)距離損失Δ與形狀損失Ω
其中,距離損失中的ρ、c分別表示預(yù)測邊界框與真實(shí)邊界框之間中心點(diǎn)距離、最小外接矩形框?qū)蔷€長度(如圖7)。形狀損失中的w、h、wgt、hgt分別代表預(yù)測邊界框和真實(shí)邊界框的寬、高。θ用以控制形狀損失的全局權(quán)重,本文沿用SIoU當(dāng)中的設(shè)定,取4。
圖7 DYIoU Loss距離損失和形狀損失Fig.7 Distance cost and shape cost of DYIoU Loss
(3)DYIoU Loss
其中,λ為全局參數(shù),用來權(quán)衡IoU 和距離、角度、形狀三個損失的貢獻(xiàn),在整個訓(xùn)練任務(wù)中并不改變。而對于角度損失和形狀損失,分別給予權(quán)重γ和v,而這兩個權(quán)重隨著距離損失Δ的減小而分別減小和增大,即在網(wǎng)絡(luò)訓(xùn)練過程中動態(tài)地減小角度損失的貢獻(xiàn),增大形狀損失的貢獻(xiàn)。
DYIoU Loss有效地解決了其他位置損失函數(shù)當(dāng)中存在的共同問題。首先保證了網(wǎng)絡(luò)的一致性,不再根據(jù)角度的不同向不同坐標(biāo)軸優(yōu)化。其次角度損失不再與位置損失融合在一起,而是以獨(dú)立組成部分的形式存在,使得角度對網(wǎng)絡(luò)的約束更直觀。最后給予了損失動態(tài)權(quán)重,在網(wǎng)絡(luò)訓(xùn)練的不同階段動態(tài)調(diào)節(jié)不同損失的貢獻(xiàn),更加符合目標(biāo)檢測任務(wù)訓(xùn)練邏輯。
目前主流Neck的設(shè)計思想都是讓不同尺度的特征圖進(jìn)行融合。融合的方式有對應(yīng)元素相加,例如FPN、SPP等,也有在通道維度的拼接,例如YOLOv4[20]中改進(jìn)的PAN等。高層特征往往包含圖像的高級語義信息,特征圖小,因此要先進(jìn)行上采樣后才能與低層特征融合。低層特征往往包含圖像低級形狀信息,特征圖較大,因此要先進(jìn)行下采樣再與高層特征融合。
由于卷積的感受野有限,并且卷積模式固定,不能靈活調(diào)整采樣位置(圖8(a))。因此在Neck當(dāng)中使用的卷積往往不能夠有效地保留不同維度特征圖中信息,而可變形卷積(deformable convolution)[21]則是通過訓(xùn)練一個偏置矩陣,讓卷積能夠自適應(yīng)地調(diào)整采樣位置,增大感受野,能夠捕捉到圖像中更有用的特征,提升特征抽取能力(圖8(b))?;谶@種特性,本文對YOLOv6的Neck進(jìn)行改進(jìn),結(jié)合可變形卷積提出了DePAN Neck(deformable path aggregation network neck)結(jié)構(gòu)(如圖9)來對不同尺度的特征進(jìn)行融合。
圖8 卷積與可變形卷積采樣方式Fig.8 Sampling methods of convolution and deformable convolution
圖9 DePAN Neck結(jié)構(gòu)Fig.9 Structure of DePAN Neck
對于Backbone 與Head 部分沿用原YOLOv6 中的EfficientRep Backbone 和Efficient Decoupled Head,流程上DePAN Neck 接收Backbone 提取出的不同尺度特征,對于高層特征,先通過一個1×1 的卷積然后通過轉(zhuǎn)置卷積進(jìn)行上采樣,與相鄰低層特征在通道維度進(jìn)行拼接操作,再通過DeConvBlock對特征進(jìn)行融合,即圖9當(dāng)中自上而下的融合過程。對于低層特征,通過3×3卷積下采樣再與相鄰高層特征在通道維度做拼接,通過DeConvBlock對拼接后的特征進(jìn)行融合,即圖9當(dāng)中自下而上的融合過程。最終得到融合后的特征用以輸入到Head部分進(jìn)行分類與回歸的預(yù)測。而DeConvBlock 結(jié)構(gòu)則是通過重復(fù)堆疊12 個DeConv Cell(圖10)組成。類別損失沿用YOLOv6中使用的VarifocalLoss,位置損失部分則是使用本文的DYIoU Loss。DePAN Neck 結(jié)構(gòu)與DYIoU Loss 并不局限于某個模型,而是可以即插即用,拓展到各種類型目標(biāo)檢測任務(wù)當(dāng)中。
圖10 DeConv Cell結(jié)構(gòu)Fig.10 Structure of DeConv Cell
為了評估提出方法的有效性,本文選用與基線網(wǎng)絡(luò)YOLOv6 原論文中相同的COCO2017[22]數(shù)據(jù)集。COCO2017是由微軟提供的一個包含118 278張訓(xùn)練圖片和5 000 張驗(yàn)證圖片的大型數(shù)據(jù)集,共80 個類別,平均每張圖片當(dāng)中包含3.5 個目標(biāo),是計算機(jī)視覺領(lǐng)域使用最為廣泛的數(shù)據(jù)集。此外,本文還在公開數(shù)據(jù)集PASCAL VOC2012[23]數(shù)據(jù)集上進(jìn)行了豐富的實(shí)驗(yàn)來進(jìn)一步驗(yàn)證方法的有效性,VOC2012 包含5 717 張訓(xùn)練圖片和5 823 張驗(yàn)證圖片,共20 個類別。
本文使用目標(biāo)檢測中最常用的mAP作為評價指標(biāo)。對于其計算方法,準(zhǔn)確率與召回率定義分別為:
其中,TP、FP、FN分別表示真正例、假正例、假反例。AP(average precision)即為Precision-Recall 曲線下面積。而mAP 則等于所有類別的平均AP 值。mAP0.50表示當(dāng)IoU 閾值為0.50 時的mAP 值,mAP0.50:0.95表示IoU 閾值從0.50 到0.95 步長為0.05 所求得10 次mAP的平均值。
本文將所提出方法應(yīng)用到Y(jié)OLOv6-N、YOLOv6-T、YOLOv6-S 3 個體量的YOLOv6 模型上,基于Pytorch 深度學(xué)習(xí)框架實(shí)現(xiàn)。實(shí)驗(yàn)設(shè)備為RTX-3090顯卡。優(yōu)化器使用SGD,圖像輸入大小以及數(shù)據(jù)增強(qiáng)部分均沿用原始YOLOv6 設(shè)置。由于原YOLOv6中Batch size 為256,而本文設(shè)置為64,學(xué)習(xí)率縮小為原設(shè)置的1/4。使用余弦退火策略調(diào)整學(xué)習(xí)率,epochs設(shè)置400,不使用任何預(yù)訓(xùn)練權(quán)重。
本文將所提出方法應(yīng)用到Y(jié)OLOv6-N、YOLOv6-T、YOLOv6-S 3 個體量的網(wǎng)絡(luò)當(dāng)中,在與原論文相同的COCO數(shù)據(jù)集上進(jìn)行訓(xùn)練與驗(yàn)證。
3.4.1 定量分析
表1 為不同體量模型在COCO2017 數(shù)據(jù)集上檢測精度,其中*表示在原有模型基礎(chǔ)上使用本文方法,3 個體量網(wǎng)絡(luò)的mAP0.50:0.95分別提升2.9、2.1、0.8 個百分點(diǎn),mAP0.50分別提升3.0、2.3、0.9 個百分點(diǎn)。同時為了檢驗(yàn)算法對小目標(biāo)的檢測效果,本文統(tǒng)計了小目標(biāo)檢測精度如表2 所示,mAP0.50:0.95分別提升1.2、1.3、0.6 個百分點(diǎn)。通過定量對比可以發(fā)現(xiàn)模型總體檢測精度以及對小目標(biāo)的檢測精度均有所提升。
表1 不同模型在COCO2017驗(yàn)證集上檢測精度對比Table 1 Comparison of detection accuracy of different models on COCO2017 validation dataset
表2 小目標(biāo)物體檢測精度對比Table 2 Comparison of detection accuracy on small target 單位:%
3.4.2 定性分析
為了更直觀地展示算法性能的提升,圖11 給出了使用原算法和改進(jìn)后的算法對圖片的推理結(jié)果可視化對比。定性分析實(shí)驗(yàn)結(jié)果,觀察圖11 可以發(fā)現(xiàn),加入本文方法后,算法能夠更加準(zhǔn)確地檢測到圖中的小目標(biāo)物體,并且對于原來檢測錯誤的類別也有了一定的修正。從實(shí)驗(yàn)結(jié)果可以看出,使用本文提出的DePAN Neck 以及DYIoU Loss 進(jìn)行訓(xùn)練,可以顯著提升模型的性能。
圖11 YOLOv6-N與改進(jìn)后的YOLOv6-N推理結(jié)果對比Fig.11 Comparison of reasoning results between YOLOv6-N and improved YOLOv6-N
3.5.1 各模塊有效性驗(yàn)證
為了驗(yàn)證各個模塊的有效性,本文設(shè)計了一系列的控制變量實(shí)驗(yàn),首先使用YOLOv6-N和YOLOv6-T兩種體量的模型來測試使用或不使用本文提出的各方法對模型性能的影響,實(shí)驗(yàn)設(shè)置與3.3 節(jié)相同,在COCO 訓(xùn)練集上訓(xùn)練。結(jié)果如表3 所示,其中+表示在原模型基礎(chǔ)上只使用DYIoU Loss作為位置損失訓(xùn)練,++表示同時使用DYIoU Loss 和DePAN Neck 改進(jìn)模型進(jìn)行訓(xùn)練。如圖12為YOLOv6-N 訓(xùn)練過程位置損失、mAP 曲線圖。從表3 結(jié)果可以看出,在原有的模型基礎(chǔ)上逐步加入本文提出的方法可以明顯提升模型的精度,特別是使用DePAN Neck 融合特征之后效果更為顯著。為了排除數(shù)據(jù)集影響,本文又使用了VOC2012 數(shù)據(jù)集進(jìn)行訓(xùn)練與測試,結(jié)果如表4所示。其中*表示在原模型基礎(chǔ)上加入本文方法。從表4 可以看出,本文方法在VOC2012 數(shù)據(jù)集上仍有較大提升。
表3 消融實(shí)驗(yàn)對比結(jié)果Table 3 Comparative results of ablation experiments 單位:%
表4 VOC2012驗(yàn)證集上精度對比Table 4 Comparison of detection accuracy on VOC2012 validation dataset 單位:%
圖12 訓(xùn)練過程位置損失、mAP0.50:0.95、mAP0.50曲線Fig.12 Curves of position loss,mAP0.50:0.95and mAP0.50 during training process
3.5.2 動態(tài)位置損失函數(shù)有效性驗(yàn)證
為了進(jìn)一步驗(yàn)證本文提出的動態(tài)位置損失的有效性,本小節(jié)在VOC2012 數(shù)據(jù)集上設(shè)計了一系列消融實(shí)驗(yàn)對DYIoU Loss進(jìn)行深入分析。
對于式(19)中的角度損失動態(tài)權(quán)重γ和形狀損失動態(tài)權(quán)重v,分別使用和不使用各動態(tài)權(quán)重,觀察對檢測精度的影響,結(jié)果如表5 所示,其中×和√分別表示使用和不使用相應(yīng)的動態(tài)權(quán)重。從實(shí)驗(yàn)結(jié)果可以看出,當(dāng)同時使用動態(tài)權(quán)重γ和v時檢測精度最高,當(dāng)只使用動態(tài)權(quán)重γ不使用v時精度有所降低,但損失仍然是收斂的。然而當(dāng)不使用動態(tài)權(quán)重γ時,無論使用還是不使用動態(tài)權(quán)重v,損失均無法收斂,檢測精度極低。這也可以解釋SIoU中作者為何提出了角度損失卻將其融合進(jìn)了距離損失中,因?yàn)槿绻苯幼鳛楠?dú)立組成部分,角度損失反而會對模型造成干擾,導(dǎo)致?lián)p失無法收斂。因此在DYIoU Loss 中為角度損失分配動態(tài)權(quán)重是必要的。
表5 使用和不使用各動態(tài)權(quán)重檢測精度對比Table 5 Comparison of detection accuracy with and without each dynamic weight 單位:%
為了驗(yàn)證式(19)中不同的全局參數(shù)λ對模型精度的影響,本文選取4 個值0.25、0.50、0.75、1.00 進(jìn)行了實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果如表6 所示。當(dāng)λ等于0.50 時,檢測精度最高。
表6 使用不同λ參數(shù)的檢測精度對比Table 6 Comparison of detection accuracy with different parameters λ 單位:%
為了進(jìn)一步驗(yàn)證動態(tài)損失的有效性,本文還將其他主流的位置損失函數(shù)DIoU、CIoU、SIoU 應(yīng)用于YOLOv6-N 上對比觀察模型精度,實(shí)驗(yàn)結(jié)果如表7 所示。當(dāng)使用DYIoU Loss進(jìn)行訓(xùn)練時精度最高。其次為了驗(yàn)證方法的普適性,本文選取了目標(biāo)檢測使用最廣泛的模型YOLOv3 和單階段目標(biāo)檢測的另一類經(jīng)典模型SSD,以及雙階段檢測的代表Faster R-CNN做對比實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果如表8 所示。其中*表示使用DYIoU Loss 進(jìn)行訓(xùn)練。從表8 結(jié)果可以發(fā)現(xiàn),對于單階段目標(biāo)檢測算法,檢測效果會有所提升,尤其是對于原本使用GIoU Loss 作為位置損失的YOLOv3,而對于雙階段檢測算法Faster R-CNN,檢測精度也能比較接近。
表7 不同位置損失的檢測精度對比Table 7 Comparison of detection accuracy with different position losses 單位:%
表8 其他模型使用動態(tài)交并比損失檢測精度對比Table 8 Comparison of detection accuracy of other models with DYIoU Loss 單位:%
3.5.3 動態(tài)位置損失函數(shù)可視化分析
為了更直觀地體現(xiàn)動態(tài)位置損失函數(shù)對目標(biāo)檢測任務(wù)正確性的影響,本小節(jié)主要對損失函數(shù)進(jìn)行可視化分析,觀察邊界框收斂過程。
可視化不同位置損失函數(shù)的收斂過程如圖13 所示,其中紅色矩形表示真實(shí)邊界框,黑色矩形表示初始邊界框,藍(lán)色矩形表示優(yōu)化過程中的邊界框。結(jié)果表明與其他主流位置損失相比,本文提出的DYIoU Loss 對邊界框收斂速度更快,在迭代200 輪時邊界框基本收斂,而對于SIoU Loss,存在一個向坐標(biāo)軸靠攏的趨勢,對收斂速度造成一些影響,迭代260輪時基本收斂,對于GIoU Loss則是需要迭代380輪才能基本收斂。
圖13 不同位置損失函數(shù)收斂過程可視化Fig.13 Visualization of convergence process of different position loss functions
此外本文對目標(biāo)檢測實(shí)例進(jìn)行可視化分析,使用DYIoU Loss 和SIoU Loss 在VOC2012 數(shù)據(jù)集上進(jìn)行150輪的訓(xùn)練,觀察訓(xùn)練初期、中期、后期邊界框收斂情況,結(jié)果如圖14 所示。對于DYIoU Loss,在訓(xùn)練后期,形狀損失被給予較大的權(quán)重,因此邊界框形狀更加精確,相比之下SIoU Loss 在訓(xùn)練后期對于邊界框形狀的約束則不如本文方法。
圖14 目標(biāo)檢測實(shí)例邊界框收斂過程可視化Fig.14 Visualization of bounding box convergence process of object detection instance
為了解決多尺度預(yù)測時特征融合能力有限的問題,本文基于可變形卷積設(shè)計了新的Neck 來進(jìn)行特征融合,自適應(yīng)調(diào)整采樣點(diǎn)位置,增大感受野有效提升了特征融合能力。其針對目標(biāo)檢測算法中位置損失函數(shù)存在的局限性,本文提出了動態(tài)交并比損失函數(shù),能夠在訓(xùn)練的不同階段動態(tài)調(diào)整不同損失的貢獻(xiàn),更符合目標(biāo)檢測訓(xùn)練邏輯,有針對性地約束網(wǎng)絡(luò)。本文基于上述方法改進(jìn)了YOLOv6 模型,顯著提升了模型精度,并且可以即插即用,方便地應(yīng)用到其他目標(biāo)檢測模型的訓(xùn)練任務(wù)中去。
對于動態(tài)交并比損失函數(shù),本文通過分析目標(biāo)檢測任務(wù)整個流程的邊界框特點(diǎn),首先提出了動態(tài)損失這個想法,然而具體的動態(tài)權(quán)重即式(19)中的γ和v的設(shè)計仍是需要后續(xù)深入研究的問題。