<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>
"); //-->

博客專(zhuān)欄

EEPW首頁(yè) > 博客 > YOLOP 多任務(wù)算法詳解

YOLOP 多任務(wù)算法詳解

發(fā)布人:地平線(xiàn)開(kāi)發(fā)者 時(shí)間:2024-11-22 來(lái)源:工程師 發(fā)布文章

YOLOP 是華中科技大學(xué)研究團隊在 2021 年開(kāi)源的研究成果,其將目標檢測/可行駛區域分割和車(chē)道線(xiàn)檢測三大視覺(jué)任務(wù)同時(shí)放在一起處理,并且在 Jetson TX2 開(kāi)發(fā)板子上能夠達到 23FPS。


論文標題:YOLOP You Only Look Once for Panoptic Driving Perception

論文地址:https://arxiv.org/abs/2108.11250

官方代碼:https://github.com/hustvl/YOLOP



01 網(wǎng)絡(luò )結構


YOLOP 的核心亮點(diǎn)就是多任務(wù)學(xué)習,而各部分都是拿其它領(lǐng)域的成果進(jìn)行縫合,其網(wǎng)絡(luò )結構如下圖所示:


圖片


三個(gè)子任務(wù)共用一個(gè)Backbone和Neck,然后分出來(lái)三個(gè)頭來(lái)執行不同的任務(wù)。



1.1 Encoder


根據論文所述,整個(gè)網(wǎng)絡(luò )可以分成一個(gè) Encoder 和 3 個(gè) Decoder。


Encoder 包含 Backbone 和 Neck,Backbone 照搬了 YOLOv4 所采用的 CSPDarknet,Neck 也和 YOLOv4 類(lèi)似,使用了空間金字塔(SPP)模塊和特征金字塔網(wǎng)絡(luò )(FPN)模塊。



1.2 Decoders


Decoders 即三個(gè)任務(wù)頭:

  1. Detect Head

    目標檢測頭使用了 Path Aggregation Network (PAN)結構,這個(gè)結構可以將多個(gè)尺度特征圖的特征圖進(jìn)行融合,其實(shí)還是 YOLOv4 那一套。

  2. Drivable Area Segment Head & Lane Line Segment Head

    可行駛區域分割頭和車(chē)道線(xiàn)檢測頭都屬于語(yǔ)義分割任務(wù),因此 YOLOP 使用了相同的網(wǎng)絡(luò )結構,經(jīng)過(guò)三次上采樣,將輸出特征圖恢復為(W, H, 2)的大小,再進(jìn)行具體任務(wù)的處理。


1.3 Loss Function


損失函數包括三部分,即三個(gè)任務(wù)的損失。


  1. 目標檢測損失

    目標檢測是直接照搬 YOLOv4 的,因此和 YOLOv4 采用的損失一樣,經(jīng)典的邊界框損失、目標損失和類(lèi)別損失,各自加了個(gè)權重。

  2. 語(yǔ)義分割損失

    圖片另外兩個(gè)語(yǔ)義分割損失采用的均是交叉熵損失。

  3. 總體損失,總體損失為三部分損失之和:

圖片



02 代碼結構


圖片



03 訓練--tools/train.py


3.1 設置 DDP 參數


圖片


pytorch 中 DDP 使用:

(1)參數加載;

(2)模型轉換成 DDP 模型;

(3)訓練數據 sampler,來(lái)使得各個(gè)進(jìn)程上的數據各不相同;

(4)分布式模型的保存。



3.2 讀取網(wǎng)絡(luò )結構


models/YOLOP.py

圖片



3.3 定義損失函數及優(yōu)化器


core/loss.py    utils/utils.py

圖片



3.4 網(wǎng)絡(luò )結構劃分


用于單任務(wù)訓練固定其他網(wǎng)絡(luò )部分層。


圖片



3.5 初始化學(xué)習率


后續在 train()中 warmup 會(huì )調整學(xué)習率。


圖片


首先定義一個(gè)優(yōu)化器,定義好優(yōu)化器以后,就可以給這個(gè)優(yōu)化器綁定一個(gè)指數衰減學(xué)習率控制器。

