(資料圖片)
作者|Fengwen、BBuf
邊界框回歸是目標(biāo)檢測(cè)的關(guān)鍵步驟,在現(xiàn)有方法中,雖然被廣泛用于邊界框回歸,但它不是針對(duì)評(píng)估指標(biāo)量身定制的,即 Intersection over Union (IoU)。
最近,已經(jīng)提出了 IoU 損失和 generalized IoU (GIoU) Loss 作為評(píng)估 IoU 的指標(biāo) ,但仍然存在收斂速度慢和回歸不準(zhǔn)確的問題。在本文中,我們通過結(jié)合預(yù)測(cè)框和目標(biāo)框之間的歸一化距離來提出距離 -IoU (DIoU) Loss,它在訓(xùn)練中的收斂速度比 IoU 和 GIoU Loss 快得多。
此外,本文總結(jié)了邊界框回歸中的三個(gè)幾何因素,即重疊面積(overlap area)、中心點(diǎn)距離(central point distance)和高寬比(aspect ratio),在此基礎(chǔ)上提出了完全I(xiàn)oU(CIoU)損失,從而促進(jìn)了更快的收斂和更優(yōu)的性能。
通過將 DIoU 和 CIoU?損失結(jié)合到最先進(jìn)的目標(biāo)檢測(cè)算法中,例如 YOLO v3、SSD 和 Faster RCNN,我們不僅在 IoU 指標(biāo)方面而且在 GIoU 指標(biāo)方面都獲得了顯著的性能提升。此外,DIoU 可以很容易地用于非最大抑制(NMS)作為標(biāo)準(zhǔn),進(jìn)一步促進(jìn)性能提升。(注釋:這里IoU指標(biāo)方面和GIoU指標(biāo)方面指的是在目標(biāo)檢測(cè)精度測(cè)量(mAP值 ),IoU損失計(jì)算穩(wěn)定性等一些方面。)
目標(biāo)檢測(cè)是計(jì)算機(jī)視覺任務(wù)中的關(guān)鍵問題之一,幾十年來一直受到了廣泛的研究關(guān)注(Redmon et al. 2016; Redmon and Farhadi 2018; Ren et al. 2015; He et al. 2017; Yang et al. 2018; Wang et al. 2019; 2018). 通常,現(xiàn)有的目標(biāo)檢測(cè)方法可以分為:
單階段-檢測(cè),如YOLO系列 (Redmon et al. 2016; Red- mon and Farhadi 2017; 2018) 和SSD (Liu et al. 2016; Fu et al. 2017),
兩階段檢測(cè),如 R-CNN系列檢測(cè) (Girshick et al. 2014; Girshick 2015; Ren et al. 2015; He et al. 2017),
甚至是多階段的檢測(cè), 像Cascade R-CNN (Cai and Vasconcelos 2018). 盡管存在這些不 同的檢測(cè)框架,但邊界框回歸預(yù)測(cè)一個(gè)矩形框來定位目標(biāo)對(duì)象仍然是其中關(guān)鍵步驟。
代碼倉(cāng)庫(kù)地址:
https://github.com/Oneflow-Inc/one-yolov5
本文主要是結(jié)合論文Distance-IoU Loss: Faster and Better Learning for Bounding Box Regression(https://arxiv.org/pdf/1911.08287.pdf) 對(duì) IoU 的解析學(xué)習(xí)。
Intersection over Union (IoU)
在指標(biāo)評(píng)估概述的小節(jié)有介紹過IoU,已經(jīng)對(duì)IoU有了初步認(rèn)識(shí)(其實(shí)在yolov5項(xiàng)目中并不是簡(jiǎn)單的使用,而是用的后面介紹的CIoU )
計(jì)算公式:
是真實(shí)回歸框(gt:ground-truth),
是預(yù)測(cè)回歸框。
計(jì)算公式:
有明顯的缺陷 IoU loss只在邊界框有重疊時(shí)才能工作, 對(duì)于不重疊的情況不會(huì)提供任何移動(dòng)梯度 (移動(dòng)代表預(yù)測(cè)框朝著目標(biāo)框重疊的方向移動(dòng)) 。移動(dòng)梯度表示無法衡量完全不相交的兩個(gè)框所產(chǎn)生的的損失(iou固定為0),和兩個(gè)不同形狀的預(yù)測(cè)框可能產(chǎn)生相同的loss(相同的iou)分別如下圖的左邊和右邊所示。
GIoU的設(shè)計(jì)初衷就是想解決IoU Loss存在的問題(預(yù)測(cè)框與真實(shí)框不相交時(shí)iou恒定為0),設(shè)計(jì)了一套Generalized Intersection over Union Loss。在IoU的基礎(chǔ)上,GIoU還需要找到預(yù)測(cè)框和真實(shí)框的最小外接矩形,然后求出最小外接矩形減去兩個(gè)預(yù)測(cè)框union的面積,具體算法流程如下:
計(jì)算公式 :
其中C是覆蓋和的最小方框,由于引入了C,在不重疊的情況下,預(yù)測(cè)框也會(huì)向目標(biāo)框移動(dòng)。
GIoU Loss解決了IoU Loss在不相交情況的問題,在所有性能指標(biāo)中都可以作為IoU的適當(dāng)替代品,在目標(biāo)檢測(cè)任務(wù)中能夠得到更高的準(zhǔn)確率。
缺點(diǎn):雖然GIoU可以緩解重疊情況下的梯度消失問題,但它仍有一些局限性。即無法衡量有包含關(guān)系時(shí)的框回歸損失,如下圖,三個(gè)回歸框具有相同的GIoU Loss,但是顯然第三個(gè)框的回歸效果更好。
首先,在本文上部分我們分析了關(guān)于原始的IoU損失和GIoU 損失的局限性。下面將通過模擬實(shí)驗(yàn)結(jié)果對(duì)邊界框回歸的過程進(jìn)行進(jìn)一步解析。
(補(bǔ)充說明: 為什么要進(jìn)行模型實(shí)驗(yàn)?因?yàn)閮H僅從檢測(cè)結(jié)果來分析邊界框回歸的過程很難,因?yàn)樵诓皇芸刂频幕鶞?zhǔn)中的回歸情況往往不全面比如:不同的距離(distances),不同的尺度(scales)和不同的長(zhǎng)寬比(aspect ratios)。相反,進(jìn)行模擬實(shí)驗(yàn),在實(shí)驗(yàn)中綜合考慮回歸情況,然后就可以很容易地分析給定損失函數(shù)的問題。)
在模擬實(shí)驗(yàn)中, 我們?cè)噲D通過距離(distances), 尺度 (scales)和長(zhǎng)寬比(aspect ratios)來覆蓋邊界框之間的大部分關(guān)系,如圖3(a).所示。特別是, 我們選擇7個(gè)單位框 (即每個(gè)框的面積為 1) ,具有不同的長(zhǎng)寬比 (即1:4、1:3、1:2、1:1、2:1、3:1?和?4:1) ?作為目標(biāo)框。在不失一般性的情況下,7個(gè)目標(biāo)框的中心點(diǎn)被固定在(10,10)。錨框均勻地分散在5000個(gè)點(diǎn)上。
1.?距離: 在以半徑為 3 的(10,10)為中心的圓形區(qū)域內(nèi),均勻選擇5000個(gè)點(diǎn), 放置7個(gè)尺度、7個(gè)長(zhǎng)寬比的錨框。在這些情況下,重疊和不重疊的方框都被包括。
2.?尺度:對(duì)于每個(gè)點(diǎn), 錨框的面積分別設(shè)置為0.5、0.67、0.75、1、1.33、1.5 和 2。
3.?長(zhǎng)寬比: 對(duì)于給定的點(diǎn)和尺度,采用 7 個(gè)長(zhǎng)寬比,即與目標(biāo)框遵循相同的設(shè)置 (即?1:4、1:3、1:2、1:1、2:1、3:1 和 4:1)。所有???錨箱都對(duì)應(yīng)在每個(gè)目標(biāo)框。綜上所述,總共有??個(gè)回歸案例。
圖3: 仿真實(shí)驗(yàn): (a) 通過考慮不同的距離、尺度和長(zhǎng)寬比, 采用了171.5萬個(gè)回歸案例。(b)回歸誤差和(即:?) 迭代次數(shù)為t時(shí)不同損失函數(shù)的曲線。
然后通過給定損失函數(shù)我們可以用梯度下降算法來模擬每種情況下的邊界框回歸過程,對(duì)于預(yù)測(cè)框,當(dāng)前的預(yù)測(cè)可以通過:
其中是迭代時(shí)的預(yù)測(cè)框,表示損失的梯度。感覺可以理解為學(xué)習(xí)率。值得注意的是,在我們的實(shí)現(xiàn)中,梯度乘以去加速收斂。邊界框回歸的性能評(píng)估通過使用對(duì)于每個(gè)損失函數(shù), 仿真模擬實(shí)驗(yàn)當(dāng)達(dá)到迭代時(shí), 誤差曲線如圖所示。
在圖4中,我們可視化迭代T時(shí)對(duì)5000個(gè)分散點(diǎn)的最終回歸誤差。
從圖4(a)中很容易看出,IoU損失只適用于與目標(biāo)框重疊的情況。由于?B總是0,沒有重疊的錨框?qū)⒉粫?huì)移動(dòng)。通過添加一個(gè)懲罰項(xiàng)見公式(3),
GIoU 損失能夠更好地緩解非重疊案例的問題,如圖所示4(b),?但GIoU的損失顯著擴(kuò)大了盆地,即GIoU的工作面積。但是,在水平方向和垂直方向的情況下,仍然很可能有很大的誤差。這是因?yàn)镚IoU損失中的懲罰項(xiàng)是用來最小化|C?A∪B|,但是C?A∪B的面積通常很小或?yàn)?(當(dāng)兩個(gè)盒子有包含關(guān)系時(shí)),然后GIoU幾乎退化為IoU損失。只要以適當(dāng)?shù)貙W(xué)習(xí)速率運(yùn)行足夠的迭代GIoU 損失能收斂到很好的解決方案,但收斂速度卻是非常慢。從幾何上來說,從如圖1所示的回歸步驟來看,GIoU實(shí)際上增大了預(yù)測(cè)的框大小,用來和目標(biāo)框重疊,然后IoU項(xiàng)用于預(yù)測(cè)框與目標(biāo)框匹配,產(chǎn)生非常緩慢的收斂。
綜上所述,在非重疊情況下,IoU損失收斂是糟糕的解決方式,而GIoU損失收斂速度較慢,特別是對(duì)于水平和垂直方向的框。在目標(biāo)檢測(cè)流程中,IoU和GIoU的損失都不能保證回歸的準(zhǔn)確性。
通過前面的IoU和GIoU的分析我們很自然會(huì)問以下問題:
第一,是否可以直接最小化預(yù)測(cè)框和目標(biāo)框之間的歸一化距離,以實(shí)現(xiàn)更快的收斂?
第二,當(dāng)與目標(biāo)框有重疊甚至包含時(shí),如何使回歸更準(zhǔn)確、更快?
Distance-IoU 損失:更快更好的邊界框回歸損失,一般來說,IoU-based損失可以定義為:
其中是預(yù)測(cè)框?B?和目標(biāo)框的懲罰項(xiàng)。通過設(shè)計(jì)適當(dāng)?shù)膽土P項(xiàng), 在本節(jié)中, 我們提出了 DIoU 損失和 CIoU 損失來解答上述兩個(gè)問題。
為了回答第一個(gè)問題,我們提出將兩個(gè)邊界框的中心點(diǎn)之間的標(biāo)準(zhǔn)化距離最小化,懲罰項(xiàng)可以定義為:
其中和分別代表 B?和的中心點(diǎn)。為歐氏距離,C是覆蓋兩個(gè)盒框的最小封閉框的對(duì)角線長(zhǎng)度。DIoU損失函數(shù)可以定義為:
如圖5所示,DIoU損失的懲罰項(xiàng)直接使兩個(gè)中心點(diǎn)之間的距離最小化, 而GIoU損失的目的是減少的面積。
新提出的DIoU損失繼承IoU和GIoU損失的一些屬性:
DIoU損失對(duì)回歸問題的尺度仍然是不變的
與GIoU損失類似, DIoU損失可以在與目標(biāo)框不重疊時(shí)為邊界框提供移動(dòng)方向。
當(dāng)兩個(gè)邊界框完美匹配時(shí),當(dāng)兩個(gè)框都很遠(yuǎn)時(shí),??
DIoU損失比IoU損失和GIoU損失有幾個(gè)優(yōu)點(diǎn),可以通過仿真實(shí)驗(yàn)進(jìn)行評(píng)估。
如圖1和圖3所示,DIoU損失可以直接最小化兩個(gè)框的距離, 因此收斂速度比GIoU損失要快得多。
對(duì)于兩個(gè)框是包含關(guān)系的情況(圖2),或在水平和垂直方向的情況(圖6)下,DIoU損失可以回歸非常快,而GIoU損失幾乎退化為IoU損失,即?
接著我們回答了第二個(gè)問題,提出了邊界框回歸的良好損失應(yīng)該要考慮三個(gè)重要的幾何因素,即重疊面積、中心點(diǎn)距離和長(zhǎng)寬比。通過統(tǒng)一坐標(biāo)IoU損失考慮了重疊區(qū)域,而GIoU損失嚴(yán)重依賴于IoU損失。我們提出的DIoU損失旨在同時(shí)考慮邊界框的重疊面積和中心點(diǎn)距離。然而,邊界框的長(zhǎng)寬比的一致性也是一個(gè)重要的幾何因素。因此,基于DIoU損失,通過添加長(zhǎng)寬比的一致性來提出CIoU損失:
其中是一個(gè)正的權(quán)衡參數(shù),?衡量長(zhǎng)寬比的一致性。
則損失函數(shù)可以定義為:
通過重疊面積因子給予更高的優(yōu)先回歸,特別是對(duì)于非重疊情況。最終DIoU損失的優(yōu)化與CIoU損失的優(yōu)化相同, 除了的梯度應(yīng)該指定W和h。
主導(dǎo)器?通常是一個(gè)很小的值對(duì)于和的范圍在?[0,1],這很可能會(huì)產(chǎn)生梯度爆炸。因此在我們的實(shí)現(xiàn), 主導(dǎo)器被移除,將步長(zhǎng)替換為 1,梯度方向仍然與公式(12)一致。
NMS是大多數(shù)目標(biāo)檢測(cè)算法的最后一步,其中刪除了冗余的檢測(cè)框當(dāng)它與最高分框的重疊超過一個(gè)閾值。Soft-NMS (Bodla et al. 2017) 用連續(xù)函數(shù)w.r.t.懲罰相鄰框的檢測(cè)分?jǐn)?shù)IoU,產(chǎn)生比原始NMS產(chǎn)生更柔和大和更強(qiáng)大的抑制。
IoU-Net (Jiang et al. 2018) 提出了一個(gè)新的網(wǎng)絡(luò)分支來預(yù)測(cè)定位置信度來指導(dǎo)NMS。最近,自適應(yīng)NMS(Liu,Huang,和Wang 2019)和 Softer-NMS(He et al. 2019)被提出分別研究適當(dāng)?shù)拈撝挡呗院图訖?quán)平均策略。在本工作中,簡(jiǎn)單將DIoU作為原始NMS的標(biāo)準(zhǔn),在抑制冗余框時(shí),同時(shí)考慮邊界框的重疊面積和兩個(gè)中心點(diǎn)之間的距離。
Non-Maximum Suppression using DIoU
在原始的NMS中,IoU指標(biāo)用于抑制呂余的檢測(cè)框, 其中重疊區(qū)域是唯一的因素, 對(duì)于有遮擋的情況,往往會(huì)產(chǎn)生錯(cuò)誤的抑制。我們?cè)谶@項(xiàng)工作中建議DIoU是NMS的更好標(biāo)準(zhǔn),因?yàn)樵谝种茦?biāo)準(zhǔn)中不僅應(yīng)考慮重疊DIoU-NMS被正式定義為:
其中框Bi被去除通過同時(shí)到考慮IoU和兩個(gè)框中心點(diǎn)的距離。Si是分類得分和是NMS閾值。我們認(rèn)為兩個(gè)中心點(diǎn)較遠(yuǎn)的框可能會(huì)定位不同的物體,而不應(yīng)該被刪除。此外DIoU-NMS是非常靈活,僅僅是幾行的代碼就可以集成到任何目標(biāo)檢測(cè)管道中。
本文主要介紹用于邊界框回歸的DIoU損失和CIoU損失,以及用于抑制冗余檢測(cè)框的DIoU-NMS。通過直接最小化兩個(gè)中心點(diǎn)的歸一化的距離,DIoU損失可以比GIoU損失實(shí)現(xiàn)更快的收斂。此外CIoU損失考慮了三個(gè)幾何屬性(即重疊區(qū)域、中心點(diǎn)距離和長(zhǎng)寬比),促進(jìn)了更快的收斂和更優(yōu)的性能。
https://github.com/Zzh-tju/DIoU/blob/master/README.md#introduction
https://github.com/Zzh-tju/DIoU/blob/master/README.md#introduction
IoU: https://arxiv.org/pdf/1608.01471.pdf
GIoU: https://giou.stanford.edu/GIoU.pdf
DIoU: https://arxiv.org/pdf/1911.08287.pdf
其他人都在看
OneFlow v0.9.0正式發(fā)布
Sam Altman的成功學(xué)|升維指南
李白:你的模型權(quán)重很不錯(cuò),可惜被我沒收了
比快更快,開源Stable Diffusion刷新作圖速度
OneEmbedding:單卡訓(xùn)練TB級(jí)推薦模型不是夢(mèng)
GLM訓(xùn)練加速:性能最高提升3倍,顯存節(jié)省1/3
“零”代碼改動(dòng),靜態(tài)編譯讓太乙Stable Diffusion推理速度翻倍
關(guān)鍵詞: