MultiNet論文閱讀筆記

MultiNet論文閱讀筆記
剛開始接觸這方面,有什麼不懂的請大家不吝指教。這篇筆記只是作爲自己學習的一個記錄而已,請大家輕點噴。。
代碼地址:https://github.com/MarvinTeichmann(下面有一個KittiSeg是語義分割的代碼,KittiBox是目標檢測的代碼)

爲了提高實現自動駕駛等實時應用的計算時間,提出了一種通過統一架構的聯合分類、檢測和語義分割的方法。整個方法的架構可以表示爲編碼器—解碼器。其中編碼器採用的是VGG-16網絡的前13層的輸出(feature map大小爲39X12),此特徵在三個任務解碼器之間共享。通過構造這種方法,可以進行端到端的訓練,並且在具有挑戰性的KITTI數據集中表現非常出色,超越了道路劃分任務中的最先進技術。我們的方法也非常有效,執行所有任務只需要不到100 ms。

編碼器:由VGG16網絡的卷積層和池化層組成,採用前13層輸出的結果。並且在三個任務之間共享權重。

MultiNet架構
解碼器:
分類解碼器(Classification Decoder):在編碼器的輸出(39X12X512)之後應用於一個1X1的卷積層,然後緊接着用全連接層和softmax進行分類,最後得到概率(2類,車或者是背景)。
檢測解碼器(Detection Decoder):解碼器首先在編碼器的輸出之後同樣的應用一個1X1的卷積層,產生39X12X300(300跟後面的500有出入,和代碼中的512也有出入)的特徵圖,然後在此之後再應用一個1X1卷積層,產生39X12X6的輸出(類似於Yolo,將圖像分割成39X12個網格,每個網格預測一個框),每個網格預測6個參數,前兩個參數表示兩個類別的概率,後面的四個參數表示預測的框的座標值。(感覺這就是Yolo啊),但是這種預測是非常不準確的(Yolo的作者也說了會產生更多的定位誤差使得定位很不準確),爲了解決這個問題,引入了一個再縮放層(有點類似於殘差網絡也有點像Yolo V2),將VGG-16網絡的Conv4-3輸出的高分辨率的特徵圖(156X48)來回歸上一步得到的框。在將高分辨率的特徵圖縮放至39X12的大小的時候,採用的方法是ROI池化層的方法(參考fast rcnn中的ROI池化),將此方法得到的特徵圖與39X12X6大小的特徵圖再經過一個1X1的網絡得到最後的輸出。

檢測解碼器第一次的輸出,能看出預測的紅色的框和ground truth差別很大
分割解碼器(Segmentation Decoder):採用的FCN全卷積網絡來對圖像進行語義分割。將VGG架構的剩餘完全連接(FC)層轉換爲1×1卷積層,以產生尺寸爲39×12的低分割分辨率。其後是三個轉置卷積層(也有叫做反捲積層)[6,21] 執行上採樣。然後再加上一些較低層如Conv4-3、3-3層的高分辨率的特徵,這些特徵首先由1×1卷積層處理,然後加到部分上採樣結果中。

訓練細節
  在本節中,我們將介紹我們使用的損失函數以及我們的訓練過程的其他細節,包括初始化。
  標籤編碼:我們使用單熱編碼進行分類和分割。對於檢測,當且僅當它與至少一個邊界框相交時,我們才分配了一個正的的置信度。我們通過其中心的x和y座標以及框的寬度w和高度h來參數化邊界框。請注意,此編碼比Faster RCNN或ReInspect簡單得多。
  損失函數:我們將損失函數定義爲分類,分割和檢測的損失函數的總和。我們採用交叉熵作爲分類和分割分支的損失函數,定義如下:
其中p是預測,q是ground truth,C是一組類。我們使用兩個損失的總和來檢測:信號的交叉熵損失和邊界框座標上的L1損耗。請注意,L1損耗僅針對已被賦予正值置信標記的單元格計算。從而:
其中p是預測,q是ground truth,C是一組類,I是小批次中的一組示例。
  綜合訓練策略:通過合併每個損失計算的漸變獨立小批量進行聯合訓練。這允許我們用自己的訓練參數來訓練三個解碼器中的每一個。在梯度合併期間,所有的損失都被相等地加權。另外,我們觀察到,檢測網絡需要比其他任務需要更多的訓練步驟。因此,我們對我們的小批次進行抽樣,使得我們使用所有損失函數交替更新,其中兩個更新僅利用檢測丟失。
  初始化:使用ImageNet上預先訓練的VGG權重對編碼器進行初始化。使用範圍(-0.1,0.1)中的單位分佈隨機初始化檢測和分類解碼器權重。分割解碼器的卷積層也使用VGG權重進行初始化,並且轉置卷積層被初始化以執行雙線性上採樣。另一方面,跳過連接以非常小的權重(即1e-4的標準)隨機初始化。這允許我們一步進行訓練(與[29]的兩步程序相反)。
  優化和正則化:我們使用Adam優化器[22],學習率爲1e - 5來訓練我們的MultiNet。對所有層施加5e-4的權重衰減,並且以解碼器中的所有(內)1×1卷積應用概率爲0.5的dropout。

實驗結果
  在本節中,我們對具有挑戰性的KITTI數據集進行實驗評估。

結論
   在本文中,我們開發了一個統一的深層架構,能夠共同推理分類,檢測和語義分割。我們的方法非常簡單,可以端到端進行訓練,並在挑戰性的KITTI中表現非常出色,超越了道路分割任務中的最先進技術。我們的方法也非常有效,需要98.10ms執行所有任務。未來我們計劃開發壓縮方法,以進一步降低MutiNet的計算瓶頸和能耗。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章