極市導讀本文是今年剛被CVPR接收的文章,關于CSL的優化版本Densely Coded Labels (DCL),優化了過于厚重的預測層以及對類正方形目標檢測的不友好。附有相關代碼與demo展示。 》》加入極市CV技術交流群,走在計算機視覺的最前沿
一、介紹
Densely Coded Labels (DCL)是 Circular Smooth Label (CSL)(https://zhuanlan.zhihu.com/p/111493759)的優化版本。DCL主要從兩方面進行了優化:過于厚重的預測層以及對類正方形目標檢測的不友好。
文章地址:
Dense Label Encoding for Boundary Discontinuity Free Rotation Detection
https://arxiv.org/abs/2011.09670
代碼地址:
DCL-Tensorflow
https://github.com/yangxue0827/RotationDetection
二、厚重的預測層
CSL編碼方式與獨熱編碼(one-hot)均屬于稀疏編碼(Sparsely Coded Label, SCL)。稀疏編碼的一個明顯缺點是需要較長的位數來進行編碼,以CSL為例,下面這種公式是其編解碼的具體過程:
CSL編解碼過程
其中 , 和 分別表示角度范圍(默認是180)以及所劃分的角度類別。
那我們就可以計算出使用CSL編碼方式或獨熱編碼時的預測層厚度:
CSL編碼方式與獨熱編碼的預測層厚度計算公式
其中 表示anchor的數量。
而使用回歸進行角度預測時的預測層厚度僅為:
回歸方法的預測層厚度
以 為例,CSL編碼方式與獨熱編碼的預測層厚度是1620,而基于回歸的預測層厚度只有9。這使得基于稀疏編碼方法的參數量(Params)和計算量(GFlops)相比基于回歸方法增加了26.40%和32.34%,造成模型訓練和測試的效率低下,如下表所示。
參數量(Params)和計算量(GFlops)的比較
因此,如何減短編碼長度是提高模型效率的關鍵。因此我們想到了密集編碼方法(Densely Coded Label, DCL),主要編碼方法有二值編碼(Binary Coded Label, BCL)和格雷編碼 (Gray Coded Label, GCL),它們的預測層厚度計算公式如下:
二值編碼和格雷編碼的預測層厚度計算公式
同樣以 為例,它們所對應的預測層厚度只有72,只增加1.03%的參數量和1.26%的計算量,和回歸方法的效率幾乎一樣。下式是它們的編解碼過程,以二值編碼為例:
BCL編解碼過程
其中二值編碼和格雷編碼的編碼偽代碼:
二值編碼和格雷編碼的編碼偽代碼
盡管編碼長度大大減少,但會引入幾個其他問題。
第一問題是二值編碼在一定程度上失去了相鄰角度之間的“距離遠近”,也就是相鄰值之間的編碼結果可能發生巨大變化,沒有了CSL方法中強調的容忍性。比如,3和4在三位的二進制編碼結果分別為011和100,如下表所示。
十進制數所對應的三位二值編碼和格雷編碼
可以看到所有三個位置都發生了變化,導致兩個角度預測的誤差很大。而格雷碼沒有這樣的問題,這是因為在一組數字的編碼中,任何兩個相鄰數的格雷碼只有一位不同。由于最大值和最小值之間也只有一位數字不同,因此格雷碼也稱為循環碼。格雷編碼的缺點也很明顯,盡管相鄰角度之間的編碼形式差別不大,但是具有較大差異的角度的編碼差異也不是很明顯,例如1(001)和6(101)。
第二個問題是所劃分的角度類別數需要是2的指數倍才能保證每一種編碼都對應一種角度,否則會有大量冗余的編碼(盡管實驗驗證這個問題影響不大)。如果將180度范圍劃分為 個類別,則每個劃分間隔的范圍為 。根據CSL文章中的計算公式,理論期望誤差和最大誤差分別是 和 ,這種大小的誤差在是可以忽略不計的。
為了更好比較稀疏編碼和密集編碼,下圖就是一個具體例子:
稀疏編碼和密集編碼的比較例子
三、類正方形目標檢測的不友好
不管是CSL還是DCL,為了避免角度周期性(PoA)和邊的交換性(EoE)問題,它們均采用了“角度分類+長邊定義法”的組合。長邊定義法有這樣一個問題,他無法較好定義一個類正方形目標,如下圖所示:
類正方形檢測問題
圖的左邊是gt,右邊是一種“視覺可行”的預測結果,之所以說“視覺可行”是因為此時的計算誤差非常大。這個誤差主要來源于角度(類正方形目標兩邊近似相等,因此盡管wh的順序相反,誤差依然很?。?。仔細觀察可以發現這兩種框的角度差約等于 。其實使用周期為90的定義方法對類正方形目標來說更加合適(如OpenCV定義法),長邊定義法有明顯的缺陷。我的另一篇文章GWD詳細討論了這種問題,有一句話概括長邊定義法出現這種問題的原因:目標長寬比的減小使得評估(IoU)和損失( -norm)之間的不一致性逐漸被放大。
針對這個問題以及第一個問題中提到的容忍性的消失,我們設計了一個損失權重(ADARSW),具體公式如下:
ADARSW權重
具體的想法是通過預測和gt的十進制差值來引入容忍性,三角函數的引入來解決角度周期性和類正方形檢測問題(通過長寬比來調整 參數,從而調整三角函數的周期)。
四、實驗結果
下表是對角度離散化粒度 的消融實驗。盡管理論上越小,理論誤差越小,預測精度上限越高,但是會增加角度分類的難度。越大也不好,太大的話理論誤差太大,預測精度上限太低。一個合適的取值范圍是[180/32-180/256]。并且我們發現,基于分類的角度預測方法(CSL和DCL)比基于回歸方法在高精度 上更有優勢,并且DCL比CSL效果更好,當然效率也更高。
角度離散化粒度的消融實驗
下表是對所提權重的消融實驗,主要列舉了DOTA數據集中10種長寬比比較小的類正方形目標,并驗證了ADARSW的有效性。
ADARSW的消融實驗
下表是在不同數據集上對三種不同方法的比較,我們發現BCL》CSL》Reg.。
其他數據集上的效果驗證
下面兩個表格是所提方法在兩種數據集上的SOTA對比,DCL-based方法具有一定的優勢。
DOTA數據集上的SOTA方法對比
HRSC2016數據集上的SOTA方法對比
下圖是對DCL方法的所預測角度的特征可視化:
RetinaNet-DCL角度特征可視化
五、總結
基于角度分類預測的方法基本告一段落,CSL和DCL驗證了角度分類這條路子的可行性,那其實接下來可以研究如何更好分類,可以借鑒很多方向的分類損失設計,例如人臉識別。但是,這兩篇方法并沒有表現出角度分類這條路的優越性,我所看到的優勢僅僅是方法本身不存在邊界問題,也就是論文題目所寫的Boundary Discontinuity Free,但是代價是存在理論誤差以及模型參數量和計算量的增加。因此,最近我又回到了“角度回歸預測+新loss設計”這條路,一個工作是GWD(https://arxiv.org/abs/2101.11952),歡迎大家交流討論。
另外,簡單介紹一下我所寫的一個基于tensorflow框架的旋轉檢測benchmark:
https://github.com/yangxue0827/RotationDetection
支持的算法:RetinaNet、Faster-RCNN等baseline以及SCRDet (ICCV19)、R3Det (AAAI21)、RSDet (AAAI21)、CSL (ECCV20)、DCL (CVPR21)、GWD等創新方法;
支持的數據集:DOTA、HRSC2016、ICDAR2015、ICDAR2017 MLT、MSRA-TD500、UCAS-AOD、FDDB、OHD-SJTU、SSDD++;
提供大量不同的預訓練權重和訓練好的權重;
訓練可視化分析,以R3Det (AAAI21)為例:
SCRDet (ICCV19):https://arxiv.org/abs/1811.071263Det (AAAI21):https://arxiv.org/abs/1908.05612RSDet (AAAI21):https://arxiv.org/abs/1911.08299CSL (ECCV20):https://arxiv.org/abs/2003.05597DCL (CVPR21):https://arxiv.org/abs/2011.09670GWD:https://arxiv.org/abs/2101.11952R3Det (AAAI21):https://arxiv.org/abs/1908.05612
訓練可視化
統計量記錄
5. RotationDetection的總體框如下:
RotationDetection框架結構
6. demo:https://www.zhihu.com/zvideo/1289379563034636288
編輯:lyn
-
編碼
+關注
關注
6文章
957瀏覽量
54911 -
目標檢測
+關注
關注
0文章
211瀏覽量
15652 -
計算機視覺
+關注
關注
8文章
1700瀏覽量
46075
原文標題:旋轉目標檢測方法解讀(DCL, CVPR2021)
文章出處:【微信號:cas-ciomp,微信公眾號:中科院長春光機所】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論