天天看點

《PIoU Loss:Towards Accurate Oriented Object Detection in Complex Environments》論文筆記1. 概述2. 方法設計3. 實驗結果

參考代碼:piou

1. 概述

導讀:旋轉矩形框的引入可以更好貼合目标的輪廓,一般是在水準矩形框的基礎上添加一個旋轉變量,之後通過諸如smooth L1損失函數進行限制,但是這樣的限制方式并不能很好反應實際檢測結果與GT的重合關系(IoU),特别是在一些長寬比例比較大的時候。對此文章從像素點的角度進行統計,進而計算出預測框與GT的交疊面積,文章将其稱之為PIoU(pixels-IoU)。由于文章的PIoU是逐點進行計算的,是以其可以使用在水準框和旋轉矩形框的場景上,其對于旋轉框的定位具有較好的優化作用,特别是長款比例比較大的情況下。此外,文章還提供了一個資料集Retail-50k用以豐富旋轉目标檢測的場景下。

在之前的旋轉框檢測算法中使用smooth L1的損失函數進行預測分量的監督,卻不能很好反應實際的檢測性能,特别是在目标的長寬比例比較大的情況下。

《PIoU Loss:Towards Accurate Oriented Object Detection in Complex Environments》論文筆記1. 概述2. 方法設計3. 實驗結果

上圖的a圖展示的就是使用傳統的smooth L1損失函數,可以看到兩種不同長寬的框其損失值是一樣的,但是實際的檢測性能是不一樣的,因而在這樣的場景下使用這樣的損失函數是不合時宜的。對此文章直接從檢測性能的度量名額入手,定義了一個新的損失函數PIoU,從上圖的b圖可以看到,在相同的場景下其可以産生更加準确的性能評估結果,進而引導整個網絡生成性能更好的檢測結果。

文章的方法對于水準框也是具有适應性的:

《PIoU Loss:Towards Accurate Oriented Object Detection in Complex Environments》論文筆記1. 概述2. 方法設計3. 實驗結果

2. 方法設計

2.1 文章pipline

文章的整體結構是比較簡單的,相比之前的旋轉框檢測算法其就是在損失函數上進行了改進,其pipeline見下圖所示:

《PIoU Loss:Towards Accurate Oriented Object Detection in Complex Environments》論文筆記1. 概述2. 方法設計3. 實驗結果

2.2 PIoU Loss

《PIoU Loss:Towards Accurate Oriented Object Detection in Complex Environments》論文筆記1. 概述2. 方法設計3. 實驗結果

文章中對于旋轉框的損失計算直接使用的是IoU,那麼怎麼高效地去計算旋轉框之間的IoU這就是一個問題了,對此文章直接使用過“數像素點”的形式實作的。那麼要進行“數像素點”那麼就需要判斷結果中的點是否在GT内部,若是在GT内部就算作是交疊了。對此文章使用的是點投影的方式進行表達,定義GT框的中心點為 ( c x , c y ) (c_x,c_y) (cx​,cy​),那麼其在旋轉框w和h方向上(一般使用長邊作為w)的投影距離為 d i , j w d_{i,j}^w di,jw​和 d i , j h d_{i,j}^h di,jh​,那麼像素點 p i , j p_{i,j} pi,j​是否在GT框内部的判斷标準為:

