基於DIou改進的YOLOv3目標檢測

計算機視覺研究院 發佈 2022-12-24T15:18:47.350495+00:00

文中指出DIoU要比GIou更加符合目標框回歸的機制,將目標與anchor之間的距離,重疊率以及尺度都考慮進去,使得目標框回歸變得更加穩定,不會像IoU和GIoU一樣出現訓練過程中發散等問題,並且方法能夠簡單地遷移到現有的算法中帶來性能的提升,實驗在YOLOv3上提升了5.91mAP。

計算機視覺研究院專欄

作者:Edison_G

背景&引言

文中指出DIoU要比GIou更加符合目標框回歸的機制,將目標與anchor之間的距離,重疊率以及尺度都考慮進去,使得目標框回歸變得更加穩定,不會像IoU和GIoU一樣出現訓練過程中發散等問題,並且方法能夠簡單地遷移到現有的算法中帶來性能的提升,實驗在YOLOv3上提升了5.91mAP。

其中B={x,y,w,h} 是預測框, 是 ground-truth。IoU是目標檢測裡面很重要的一個指標,通過預測的框和GT間的交集與並集的比例進行計算,經常用於評價bbox的優劣 。但一般對bbox的精調都採用L2範數,而一些研究表明這不是最優化IoU的方法,因此出現了IoU loss。

IoU Loss

IoU loss顧名思義就是直接通過IoU計算梯度進行回歸,論文提到IoU loss的無法避免的缺點:當兩個box無交集時,IoU=0,很近的無交集框和很遠的無交集框的輸出一樣,這樣就失去了梯度方向,無法優化。IoU loss的實現形式有很多種,除公式2外,還有UnitBox的交叉熵形式和IoUNet的Smooth-L1形式。

這裡論文主要討論的類似YOLO的檢測網絡,按照GT是否在cell判斷當前bbox是否需要回歸,所以可能存在無交集的情況。而一般的two stage網絡,在bbox regress的時候都會卡, 不會對無交集的框進行回歸。

GIoU Loss

GIou loss在IoU loss的基礎上增加一個懲罰項, 為包圍預測框 和 的最小區域大小,當bbox的距離越大時,懲罰項將越大。儘管GIoU解決了IoU的梯度問題,但他仍然存在幾個限制:

上圖可以很好的來說明GIoU不穩定以及收斂很慢的原因。上圖中第一行三張圖展示的是GIoU的回歸過程,其中綠色框為目標框,黑色框為anchor,藍色框為不同次數的疊代後,anchor的偏移結果。第二行三張圖展示的是DIoU的回歸過程,其中綠色框為目標框,黑色框為anchor,紅色框為不同次數的疊代後,anchor的偏移結果。從圖中我們可以看到,GIoU在回歸的過程中,從損失函數的形式我們發現,當IoU為0時,GIoU會先儘可能讓anchor能夠和目標框產生重疊,之後GIoU會漸漸退化成IoU回歸策略,因此整個過程會非常緩慢而且存在發散的風險。而DIoU考慮到anchor和目標之間的中心點距離,可以更快更有效更穩定的進行回歸。

如上圖中的包含情況,GIoU會退化成IoU(三個位置預測框和gt框所包圍的最小面積相同,懲罰項c保持一致,梯度發散)。由於很大程度依賴IoU項,GIoU需要更多的疊代次數來收斂,特別是水平和垂直的bbox(後面會分析)。一般地,GIoU loss不能很好地收斂SOTA算法,反而造成不好的結果。

綜合上面的分析,論文提出Distance-IoU(DIoU) loss,簡單地在IoU loss基礎上添加一個懲罰項,該懲罰項用於最小化兩個bbox的中心點距離。如圖1所示,DIoU收斂速度和效果都很好,而且DIoU能夠用於NMS的計算中,不僅考慮了重疊區域,還考慮了中心點距離。另外,論文考慮bbox的三要素,重疊區域,中心點距離和長寬比,進一步提出了Complete IoU(CIoU) loss,收斂更快,效果更好。

知識回顧

IoU and GIoU Losses

為了全面地分析IoU loss和GIoU的性能,論文進行了模擬實驗,模擬不同的距離、尺寸和長寬比的bbox的回歸情況,如下圖所示:

  • 綠色框代表仿真實驗需要回歸的七個不同尺度的目標框,七個目標框的中心點坐標都是(10 * 10);

  • 藍色的點代表了所有anchor的中心點,中心點的分布如上圖所示,各個方向都有,各種距離都有,當然每個anchor的一個中心點都包含有七個不同面積的anchor框。而且每個面積的anchor框又有七種不同的比例尺寸。因此一共有5000個藍色點,對應5000*7*7個anchor框,並且每個anchor框都需要回歸到七個gt目標框上,因此一共有5000*7*7*7個回歸案例。

最終的實驗結果如下:圖中展示的訓練同樣的步數後(200步),IoU,GIoU以及本文提出的DIoU、CIoU作為loss的情況下,每個anchor的誤差分布。

  • IoU:從IoU誤差的曲線我們可以發現,anchor越靠近邊緣,誤差越大,那些與目標框沒有重疊的anchor基本無法回歸;

  • GIoU:從GIoU誤差的曲線我們可以發現,對於一些沒有重疊的anchor,GIoU的表現要比IoU更好。但是由於GIoU仍然嚴重的依賴IoU,因此在兩個垂直方向,誤差很大,基本很難收斂,這就是GIoU不穩定的原因;

  • DIoU:從DIoU誤差的曲線我們可以發現,對於不同距離,方向,面積和比例的anchor,DIoU都能做到較好的回歸。

具體偽算法步驟如下:

對於預測框 ,當前疊代(current iteration epochs = t)回合, 可以通過下式獲得:

給定一個loss函數 ,可以通過梯度下降來模擬bbox優化的過程。對於預測的bbox , 為階段的結果,'為 對 的梯度,使用 來加速收斂。bbox的優化評價使用 -norm,共訓練200輪,error曲線如下圖所示:

論文將5000個中心點上的bbox在最後階段的total error進行了可視化。IoU loss只對與target box有交集的bbox有效,因為無交集的bbox的梯度為0。而GIoU由於增加了懲罰函數,中間大部分區域錯誤率明顯減少,但是垂直和水平的區域依然保持著高的error,這是由於GIoU的懲罰項經常很小甚至為0,導致訓練需要更多的疊代來收斂。

計算機視覺研究院學習群等你加入!

計算機視覺研究院主要涉及深度學習領域,主要致力於人臉檢測、人臉識別,多目標檢測、目標跟蹤、圖像分割等研究方向。研究院接下來會不斷分享最新的論文算法新框架,我們這次改革不同點就是,我們要著重」研究「。之後我們會針對相應領域分享實踐過程,讓大家真正體會擺脫理論的真實場景,培養愛動手編程愛動腦思考的習慣!

計算機視覺研究院

公眾號ID|ComputerVisionGzq

關鍵字: