Google Colab 開發記錄(4)YOLOP 論文解讀、環境搭建、推理
前言
本文首先進行YOLOP 論文解讀,然后實踐記錄,首先搭建YOLOP 開發環境,最后推理,查看效果?!睂嵺`“分為精簡版和詳細版,精簡版是由簡介和命令組成的;詳細版是由簡介、命令、過程信息記錄 組成的。
YOLOP 論文解讀
YOLOP能同時處理目標檢測、可行駛區域分割、車道線檢測 三個視覺感知任務,并速度優異、保持較好精度進行工作,代碼開源。它是華中科技大學——王興剛團隊,在全景駕駛感知方面提出的模型,致敬開源精神。
論文地址:https://arxiv.org/abs/2108.11250
開源代碼:https://github.com/hustvl/YOLOP
摘要
全景駕駛感知系統是自動駕駛的重要組成部分。高精度、實時的感知系統可以輔助車輛在行駛中做出合理的決策。提出了一個全景駕駛感知網絡(YOLOP)來同時執行交通目標檢測、可行駛區域分割和車道檢測。
在上圖中,紫色邊界框表示交通對象,綠色區域是可行駛區域,紅色線表示車道線。
一、網絡框架
YOLOP由一個用于特征提取的編碼器,和三個用于處理特定任務的解碼器組成。下圖是YOLOP的網絡結構:
YOLOP是一種單階段網絡,包含一個共享編碼器,三個用于特定任務的解碼器。其中三個任務的解碼器:目標檢測部分、可行駛區域分割、車道線分割。不同解碼器之間并沒有復雜的、冗余共享模塊,這可以極大降低計算量,同時使得該網絡易于端到端訓練。
1.1 Encoder?編碼器
該網絡中的編碼器由Backbone網絡與Neck網絡構成。
Backbone網絡:參考了YOLOv4,采用CSP-Darknet結構,提取輸入圖像的特征。它支持特征傳播和重用,減少了參數和計算的數量。
Neck網絡:使得提取的圖像特征以充分利用它們。它由空間金字塔池(SPP)模塊和特征金字塔網絡(FPN)模塊組成。SPP模型生成并融合不同尺度的特征,FPN模塊融合不同語義層次的特征。因此,Neck網絡生成包含“多個尺度”和“多個語義級別信息”的豐富特征,便于融合特征。
1.2 Decoders 解碼器
YOLOP包含三個用于三個任務的解碼器:目標檢測部分、可行駛區域分割、車道線分割。
1)對于目標檢測任務,YOLOP 采用了類似于 YOLOv4 的基于錨框Anchor的多尺度檢測技術。這部分結構由“路徑聚合網絡”組成;Neck網絡中的 FPN 自上而下傳輸語義特征,而 PAN 自下而上傳輸圖像特征。YOLOP 將它們結合起來以獲得更好的特征融合效果,由此獲得的多尺度融合特征圖用于檢測。
多尺度特征的每個grid被賦予三個先驗anchor(包含不同縱橫比),檢測頭將預測位置偏移、高寬、類別概率以及預測置信度。
2)可行駛區域分割和車道線分割部分使用相同的網絡結構。將FPN的輸出特征(分辨率為)送入到分割分支。我們設計的分割分支非常簡單,通過三次上采樣處理輸出特征尺寸為,代表每個像素是駕駛區域/車道線還是背景的概率。由于Neck中已包含SPP模塊,我們并未像PSPNet添加額外的SPP模塊。此外,我們采用了最近鄰上采樣層以降低計算量。因此,分割解碼器不僅具有高精度輸出,同時推理速度非常快。
來自 FPN 底層的大小為(W/8, H/8, 256)的特征被饋送到分割分支。它應用三個上采樣過程并將特征圖恢復為(W, H, 2),它表示輸入圖像中可行駛區域和車道線的像素級概率。在其他分割網絡有 SPP 模塊的地方,YOLOP 分割頭不需要,因為Neck網絡中共享 SPP 模塊。
二、損失函數和訓練方法
YOLOP 使用簡單的損失函數,它為三個解碼器頭提供三個單獨的損失函數。檢測損失是分類損失、對象損失和邊界框損失的加權和??尚旭倕^域分割頭和車道線分割頭的損失函數都包含帶有 logits 的交叉熵損失。車道線分割由于其在預測備用類別方面的有效性而具有額外的 IoU 損失。模型的整體損失函數是所有三個損失的加權和。
三、YOLOP效果與性能
車輛檢測效果:
可行區域檢測效果:
車道線檢測效果:
性能小結:
YOLOP 在具有挑戰性的 BDD100K 數據集上針對三個任務的最新模型進行了測試。它在對象檢測任務的準確性方面擊敗了 Faster RCNN、MultiNet 和 DLT-Net,并且可以實時推斷。對于可行駛區域分割任務,YOLOP 的性能分別比 MultiNet 和 DLT-Net 等模型高 19.9% 和 20.2%。而且,它比它們都快 4 到 5 倍。同樣,對于車道檢測任務,它的性能優于現有的最先進模型高達 2 倍。
它是首批在 Jetson TX2 等嵌入式設備上同時實時執行這三項任務并實現最先進性能的模型之一。
下面實踐內容
前提
掛載谷歌云盤、來到自己的谷歌云盤下的目錄。
from?google.colab?import?drive
drive.mount('/content/gdrive')
在云盤中,創建一個名為YOLOP的目錄,然后進入目錄
cd /content/gdrive/MyDrive/YOLO/
精簡版——YOLOP 環境搭建、推理
1)查看當前文件目錄
!pwd
顯示:/content/gdrive/MyDrive/YOLOP
2)查看分配了什么GPU、內存多大
首先點擊“修改”,選擇“筆記本設置”,硬件加速----GPU加速
!nvidia-smi
from?psutil?import?virtual_memory
ram_gb?=?virtual_memory().total?/?1e9
print('Your?runtime?has?{:.1f}?gigabytes?of?available?RAM\n'.format(ram_gb))
3)下載YOLOv5官方代碼
!git?clone?https://github.com/hustvl/YOLOP.git
4)查看當前目錄有哪些文件
!ls
5)進入YOLOP目錄
cd?YOLOP
!pwd
這兩調命令需要分開執行;
6)安裝YOLOP的開發環境
6.1、先安裝conda開發環境
!wget?-c?https://repo.anaconda.com/miniconda/Miniconda3-py37_4.10.3-Linux-x86_64.sh
!chmod?+x?Miniconda3-py37_4.10.3-Linux-x86_64.sh
%env?PYTHONPATH=
!./Miniconda3-py37_4.10.3-Linux-x86_64.sh?-b?-f?-p?/usr/local
添加conda環境變量
import?sys
_?=?(sys.path.append("/usr/local/lib/python3.7/site-packages"))
測試conda環境
!conda?env?list
6.2、正式安裝YOLOP的開發環境
!conda?install?pytorch==1.7.0?torchvision==0.8.0?cudatoolkit=10.2?-c?pytorch
pip?install?-r?requirements.txt
pip?install?ipykernel
7)推理
默認是CPU進行推理的
!python tools/demo.py??--source inference/images/name.jpg
使用GPU推理圖片。
這里的0 是指系統為GPU分配的cuda device號,如果只有一個顯卡,默認是0了。
!python?tools/demo.py??--source?inference/images/1.jpg??--device?0
使用GPU推理視頻
!python?tools/demo.py?--source?inference/videos/1.mp4??--device?0
使用相機進行推理
這里的--source 0,是指系統為相機分配的設備號,如果只有一個,默認是0了。
!python?tools/demo.py?--source?0??--device?0
詳細版——YOLOP 環境搭建、推理
1)查看當前文件目錄
!pwd
顯示:/content/gdrive/MyDrive/YOLOP
2)查看分配了什么GPU、內存多大
首先點擊“修改”,選擇“筆記本設置”,硬件加速----GPU加速
!nvidia-smi
from?psutil?import?virtual_memory
ram_gb?=?virtual_memory().total?/?1e9
print('Your?runtime?has?{:.1f}?gigabytes?of?available?RAM\n'.format(ram_gb))
3)下載YOLOv5官方代碼
!git?clone?https://github.com/hustvl/YOLOP.git
4)查看當前目錄有哪些文件
!ls
5)進入YOLOP目錄
cd?YOLOP
!pwd
這兩調命令需要分開執行;
6)安裝YOLOP的開發環境
6.1、先安裝conda開發環境
!wget?-c?https://repo.anaconda.com/miniconda/Miniconda3-py37_4.10.3-Linux-x86_64.sh
!chmod?+x?Miniconda3-py37_4.10.3-Linux-x86_64.sh
%env?PYTHONPATH=
!./Miniconda3-py37_4.10.3-Linux-x86_64.sh?-b?-f?-p?/usr/local
添加conda環境變量
import?sys
_?=?(sys.path.append("/usr/local/lib/python3.7/site-packages"))
測試conda環境
!conda?env?list
6.2、正式安裝YOLOP的開發環境
!conda?install?pytorch==1.7.0?torchvision==0.8.0?cudatoolkit=10.2?-c?pytorch
pip?install?-r?requirements.txt
pip?install?ipykernel
7)推理
默認是CPU進行推理的
!python tools/demo.py??--source inference/images/name.jpg
使用GPU推理圖片。
這里的0 是指系統為GPU分配的cuda device號,如果只有一個顯卡,默認是0了。
!python tools/demo.py??--source inference/images/name.jpg??--device?0
使用GPU推理視頻
!python?tools/demo.py?--source?inference/videos/1.mp4??--device?0
使用相機進行推理
這里的--source 0,是指系統為相機分配的設備號,如果只有一個,默認是0了。
!python?tools/demo.py?--source?0??--device?0
參考鏈接:https://github.com/hustvl/YOLOP
GPU加速云服務器 深度學習 神經網絡
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。