δ ( p i , j ∣ b ) = { 1 , d i , j w ≤ w w , d i , j h ≤ h 2 0 , otherwise \delta(p_{i,j}|b) = \begin{cases} 1, & \text{$d_{i,j}^w\le\frac{w}{w},d_{i,j}^h\le\frac{h}{2}$} \\ 0, & \text{otherwise} \end{cases} δ(pi,j​∣b)={1,0,​di,jw​≤ww​,di,jh​≤2h​otherwise​

此外,要計算上述公式的中結果還需要得到幾個分量,可以參考圖3的a圖所示。這裡使用的距離都是歐式距離,定義像素點 p i , j p_{i,j} pi,j​到GT中心點 ( c x , c y ) (c_x,c_y) (cx​,cy​)的距離為:

d i , j = d ( i , j ) = ( c x − i ) 2 + ( c y − j ) 2 d_{i,j}=d(i,j)=\sqrt{(c_x-i)^2+(c_y-j)^2} di,j​=d(i,j)=(cx​−i)2+(cy​−j)2

那麼其在w和h方向上進行投影,其分量可以描述為:

d i , j w = ∣ d i , j   c o s β ∣ d_{i,j}^w=|d_{i,j}\ cos\beta| di,jw​=∣di,j​ cosβ∣

d i , j h = ∣ d i , j   s i n β ∣ d_{i,j}^h=|d_{i,j}\ sin\beta| di,jh​=∣di,j​ sinβ∣

其中, β \beta β的計算為:

β = { θ + a r c c o s c x − i d i , j , if  c y − j ≥ 0 θ − a r c c o s c x − i d i , j if  c y − j < 0 \beta = \begin{cases} \theta+arccos\frac{c_x-i}{d_{i,j}}, & \text{if $c_y-j\ge 0$} \\ \theta-arccos\frac{c_x-i}{d_{i,j}} & \text{if $c_y-j\lt 0$} \end{cases} β={θ+arccosdi,j​cx​−i​,θ−arccosdi,j​cx​−i​​if cy​−j≥0if cy​−j<0​

對于實際檢測結果 b b b和對應的GT框 b ′ b^{'} b′其計算IoU所需的交并集的計算可以描述為:

S b ∩ b ′ = ∑ p i , j ∈ B b , b ′ δ ( p i , j ∣ b ) δ ( p i , j ∣ b ′ ) S_{b\cap b^{'}}=\sum_{p_{i,j}\in B_{b,b^{'}}}\delta(p_{i,j}|b)\delta(p_{i,j}|b^{'}) Sb∩b′​=pi,j​∈Bb,b′​∑​δ(pi,j​∣b)δ(pi,j​∣b′)

S b ∪ b ′ = ∑ p i , j ∈ B b , b ′ δ ( p i , j ∣ b ) + δ ( p i , j ∣ b ′ ) − δ ( p i , j ∣ b ) δ ( p i , j ∣ b ′ ) S_{b\cup b^{'}}=\sum_{p_{i,j}\in B_{b,b^{'}}}\delta(p_{i,j}|b)+\delta(p_{i,j}|b^{'})-\delta(p_{i,j}|b)\delta(p_{i,j}|b^{'}) Sb∪b′​=pi,j​∈Bb,b′​∑​δ(pi,j​∣b)+δ(pi,j​∣b′)−δ(pi,j​∣b)δ(pi,j​∣b′)

但是,由于上述的計算過程中涉及到一個二值化函數,這就導緻了其是不可微分的。因而文章對其進行了優化,使用一個函數進行近似,那麼上面的交集計算變為:

F ( p i , j ∣ b ) = K ( d i , j w , w ) K ( d i , j h , h ) F(p_{i,j}|b)=K(d_{i,j}^w,w)K(d_{i,j}^h,h) F(pi,j​∣b)=K(di,jw​,w)K(di,jh​,h)

其中,使用的變換函數為:

K ( d , s ) = 1 − 1 1 + e − k ( d − s ) K(d,s)=1-\frac{1}{1+e^{-k(d-s)}} K(d,s)=1−1+e−k(d−s)1​

它在不同超參數下的取值可以參考圖3的b圖所示,在文章的代碼中其 k = 10 , s = 0.5 k=10,s=0.5 k=10,s=0.5。不同的 k k k值對性能的影響,見下表所示:

《PIoU Loss:Towards Accurate Oriented Object Detection in Complex Environments》論文筆記1. 概述2. 方法設計3. 實驗結果

那麼經過重新定義之後,文章計算IoU所需的交并集分量可以描述為:

S b ∩ b ′ ≈ ∑ p i , j ∈ B b , b ′ F ( p i , j ∣ b ) F ( p i , j ∣ b ′ ) S_{b\cap b^{'}}\approx\sum_{p_{i,j}\in B_{b,b^{'}}}F(p_{i,j}|b)F(p_{i,j}|b^{'}) Sb∩b′​≈pi,j​∈Bb,b′​∑​F(pi,j​∣b)F(pi,j​∣b′)

S b ∪ b ′ ≈ ∑ p i , j ∈ B b , b ′ F ( p i , j ∣ b ) + F ( p i , j ∣ b ′ ) − F ( p i , j ∣ b ) F ( p i , j ∣ b ′ ) S_{b\cup b^{'}}\approx\sum_{p_{i,j}\in B_{b,b^{'}}}F(p_{i,j}|b)+F(p_{i,j}|b^{'})-F(p_{i,j}|b)F(p_{i,j}|b^{'}) Sb∪b′​≈pi,j​∈Bb,b′​∑​F(pi,j​∣b)+F(pi,j​∣b′)−F(pi,j​∣b)F(pi,j​∣b′)

由于實際檢測結果 b b b和對應的GT框 b ′ b^{'} b′都是矩形的,那麼實際的面積就可以按照矩形的面積公式進行計算,因而上述并集的計算量就可以極大簡化,則并集可以描述為:

S b ∪ b ′ = w ∗ h + w ′ ∗ h ′ − S b ∩ b ′ S_{b\cup b^{'}}=w*h+w^{'}*h^{'}-S_{b\cap b^{'}} Sb∪b′​=w∗h+w′∗h′−Sb∩b′​

則最後的IoU計算描述為:

P I o U = S b ∩ b ′ S b ∪ b ′ PIoU=\frac{S_{b\cap b^{'}}}{S_{b\cup b^{'}}} PIoU=Sb∪b′​Sb∩b′​​

而最後的損失函數文章将其定義為:

L P I o U = − ∑ ( b , b ′ ) ∈ M l n P I o U ( b , b ′ ) ∣ M ∣ L_{PIoU}=\frac{-\sum_{(b,b^{'})\in M}\mathcal{ln}PIoU(b,b^{'})}{|M|} LPIoU​=∣M∣−∑(b,b′)∈M​lnPIoU(b,b′)​

文章損失函數與其它損失函數的性能比較(DOTA資料集下):

《PIoU Loss:Towards Accurate Oriented Object Detection in Complex Environments》論文筆記1. 概述2. 方法設計3. 實驗結果

對應的實作代碼,請參考:pixel_weights_cpu.cpp

2.3 Retail-50k資料集

出于資料背景的複雜多樣性/ 檢測目标的長寬比例多樣性/ 實際場景下實用性等因素文章公布了該資料集,可以從文章Git的對應檔案夾下通過腳本下載下傳對應的網絡圖檔。将文章提供的資料集與其它的一些資料集進行比較,見下表所示:

《PIoU Loss:Towards Accurate Oriented Object Detection in Complex Environments》論文筆記1. 概述2. 方法設計3. 實驗結果

Retail-50k資料集的統計特性:

《PIoU Loss:Towards Accurate Oriented Object Detection in Complex Environments》論文筆記1. 概述2. 方法設計3. 實驗結果

3. 實驗結果

《PIoU Loss:Towards Accurate Oriented Object Detection in Complex Environments》論文筆記1. 概述2. 方法設計3. 實驗結果

繼續閱讀