(1) torch.optim.lr_scheduler.LambdaLR  
語(yǔ)法:class torch.optim.lr_scheduler.LambdaLR(optimizer, lr_lambda, last_epoch=-1)

參數:

      optimizer (Optimizer):要更改學(xué)習率的優(yōu)化器,sgd或adam;
     lr_lambda(function or list):根據epoch計算λ \lambdaλ的函數;或者是一個(gè)list的這樣的   function,分別計算各個(gè)parameter groups的學(xué)習率更新用到的λ \lambdaλ;
     last_epoch (int):最后一個(gè)epoch的index,如果是訓練了很多個(gè)epoch后中斷了,繼續訓練,這個(gè)值就等于加載的模型的epoch。默認為-1表示從頭開(kāi)始訓練,即從epoch=1開(kāi)始。



04 dataset/bdd.py 文件


4.1 數據讀取


1.該文件繼承 AutoDriveDataset.py。


圖片


2、按比例縮放操作:letterbox()圖像增加灰邊

3、數據增強操作


4.2 數據增強


utils/utils.py 文件:

  • random_perspective()放射變換增強

  • augment_hsv()顏色 HSV 通道增強

  • cutout()



05 models/YOLOP.py 文件


圖片


YOLOP 包括三個(gè)檢測任務(wù),目標檢測+可行駛區域檢測+車(chē)道線(xiàn)檢測。



06 損失函數


loss.py postprocess.py


build_targets 思想:


build_targets 主要為了拿到所有 targets(擴充了周?chē)?grids)對應的類(lèi)別,框,batch 中圖片數索引和 anchor 索引,以及具體的 anchors。


每個(gè) gt 按照正樣本選取策略,生成相應的 5 個(gè)框,再根據與默認 anchor 匹配,計算寬高的比例值,根據閾值過(guò)濾不相符的框,得到最終正樣本。

#[b, a, gj, gi]為shape=54的向量,pi為[4,3,48,80,6]維矩陣,從pi中按照b, a, gj, gi的索引挑出想要的目標,最終為[54,6]維ps = pi[b, a, gj, gi]  # prediction subset corresponding to targets 。b, a, gj, gi為索引值,在pi中挑


6.1 目標檢測損失


predictions[0] 目標檢測分支[[4,3,48,80,6],[4,3,24,40,6],[4,3,12,20,6]]。


targets[0] 目標檢測標簽 [32,6],格式為[batch_num,class,x1,y1,x2,y2]。根據 build_targets 在每個(gè)檢測層生成 相 應的正樣本 tbox[]。


將每層的預測結果 tensor pi 根據正樣本格式得到 ps = pi[b, a, gj, gi]。


計算每個(gè)檢測層預測與正樣本之間的 ciou 坐標損失。

iou = bbox_iou(pbox.T, tbox[i], x1y1x2y2=False, CIoU=True)  # iou(prediction, target)
lbox += (1.0 - iou).mean()  # iou loss 坐標損失


obj 損失:

圖片


cls 類(lèi)別損失:

圖片

6.2 可行駛區域損失

圖片


6.3 車(chē)道線(xiàn)損失


圖片



07 網(wǎng)絡(luò )模型輸出格式形式


7.1 網(wǎng)絡(luò )模型檢測輸出格式


det_out:障礙物檢測輸出格式:[25200,6] 其中 6 表示[x1,y1,x2,y2,conf,cls],25200 :(80x80+40x40+20x20)x3。


圖片


7.2 網(wǎng)絡(luò )模型車(chē)道線(xiàn)輸出格式


lane_line_seg : 車(chē)道線(xiàn)分割輸出格式:1,2,640,640。


圖片


7.3 網(wǎng)絡(luò )模型可行駛區域輸出格式


drive_area_seg : 可行駛區域分割輸出格式:1,2,640,640。


圖片



08 前視停車(chē)場(chǎng)數據集檢測效果圖


圖片




*博客內容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀(guān)點(diǎn),如有侵權請聯(lián)系工作人員刪除。



關(guān)鍵詞: 算法 自動(dòng)駕駛

相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>