YOLOP 論文解讀


最新的 YOLOP 網絡模型出來了,同時支持目標檢測,可行駛區域分割和車道線分割三大任務,cver們趕緊卷起來,而且還是個real time + sort 的模型。

1、網絡結構

如下圖:

由一個encoder和三個特定任務的decoder組成
encoder包含: 主干網絡( CSPDarknet ),和neck結構(SPP+FPN)
decoders分為:一個檢測頭和兩個分割頭,
檢測頭和yolov4的檢測頭一樣,不做多說。
兩個分割頭都是使用FPN的最底層特征圖(W/8,H/8,256)作為輸入,進行三次最近鄰上采樣,最終輸出(W,H,2)的特征圖。在可行駛區域分割頭中,行駛區域為前景,其他為背景;在車道線分割頭,車道線為前景,其他為背景。

2、損失函數

損失函數分為Ldet,Lda−seg和 Lll−seg 三部分

其中Ldet為檢測任務的loss,公式如下:
Ldet = α1 * Lclass + α2 * Lobj + α3 * Lbox
Lclass和Lobj都是focal loss,分別用於分類和置信度計算;Lbox為LCIoU損失函數

Lda−seg為可行駛區域分割任務的loss,公式如下
Lda−seg = Lce
就是正常的交叉熵損失函數

Lll−seg為車道線分割任務的loss,公式如下:
Lll−seg = Lce + LIoU
由交叉熵損失函數和iou損失函數組成,其中
LIoU = TN /(TN + FP + FN),為什么損失函數是這樣的,希望有懂的大佬可以解答下,分割任務接觸的少,不要笑我。
因為車道線的像素比較稀疏,所以需要額外添加一個LIoU 損失

整體損失函數如下:
Lall = γ1 * Ldet + γ2 * Lda−seg + γ3 * Lll−seg,其中
包含6個超參數,α1,α2,α3,γ1,γ2,γ3;該怎么設置呢,終於到了調參俠的用武之地了。

3、實驗部分

3.1 訓練參數設置

  • 使用 kmeans 聚類獲取錨點框
  • 使用 Adam 優化器, 初始化 learning rate, β1、β2 分別設置為 0.001, 0.937, 0.999。使用 Warm-up 和 cosine 衰減策略調整 learning rate

3.2 數據增強策略

  • Photometric distortions:adjust the hue, saturation and value of images
  • geometric distortions:random rotating, scaling, translating, shearing,and left-right flipping

3.3 消融實驗

  • 數據集: BDD100K,總共100k張圖片,其中訓練集70K,驗證集10K,測試集20K,測試集沒有標簽,所以實驗結果為驗證集上的推理結果
  • 模型輸入大小:640×384×3
檢測任務結果

可行駛區域分割任務結果

車道線分割任務結果

端到端訓練策略和分階段訓練策略結果對比


E, D, S and W refer to Encoder, Detect head, two Segment heads and whole network
例如 ED-S-W 表示先固定S,訓練ED;然后固定ED,訓練S;最后整個網絡一起訓練


多任務訓練和單任務訓練結果對比

實驗硬件環境
  • 訓練環境:NVIDIA GTX TITAN XP
  • 嵌入式環境:Jetson TX2(23 FPS),使用了 TensorRT 加速部署

4、總結

新的東西不多,但效果很好,估計大道至簡吧。

5、論文和code鏈接


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM