CDIoU解读
簡介
這篇文章針對(duì)之前基于IoU的邊框評(píng)估和回歸機(jī)制,在前人工作的基礎(chǔ)上設(shè)計(jì)了Control Distance IoU(CDIoU)和Control Distance IoU loss(CDIoU loss),在幾乎不增加計(jì)算量的前提下有效提升了模型性能,對(duì)常見的多個(gè)SOTA模型都有不錯(cuò)的漲點(diǎn)效果(如Faster R-CNN、YOLOv4、RetinaNet和ATSS)。
-
論文標(biāo)題
Control Distance IoU and Control Distance IoU Loss Function for Better Bounding Box Regression
-
論文地址
http://arxiv.org/abs/2103.11696
-
論文源碼
https://github.com/Alan-D-Chen/CDIoU-CDIoUloss
介紹
近年來,針對(duì)設(shè)計(jì)精度更高速度更快的目標(biāo)檢測(cè)算法出現(xiàn)了大量的工作。新的數(shù)據(jù)增強(qiáng)、更深層的神經(jīng)網(wǎng)絡(luò)、更復(fù)雜的FPN結(jié)構(gòu)乃至更多的訓(xùn)練迭代次數(shù),這些策略不斷刷新檢測(cè)的SOTA表現(xiàn)。不可否認(rèn),這些方法確實(shí)獲得了顯著的成功,然而它們也伴隨著大量的參數(shù)和計(jì)算消耗,這是有損算法的高效性的。這篇論文的作者則將關(guān)注的重心放在region proposals的評(píng)估系統(tǒng)和反饋機(jī)制上(說的通俗一點(diǎn)就是IoU模塊和損失函數(shù),它們組合在一起稱為評(píng)估反饋模塊)。
評(píng)估反饋模塊有三個(gè)主要部件。1. 根據(jù)ground truth評(píng)估proposal的質(zhì)量;2. 對(duì)同一個(gè)ground truth對(duì)應(yīng)的一批proposal排序;3. 將proposal和ground truth之間的差距輸入神經(jīng)網(wǎng)絡(luò)以便于下一個(gè)評(píng)估模型的修正。 既然這個(gè)評(píng)估反饋模塊如此重要,那么它應(yīng)當(dāng)是高效且參數(shù)較少的。一個(gè)優(yōu)秀的評(píng)估反饋模塊應(yīng)當(dāng)滿足下面三個(gè)條件。
此前,很多研究都比較關(guān)注于反饋機(jī)制的設(shè)計(jì)(即設(shè)計(jì)更好的損失函數(shù)),卻忽略了評(píng)估系統(tǒng)的優(yōu)化。因此這篇論文,作者提出了CDIoU和CDIoU loss,它們同等重要。CDIoU具有良好的連續(xù)性和可導(dǎo)性,通過統(tǒng)一測(cè)量RP(Region Proposal)和GT(Ground Truth)之間的距離,簡化了計(jì)算,優(yōu)化了DIoU和CIoU對(duì)質(zhì)心距離和長寬比的計(jì)算,并快速完成了邊框質(zhì)量評(píng)估。CDIoU損失函數(shù)可以與CDIoU計(jì)算相關(guān)聯(lián),使反饋機(jī)制能夠更準(zhǔn)確地表征RP與GT之間的差異,從而使深度學(xué)習(xí)網(wǎng)絡(luò)的目標(biāo)函數(shù)更快收斂,提高整體效率。與傳統(tǒng)的IoU模塊和損失函數(shù)相比,CDIoU和CDIoU loss函數(shù)具有很強(qiáng)的適應(yīng)性,在主流數(shù)據(jù)集上,CDIoU和CDIoU loss在幾種不同的模型上都有顯著的改進(jìn)。
傳統(tǒng)IoU和損失函數(shù)
在目標(biāo)檢測(cè)中,IoU的計(jì)算通常用來評(píng)估RP和GT之間的相似性,IoU計(jì)算值的高低通常也是正負(fù)樣本挑選的依據(jù)。在評(píng)估反饋模塊中,最具代表性的方法是IoU、GIoU、DIoU loss和CIoU loss,它們對(duì)目標(biāo)檢測(cè)的發(fā)展進(jìn)程起到了巨大的推動(dòng)作用,但是仍留有許多的優(yōu)化空間。
Traditional IoUs
IoU是一個(gè)常見的評(píng)估方法,如下圖所示,四種情況下RP和GT之間的相對(duì)位置明顯不同,我們?nèi)祟惪梢院芮逦乜闯鰞?yōu)劣,但是它們之間的IoU值是一樣的。
基于原始的IoU,產(chǎn)生了很多從各個(gè)方面其針對(duì)其的優(yōu)化,豐富了評(píng)估的維度。IoU只考慮了重疊區(qū)域,但是GIoU同時(shí)考慮了重疊區(qū)域和非重疊區(qū)域,引發(fā)了評(píng)估模塊的進(jìn)一步思考。雖然很遺憾,GIoU并沒有考慮RP和GT之間的“差異評(píng)估”,這個(gè)差異評(píng)估包括中心點(diǎn)之間的距離(centroid)和長寬比(aspect ratio)。DIoU考慮了中心距離但是忽略了長寬比,如下面兩圖所示,DIoU并不能區(qū)分高瘦的proposal和矮胖的proposal之間的不同,并且給出了同樣的計(jì)算結(jié)果,但是顯然,它們是存在明顯的好壞之分的。
Smooth L1 Loss and IoU Loss
Faster R-CNN提出了平滑損失初步解決了邊框損失的表征問題。假定xxx為RP和GT之間的數(shù)值差,那么L1L_1L1?和L2L_2L2?損失的定義如下。
L1=∣x∣dL2(x)x=2xL2=x2\begin{array}{c} \mathcal{L}_{1}=|x| \frac{d \mathcal{L}_{2}(x)}{x}=2 x \\ \\ \mathcal{L}_{2}=x^{2} \end{array} L1?=∣x∣xdL2?(x)?=2xL2?=x2?
它們的導(dǎo)數(shù)分別如下,從中可以發(fā)現(xiàn),L1L_1L1?損失的導(dǎo)數(shù)是常數(shù),在訓(xùn)練的后期,當(dāng)xxx非常小的時(shí)候,若學(xué)習(xí)率也是常數(shù),那么損失函數(shù)將在某個(gè)穩(wěn)定值附近波動(dòng)導(dǎo)致難以收斂到更高的精度。而L2L_2L2?損失的導(dǎo)數(shù)和輸入xxx是正相關(guān)的,當(dāng)訓(xùn)練初期xxx非常大的時(shí)候它的導(dǎo)數(shù)也很大使得訓(xùn)練非常不穩(wěn)定。
dL1(x)x={1,if?x≥0?1,otherswise?dL2(x)x=2x\begin{array}{c} \frac{d \mathcal{L}_{1}(x)}{x}=\left\{\begin{array}{ll} 1 & , \text { if } x \geq 0 \\ -1 & , \text { otherswise } \end{array}\right. \\ \\ \frac{d \mathcal{L}_{2}(x)}{x}=2 x \end{array} xdL1?(x)?={1?1?,?if?x≥0,?otherswise??xdL2?(x)?=2x?
smoothL1smooth L_1smoothL1?則完美的解決了L1L_1L1?和L2L_2L2?的的缺陷,它的計(jì)算式和導(dǎo)數(shù)式如下。
smooth?L1(x)={0.5x2,if?∣x∣<1∣x∣?0.5,otherswise?dsmoothL1(x)x={x,if?∣x∣<1±1,otherswise?\begin{array}{ll} \operatorname{smooth}_{\mathcal{L}_{1}}(x)=\left\{\begin{array}{ll} 0.5 x^{2} & , \text { if }|x|<1 \\ |x|-0.5 & , \text { otherswise } \end{array}\right. \\ \\ \frac{d s m o o t h_{\mathcal{L}_{1}(x)}}{x}=\left\{\begin{array}{ll} x & , \text { if }|x|<1 \\ \pm 1 & , \text { otherswise } \end{array}\right. \end{array} smoothL1??(x)={0.5x2∣x∣?0.5?,?if?∣x∣<1,?otherswise??xdsmoothL1?(x)??={x±1?,?if?∣x∣<1,?otherswise???
然而,實(shí)際的目標(biāo)檢測(cè)任務(wù)中,邊框回歸任務(wù)的損失表示如下,這里的v=(vx,vy,vw,vh)v=\left(v_{x}, v_{y}, v_{w}, v_{h}\right)v=(vx?,vy?,vw?,vh?)表示GT框的四個(gè)坐標(biāo)而tu=(txu,tyu,twu,thu)t^{u}=\left(t_{x}^{u}, t_{y}^{u}, t_{w}^{u}, t_{h}^{u}\right)tu=(txu?,tyu?,twu?,thu?)表示預(yù)測(cè)框的坐標(biāo),下面的計(jì)算式表明總的邊框損失其實(shí)是四個(gè)坐標(biāo)損失分別計(jì)算然后加和得到的,這就會(huì)帶來一些問題。
Lloc(tu,v)=∑i∈{x,y,w,h}smooth?L1(tiu?vi)\mathcal{L}_{l o c}\left(t^{u}, v\right)=\sum_{i \in\{x, y, w, h\}} \operatorname{smooth}_{\mathcal{L}_{1}}\left(t_{i}^{u}-v_{i}\right) Lloc?(tu,v)=i∈{x,y,w,h}∑?smoothL1??(tiu??vi?)
問題主要有兩點(diǎn)。
LIoU=?ln?(IoU)LIoU=1?IoU\begin{array}{l} \mathcal{L}_{I o U}=-\ln (I o U) \\ \\ \mathcal{L}_{I o U}=1-I o U \end{array} LIoU?=?ln(IoU)LIoU?=1?IoU?
GIoU and GIoU Loss
GIoU在不增加計(jì)算時(shí)間的前提下,初步優(yōu)化了重疊區(qū)域IoU的計(jì)算并減小了計(jì)算誤差,但是GIoU依然沒有考慮上文所說的差異評(píng)估。GIoU和GIoU Loss的計(jì)算式如下所示。
GIoU=IoU?∣C\(A∪B)∣∣C∣,LGIoU=1?GIoU\begin{array}{c} G I o U=I o U-\frac{|C \backslash(A \cup B)|}{|C|}, \\ \\ \mathcal{L}_{G I o U}=1-G I o U \end{array} GIoU=IoU?∣C∣∣C\(A∪B)∣?,LGIoU?=1?GIoU?
上式中的CCC表示能夠包圍兩個(gè)框的最小閉包區(qū)域的面積,也就是下圖中的灰色虛線框的區(qū)域。
實(shí)踐證明,其實(shí)GIoU loss仍然有著收斂緩慢、回歸不準(zhǔn)確的問題,研究發(fā)現(xiàn),這是因?yàn)镚IoU首先試圖去擴(kuò)大RP框使得其和GT框接近,然后使用IoU loss去最大化覆蓋區(qū)域。當(dāng)兩個(gè)邊框彼此包含的時(shí)候,GIoU loss就退化為了IoU loss,此時(shí)邊框?qū)ζ鋾?huì)更加困難,從而收斂緩慢。
DIoU loss and CIoU loss
DIoU(Distance IoU)損失和CIoU(Complete IoU)損失極大地豐富了IoU計(jì)算結(jié)果的內(nèi)涵,二者分別考慮了差異評(píng)估中的中心距離和長寬比。
首先來看DIoU損失,它的計(jì)算公式如下所示,其中bbb和bgtb^{gt}bgt分別表示預(yù)測(cè)框和真實(shí)框的中心點(diǎn),ρ2()\rho^2()ρ2()表示兩點(diǎn)之間的歐氏距離,ccc則表示能夠同時(shí)包含預(yù)測(cè)框和真實(shí)框之間的最小閉包區(qū)域的對(duì)角線距離。
LDIoU=1?IoU+ρ2(b,bgt)c2\mathcal{L}_{D I o U}=1-I o U+\frac{\rho^{2}\left(\mathbf{b}, \mathbf{b}^{g t}\right)}{c^{2}} LDIoU?=1?IoU+c2ρ2(b,bgt)?
然而,按照這個(gè)計(jì)算方式,DIoU loss并不能區(qū)分多個(gè)中心點(diǎn)重合的proposal誰與GT更加相似。當(dāng)兩個(gè)框完全重合時(shí),存在LIoU=LGIoU=LDIoU=0\mathcal{L}_{I o U}=\mathcal{L}_{G I o U}=\mathcal{L}_{D I o U}=0LIoU?=LGIoU?=LDIoU?=0,當(dāng)兩個(gè)框不相交時(shí),它又不能準(zhǔn)確區(qū)分proposal,因?yàn)榇藭r(shí)存在LGIoU=LDIoU→2\mathcal{L}_{G I o U}=\mathcal{L}_{D I o U} \rightarrow 2LGIoU?=LDIoU?→2。
如下圖所示,由于DIoU的懲罰項(xiàng)是中心點(diǎn)距離,所以只要proposal的中心在圓O的弧上,那么懲罰項(xiàng)是一模一樣的,這就導(dǎo)致DIoU喪失了評(píng)估系統(tǒng)的準(zhǔn)確性。
因?yàn)樯厦娴膯栴}存在,在DIoU loss的基礎(chǔ)上繼續(xù)添加長寬比,從而形成了下式的CIoU損失,相比于上面的CIoU損失它多了一項(xiàng),即αv\alpha vαv,下面詳細(xì)解釋一下這一項(xiàng)。
LCIoU=1?IoU+ρ2(b,bgt)c2+αv\mathcal{L}_{C I o U}=1-I o U+\frac{\rho^{2}\left(\mathbf{b}, \mathbf{b}^{g t}\right)}{c^{2}}+\alpha v LCIoU?=1?IoU+c2ρ2(b,bgt)?+αv
首先,α\alphaα和vvv的計(jì)算如下,前者為權(quán)重系數(shù)(在非重疊情況下,對(duì)重疊面積因子給予較高的優(yōu)先級(jí)),而vvv度量長寬比的相似性。
α=v(1?IoU)+vv=4π2(arctan?wgthgt?arctan?wh)2\begin{array}{c} \alpha=\frac{v}{(1-I o U)+v} \\ \\ v=\frac{4}{\pi^{2}}\left(\arctan \frac{w^{g t}}{h^{g t}}-\arctan \frac{w}{h}\right)^{2} \end{array} α=(1?IoU)+vv?v=π24?(arctanhgtwgt??arctanhw?)2?
由于計(jì)算CIoU損失涉及到反三角函數(shù),通過對(duì)比實(shí)驗(yàn)可知,計(jì)算CIoU損失的過程比較耗時(shí),最終會(huì)拖低整體訓(xùn)練時(shí)間,而帶來的精度收益確不是很高,有點(diǎn)得不償失,因此使用不是特別廣泛。
CDIoU and CDIoU Loss
基于之前IoU的種種問題,作者提出了CDIoU和CDIoU Loss,在不增加計(jì)算開銷的前提下運(yùn)行效率和精度顯著提升。CDIoU損失收斂更快并且大大減少了計(jì)算復(fù)雜度。
CDIoU是RP和GT的一個(gè)新的評(píng)估方式,它不直接計(jì)算中心點(diǎn)距離或者形狀相似性,如下圖所示,其中的diou計(jì)算式如下,其中MBR為包圍兩個(gè)框的最小矩形區(qū)域,這個(gè)diou的計(jì)算和DIoU計(jì)算是類似的。
diou?=∥RP?GT∥24MBR′sdiagonal?=AE+BF+CG+DH4WY\begin{aligned} \text { diou } &=\frac{\|R P-G T\|_{2}}{4 \mathrm{MBR}^{\prime} s \text { diagonal }} \\ &=\frac{A E+B F+C G+D H}{4 W Y} \end{aligned} ?diou??=4MBR′s?diagonal?∥RP?GT∥2??=4WYAE+BF+CG+DH??
然后,就可以定義CDIoU了,如下式所示,雖然CDIoU沒有顯式考慮中心點(diǎn)距離和長寬比,但是最終的計(jì)算結(jié)果反映了RP與GT的差異程度,CDIoU值越高,差異程度越低;CDIoU的值越高,相似性越高。
CDIoU=IoU+λ(1?diou?)C D I o U=I o U+\lambda(1-\text { diou }) CDIoU=IoU+λ(1??diou?)
隨后,可以定義CDIoU loss,如下式,通過觀察這個(gè)公式,可以直觀地感覺到,在反向傳播之后,深度學(xué)習(xí)模型傾向于將RP的四個(gè)頂點(diǎn)拉向GT的四個(gè)頂點(diǎn),直到它們重疊為止,具體算法如下圖所示。
LCDIoU=LIoUs+diou?\mathcal{L}_{C D I o U}=\mathcal{L}_{I o U_{s}}+\text { diou } LCDIoU?=LIoUs??+?diou?
CDIoU和CDIoU loss具有如下特性:第一, 0≤0 \leq0≤ diou <1<1<1,LIoUs\mathcal{L}_{I o U_{s}}LIoUs??是LCDIoU\mathcal{L}_{C D I o U}LCDIoU?的下界。第二, diou拓展了LCDIoU\mathcal{L}_{C D I o U}LCDIoU?的范圍,當(dāng)LIoUs=LIoU\mathcal{L}_{I o U_{s}}=\mathcal{L}_{I o U}LIoUs??=LIoU? 有0≤LCDIoU<20 \leq \mathcal{L}_{C D I o U}<20≤LCDIoU?<2,當(dāng)LIoUs=LGIoU\mathcal{L}_{I o U_{s}}=\mathcal{L}_{G I o U}LIoUs??=LGIoU?有?1≤LCDIoU<2-1 \leq \mathcal{L}_{C D I o U}<2?1≤LCDIoU?<2。
實(shí)驗(yàn)
作者為了驗(yàn)證CDIoU和CDIoU的有效性很泛化性,在多個(gè)方法上盡量不使用trick的情況下進(jìn)行了對(duì)比實(shí)驗(yàn),實(shí)驗(yàn)配置可以參照原文,這里不多贅述,從下表的消融實(shí)驗(yàn)不難發(fā)現(xiàn),CDIoU在幾乎對(duì)速度沒有影響的前提下,對(duì)多個(gè)模型都有不錯(cuò)的AP提升。
當(dāng)然,致敬前輩,既然是改進(jìn),總要都比一比,下表就是和其他IoU loss的比較,速度精度都有改善。
后面作者還有一些實(shí)驗(yàn)分析以及一些漲點(diǎn)trick的分享,我這里就略過了,感興趣可以查看原論文。
總結(jié)
雖然作者沒有把CDIoU的由來說得特別清楚,但是從結(jié)果上看,本文設(shè)計(jì)的CDIoU和CDIoU loss幾乎對(duì)當(dāng)前主流的檢測(cè)器無痛漲點(diǎn),是很值得關(guān)注的工作。本文也只是我本人從自身出發(fā)對(duì)這篇文章進(jìn)行的解讀,想要更詳細(xì)理解的強(qiáng)烈推薦閱讀原論文。最后,如果我的文章對(duì)你有所幫助,歡迎一鍵三連,你的支持是我不懈創(chuàng)作的動(dòng)力。
總結(jié)
- 上一篇: GFocal解读
- 下一篇: TransCenter解读