之前介紹了YOLO-V1~V4版本各做了哪些事以及相較于之前版本的改進。有的人或許會想“直接學(xué)習(xí)最近版本的算法不好嗎”,在我看來,每一個年代的版本/算法都凝聚著當(dāng)年學(xué)術(shù)界的智慧,即便是它被淘汰了也依舊有值得思考的地方,或是可以使我們對后續(xù)算法的改進/提出的缺點有更深的理解,進而“凝百家之長”真正開出道花結(jié)出道果有自己的感悟。
V4出現(xiàn)后,緊接著V5版本就出現(xiàn)了,相比于之前版本,V5出現(xiàn)時沒有論文去介紹它怎么做的。V5像是把V4做了更好的實現(xiàn),即思想算法上沒有太大的變化,更像是一個“實際的偏工程的項目”。直到如今YOLO-V5也十分經(jīng)典。

本文與前幾篇主講算法不同,本文教大家如何下載和使用YOLO-V5。
有時間的話我會從其源碼的角度進行一遍梳理(或許吧不懶的話)。
前面也說過了具體算法和流程與V4無太大區(qū)別,主要是更好的實現(xiàn)。
一、YOLO-V5下載
ultralytics/yolov5: YOLOv5 ?? in PyTorch > ONNX > CoreML > TFLite (github.com)
點擊上方鏈接直接下載即可,下載完成后解壓,打開Pycharm新建一個目錄,

下載requirements里面的依賴
pip install -r requirements.txt
值得一提的是YOLO-V5要配合python>=3.7,pytorch>=1.7的版本使用,會用到里面的優(yōu)化算法,所以大家自行選擇一個更高的版本吧。
比如我這里直接選擇anaconda里之前下載的torch1.10。

二、下載、配置數(shù)據(jù)集和下載預(yù)訓(xùn)練模型
2.1 下載數(shù)據(jù)集
他這里用的是COCO數(shù)據(jù)集,這玩意比較大我們也沒必要下載了,下載個小的玩一玩

可以去這里:Computer Vision Datasets (roboflow.com),下載物體檢測相關(guān)的數(shù)據(jù)集,樣式比較豐富,如檢測汽車的、象棋的、動物的、人臉的等等。

以口罩?jǐn)?shù)據(jù)集為例,大家也可以下載自己喜歡的,點擊Mask Wearing Dataset,進去下載就行了。

下載時會提示你選擇格式:


下載完成后和V5放在同一級目錄就行

以train里的文件為例:
images則是訓(xùn)練所需的圖片
labels里則是對應(yīng)名字圖片的標(biāo)簽值,如下1表示沒戴口罩,戴了就是0,剩下四個則是"框的坐標(biāo)"。

當(dāng)然有的有很多行,畢竟一張圖片里可能有很多人。找的越全recall越高,越精準(zhǔn)accuracy越高,整體mAP越高。
后續(xù)第一次去讀數(shù)據(jù)的時候還會自動生成labels.cache緩存文件,方便后續(xù)讀取。
2.2 配置數(shù)據(jù)集
點開data.yaml,可以看到train和val的相對路徑,到時候YOLO代碼會直接讀取,自己記得確認(rèn)一下路徑是否正確,路徑問題比較基礎(chǔ)這里就不講了。

如果要做test就把test路徑寫進去就行。
nc指類別的個數(shù),戴口罩和不帶口罩,['mask', 'no-mask']
2.3 下載預(yù)訓(xùn)練模型
咱們簡單下載個5s就行了,https://github.com/ultralytics/yolov5/releases/download/v7.0/yolov5s.pt

下載完成后放到y(tǒng)olov5-master文件夾里。

三、配置demo參數(shù)
參考這里:


--data ../MaskDataSet/data.yaml
--cfg models/yolov5s.yaml
--weigths ./yolov5s.pt
--batch-size 24
我們之前下載了預(yù)訓(xùn)練模型yolov5s.pt,用的話就加上,不用就--weights ''
當(dāng)然還有一些參數(shù)可選,源碼里有默認(rèn)值,我們先用這些。
四、訓(xùn)練
做好上面那些后,在yolov5-master的train.py里直接run就行了。
剛開始可能報錯,我看是他第一次執(zhí)行,會去github上下載標(biāo)記字體,然后沒連接進去。

解決辦法就是自己點進去那個報錯下載的連接自己下載就行了,下載完放到上面那個文件夾里。
之后再進行run,它默認(rèn)會跑100個epoch,也可以自己設(shè)置。

這里就訓(xùn)練完了

上圖告訴你 結(jié)果在runs\train\exp23那里,即最后最新跑的一次。

可見生成了權(quán)重文件和一些圖片。
results.csv里面是一些標(biāo)注和統(tǒng)計數(shù)據(jù),至于生成的圖片這里簡單展示幾個:



五、檢測
進入detect.py 直接右鍵run的話,由于下載的yolov5-master的時候它自帶測試圖片和權(quán)重文件,也填寫了默認(rèn)路徑,所以不會報錯;

直接跑的話你會看到結(jié)果里:



這和我們剛剛train那步?jīng)]有一點關(guān)系,都是它自帶的一開始不用訓(xùn)練就能玩的。
我們活學(xué)活用,剛剛訓(xùn)練的是是否戴口罩,所以我們不妨也自己改一下參數(shù):
其中 -- source 后可以是圖片 視頻 文件夾 路徑url等
我這里讓它測試有沒有戴口罩,就用上面這兩張圖片的路徑吧即不修改source了;
不過我在里面又加了兩張圖片

修改參數(shù):

--weights ./runs/train/exp23/weights/best.pt
--conf 0.4
--data ./MaskDataSet/data.yaml
這里我修改了權(quán)重文件 畢竟之前用的是自帶的yolov5s.pt,而這個best.pt是我們通過自己下載的預(yù)訓(xùn)練模型yolov5s.pt的基礎(chǔ)上訓(xùn)練出來的用于檢測是否帶口罩了的權(quán)重文件。 conf是置信度,想改就改。
run完后發(fā)現(xiàn)實際效果還行,但黑人那里不行


不過畢竟我們訓(xùn)練的數(shù)據(jù)就100多張,里面我看了也沒有黑人,情有可原,它可能在面部顏色差異上占比很大。
我又找了幾張試了試 發(fā)現(xiàn)就是數(shù)據(jù)的問題


不過問題不大,我們本次的目的就是先學(xué)會簡單使用他們的代碼。
可以把source那里換成視頻玩一玩試一試。
六、題外話
希望本篇文章能夠?qū)δ阌兴鶐椭?,如果你是連GPU版本的torch都還沒下載過的小白建議一步步來。文章來源:http://www.zghlxwxcb.cn/news/detail-780155.html
大家也可以換點別的數(shù)據(jù)集、參數(shù)來自己跑一跑玩一玩,同時感興趣的小伙伴也可以開始在了解其算法的情況下簡單讀讀源碼了,我下一期或許會寫一篇V5的源碼引導(dǎo)文章。文章來源地址http://www.zghlxwxcb.cn/news/detail-780155.html
到了這里,關(guān)于YOLO-V5輕松上手的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!