文章目錄
- 一、YOLOv5簡介
- 二、網路結構
- 1、Input
- 2、Backbone
- 3、Neck
- 4、Head
- 三、改進方法
- 1、自適應錨框計算
- 2、自適應灰度填充
- 四、性能表現
- 五、YOLOv5入門實戰
一、YOLOv5簡介
YOLOv5是一個在COCO資料集上預訓練的物體檢測架構和模型系列,它代表了Ultralytics對未來視覺AI方法的開源研究,其中包含了經過數千小時的研究和開發而形成的經驗教訓和最佳實踐,
YOLOv5是YOLO系列的一個延申,您也可以看作是基于YOLOv3、YOLOv4的改進作品,YOLOv5沒有相應的論文說明,但是作者在Github上積極地開放源代碼,通過對原始碼分析,我們也能很快地了解YOLOv5的網路架構和作業原理,

Github原始碼地址:https://github.com/ultralytics/yolov5
二、網路結構
YOLOv5官方代碼中,一共給出了5個版本,分別是 YOLOv5n、YOLOv5s、YOLOv5m、YOLOv5l、YOLO5x 五個模型,這些不同的變體使得YOLOv5能很好的在精度和速度中權衡,方便用戶選擇,
本文中,我們以較為常用的YOLOv5s進行介紹,下面是YOLOv5s的整體網路結構示意圖:
注:無水印原圖,上我公眾號【AI 修煉之路】,回復【YOLOv5】獲取!
1、Input
和YOLOv4一樣,對輸入的影像進行Mosaic資料增強,Mosaic資料增強的作者也是來自Yolov5團隊的成員,通過隨機縮放、隨機裁剪、隨機排布的方式對不同影像進行拼接,如下如所示:
采用Mosaic資料增強方法,不僅使圖片能豐富檢測目標的背景,而且能夠提高小目標的檢測效果,并且在BN計算的時候一次性會處理四張圖片!
2、Backbone
骨干網路部分主要采用的是:Focus結構、CSP結構,其中 Focus 結構在YOLOv1-YOLOv4中沒有引入,作者將 Focus 結構引入了YOLOv5,用于直接處理輸入的圖片,Focus重要的是切片操作,如下圖所示,4x4x3的影像切片后變成2x2x12的特征圖,

以YOLOv5s的結構為例,原始608x608x3的影像輸入Focus結構,采用切片操作,先變成304x304x12的特征圖,再經過一次32個卷積核的卷積操作,最終變成304x304x32的特征圖,
3、Neck
在網路的頸部,采用的是:FPN+PAN結構,進行豐富的特征融合,這一部分和YOLOv4的結構相同,詳細內容可參考:
- 目標檢測演算法 YOLOv4 決議
- YOLO系列演算法精講:從yolov1至yolov4的進階之路
4、Head
對于網路的輸出,遵循YOLO系列的一貫做法,采用的是耦合的Head,并且和YOLOv3、YOLOv4類似,采用了三個不同的輸出Head,進行多尺度預測,詳細內容可參考:
- 目標檢測演算法 YOLOv4 決議
- YOLO系列演算法精講:從yolov1至yolov4的進階之路
三、改進方法
1、自適應錨框計算
在YOLOv3、YOLOv4中,是通過K-Means方法來獲取資料集的最佳anchors,這部分操作需要在網路訓練之前單獨進行,為了省去這部分"額外"的操作,Yolov5的作者將此功能嵌入到整體代碼中,每次訓練時,自適應的計算不同訓練集中的最佳錨框值,當然,如果覺得計算的錨框效果不是很好,也可以在代碼中將自動計算錨框功能關閉,
parser.add_argument('--noautoanchor', action='store_true', help='disable autoanchor check')
2、自適應灰度填充
為了應對輸入圖片尺寸 不一的問題,通常做法是將原圖直接resize成統一大小,但是這樣會造成目標變形,如下圖所示:

為了避免這種情況的發生,YOLOv5采用了灰度填充的方式統一輸入尺寸,避免了目標變形的問題,灰度填充的核心思想就是將原圖的長寬等比縮放對應統一尺寸,然后對于空白部分用灰色填充,如下圖所示:

四、性能表現
在COCO資料集上,當輸入原圖的尺寸是:640x640時,YOLOv5的5個不同版本的模型的檢測資料如下:

在COCO資料集上,當輸入原圖的尺寸是:640x640時,YOLOv5的5個不同版本的模型的檢測資料如下:

從上表可得知,從YOLOv5n到YOLOv5x,這五個YOLOv5模型的檢測精度逐漸上升,檢測速度逐漸下降,根據專案要求,用戶可以選擇合適的模型,來實作精度與速度的最佳權衡!
五、YOLOv5入門實戰
1、下載YOLOv5,并安裝相關依賴庫,
git clone https://github.com/ultralytics/yolov5 # clone
cd yolov5
pip install -r requirements.txt # install
2、檢測,此程序會自動下載權重到root/runs/detect目錄下,如果下載失敗,可自行下載,
python detect.py --source 0 # webcam
img.jpg # image
vid.mp4 # video
path/ # directory
path/*.jpg # glob
'https://youtu.be/Zgi9g1ksQHc' # YouTube
'rtsp://example.com/media.mp4' # RTSP, RTMP, HTTP stream
3、訓練,
python train.py --data coco.yaml --cfg yolov5n.yaml --weights '' --batch-size 128
yolov5s 64
yolov5m 40
yolov5l 24
yolov5x 16
參考文獻:
- https://github.com/ultralytics/yolov5
- https://www.zhihu.com/search?q=YOLOv5&utm_content=search_history&type=content
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/436395.html
標籤:AI
