用CenterNet對旋轉目標進行檢測 | 附源碼
點擊上方“AI算法與圖像處理”,選擇加"星標"或“置頂”
重磅干貨,第一時間送達
導讀
?該項目主要內容包括對原版的CenterNet目標檢測代碼進行了精簡,使用更加方便,同時作者也在持續(xù)維護中,有問題的開源去GitHub上提issue,后續(xù)會開放工程化工作 C++落地
前言
前段時間純粹為了論文湊字數(shù)做的一個工作,本文不對CenterNet原理進行詳細解讀,如果你對CenterNet原理不了解,建議簡單讀一下原論文然后對照本文代碼理解(對原版CenterNet目標檢測代碼進行了極大程度精簡)。
基本想法就是直接修改CenterNet的head部分,但是是直接在長寬圖上加一層通道表示角度,還是多引出一 路feature-map呢?實測是多引出一張feature map比較好,直接在長寬圖上加一層通道很難收斂,具體原因我也是猜測,角度和尺度特征基本無共享特征,且會相互干擾(角度發(fā)生些許變化,目標的長寬可能就變了,如果角度是錯的,長寬本來是對的呢?反之亦然)引出的feature-map只經歷了一層卷積層就開始計算loss,對于這種復雜的關系表征能力不夠,可能造成弄巧成拙。網絡結構如下:

代碼
代碼主要分為五個部分:
train.py:模型的訓練
predict.py:模型的前向推理
backbone:模型的主干網,給了DLA和ResNet的DCN與普通版本,層數(shù)可以自定義
loss.py:模型的損失函數(shù)
dataset.py:模型的數(shù)據(jù)處理
不是很重要:
data/airplane:示例訓練數(shù)據(jù)與圖片
dcn:編譯好的dcn,說明一下,這里與原版CenterNet編譯dcn一樣,直接文件夾復制過來即可,如果你不會編譯dcn,就用backbone內的dlanet.py與resnet.py
原版CenterNet代碼較多,我只需要做目標檢測,所以把各種3D檢測等都刪了,模型架構也拆了只保留了有用部分,方便自己閱讀以及魔改。
其次,因為只是加了一個角度檢測,所以主要是修改了一下數(shù)據(jù)處理部分,用的還是VOC格式,只是在.josn文件里面加了一個角度信息,打標簽的時候用[0,π]表示,后續(xù)在loss內添加了角度的feature-map損失,用的Smooth-L1 loss,打標簽方法已在下方更新。
2020.1021代碼已更新(不是很重要)
labelGenerator:生成自己的訓練數(shù)據(jù)
evaluation.py:性能指標計算
imgs:性能指標計算示例圖片
鑒于一些同學想知道怎么對自己的數(shù)據(jù)打標簽以及生成R-CenterNet可以訓練的數(shù)據(jù),所以更新一個labelGenerator文件夾,內包含轉換函數(shù)以及用例。注意,這個文件夾以及其內部函數(shù)不是網絡必須的,只是想訓練自己打標簽的數(shù)據(jù)時用的。
鑒于一些同學想知道模型訓練完畢,怎么對比性能,比如旋轉框怎么計算mIOU等,所以更新一個evaluation.py以及對應的案例圖片和文件夾imgs。注意,這個.py和imgs文件夾不是必須的,只是模型訓練結束計算性能用的。
注:
每個label里面的目標五個數(shù)值:

分別為目標中心點(x,y),以及寬度,長度,角度,角度是以12點鐘為0°,順時針旋轉的角度,最大為179.99999°(旋轉180°,相當于沒轉)。
Demo





訓練自己的多分類網絡
理論上torch >1.0即可,如果報了顯存不足的問題就是torch版本低了
打標簽用labelGenerator文件夾里面的代碼
修改代碼中所有num_classes為你的類別數(shù)目
增加predict.py中方框顏色,我這里只檢測單目標,所以只有紅藍框。
修改back_bone中hm的數(shù)目為你的類別數(shù),如:
def DlaNet(num_layers=34, heads = {'hm': your classes num, 'wh': 2, 'ang':1, 'reg': 2}, head_conv=256, plot=False):最后,有問題可以去github上看一下issue,或者私信留言。
后續(xù)有時間會將上面的工作工程化,用C++落地。
感謝每個開源的作者給我們提供了大量可以參考的案例,讓我們能夠有條件去使用,不用花費大量的時間去做重復的工作,未來會我會繼續(xù)分享優(yōu)質的工作內容和項目!希望小伙伴看到時,可以順手點個“在看”或許能幫到其他人,當人這也是我堅持的動力之一!??!感謝
下載1:leetcode?開源書
在「AI算法與圖像處理」公眾號后臺回復:leetcode,即可下載。每題都 runtime beats 100% 的開源好書,你值得擁有!
下載2 CVPR2020 在「AI算法與圖像處理」公眾號后臺回復:CVPR2020,即可下載1467篇CVPR?2020論文 個人微信(如果沒有備注不拉群!) 請注明:地區(qū)+學校/企業(yè)+研究方向+昵稱
覺得不錯就點亮在看吧


