YOLOV5 的安裝與使用
預備環境:pytorch
第一步,從github上下載下傳工程檔案
因為版本會經常更新,是以還是從官方下載下傳比較好,百度下很容易出現依賴與yolov5版本不一緻,權重檔案不比對等問題(别問我是怎麼知道的)。本文所有步驟需要的包都從可靠來源下載下傳。
github網址
在搜尋欄中搜尋yolov5。

如果沒有git,那麼直接下載下傳zip包即可。
如果嫌下載下傳慢,可以把這個倉庫克隆到碼雲,從碼雲上下載下傳。這個方法百度一下有很多部落格寫道。百度一下:“github遷移碼雲”這類關鍵字即可。下載下傳完後,解壓到想要的路徑。以下所說的工程路徑就是這個解壓後的檔案夾。
第二步 下載下傳依賴
在解壓好的工程檔案中,可以找到requirements.txt檔案。在yolov5目錄下打開指令行,或者在開始菜單打開指令行,通過 cd /d(如果想要跳轉的目錄分區和目前指令行運作分區相同則不用輸入/d) yolov5工程路徑進入指定路徑 。
然後輸入指令
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple,等待pip自動下載下傳所需要的依賴。-i 參數是從清華鏡像中下載下傳依賴包,如果不加,則從國外源下載下傳,不僅速度慢,還容易下載下傳失敗。
第三步 下載下傳權重檔案
在https://github.com/ultralytics/yolov5/releases中下載下傳4個權重檔案,放到工程路徑下的weights檔案夾中。
可以不全部下載下傳,先下載下傳最小的(容易下載下傳成功)。等到以後要用的時候再想辦法下載下傳其他的權重檔案。
第四步 測試detect.py
在工程檔案在運作cmd。
然後輸入python detect.py --source 0 --weights=“weights/yolov5s.pt” (如果裝置有攝像頭)
或者python detect.py --source=“data/images/bus.jpg” --weights=“weights/yolov5s.pt”(裝置沒有攝像頭)
前者會打開攝像頭并實時探測物品,後者将用工程自帶的一張測試圖檔進行測試。運作結束後,會列印結果檔案的位置。在這個位置中可以找到測試結果。
第五步 制作自己的資料集–下載下傳LabelImg
任意位置運作cmd,然後 pip install LabelImg -i https://pypi.tuna.tsinghua.edu.cn/simple
下載下傳安裝完成後運作cmd,輸入LabelImg,打開程式
第六步 制作自己的資料集–打标簽
把準備好的圖檔放到一個檔案夾中,在LabelImg中打開這個檔案夾。然後設定标簽檔案輸出位置(change save Dir)。不要放在與圖檔相同的位置就行。然後對每張圖檔畫框打标簽。按w鍵可以畫框,畫完框後,就會彈出對話框,然後在對話框上寫上标簽名就行(這步工作就是說明圖檔上這個位置是什麼東西)。打完标簽後,你就得到兩個檔案夾。圖檔和标簽。在标簽檔案夾中,你還得到了一個classes.txt檔案。這個檔案記錄了資料集中所有類别。标簽檔案中記錄的是引索。需要通過這個classes.txt檔案才能知道對應的物品名稱。圖檔和标簽兩個檔案夾中的檔案一一對應,它們名字相同,字尾名不同。然後你需要把資料分為訓練集和測試集,比例要适中。
此時,你擁有4個檔案夾和一個class.txt檔案。
- train圖檔
- train标簽(與train 圖檔一一對應,名字相同,字尾不同)
- test圖檔
- test标簽 (與test 圖檔一一對應,名字相同,字尾不同)
第七步 把自己的資料集轉移到yolov5工程目錄
在工程目錄下找到data檔案夾,在這個檔案夾裡建立一個檔案夾。可以任意命名(為友善說明,這裡用命名為mydataset。在mydataset下建立兩個檔案夾。一個命名為images,另一個命名為labels。這兩個檔案夾名字是規定的,不能随意。然後分别在這兩個檔案夾下都建立兩個檔案夾,命名為train,test。
然後把第六步得到的4個檔案夾中的檔案轉移到對應目錄中
- train圖檔->images/train
- train标簽->labels/train
- test圖檔->images/test
- test标簽->labels/test
第七步 調整配置檔案
- 打開工程目錄/models/yolov5s.yaml檔案(如果訓練的是其他模型則打開其他模型的yaml檔案),然後把nc改為第六步中classes.txt中類别的數量。(你資料集中标簽了多少樣東西,這個數字就是幾)
- 打開工程目錄/data/coco128.yaml檔案。
YOLO V5的安裝與使用YOLOV5 的安裝與使用 把train:設定為第六步的train圖檔的存放位置
把val:設定為第六步的test圖檔的存放位置
程式會自動搜尋labels檔案的位置。這也就是第六步為什麼要規定圖檔與标簽檔案夾名字的原因。這個搜尋是通過簡單字元串替換實作的
把nc:改為資料集的類别數目(1中的一樣)
把names改為類别名稱,順序要和第六步得到的classes.txt中的一樣。
-
(可選)在train.py後面追加一句
strip_optimizer(best)
追加這一句可以使得得到的權重檔案的大小與公布的一緻,否則,會比較大。
第七步 訓練權重
指令行切換到工程目錄下。運作指令(運作之前確定修改的配置檔案都儲存好了)
python train.py --img 640 --data data/coco128.yaml --cfg models/yolov5s.yaml --weights weights/yolov5s.pt --batch-size 8 --epochs 50
這些參數根據實際情況進行調整。–cfg 訓示用到的模型的配置檔案的位置。–weights 訓示對應模型權重檔案的位置。
在開始訓練前。會列印輸出的位置。我們會得到訓練名額,訓練後的兩個權重檔案(一個是最佳權重,一個是最後一輪訓練得到的權重)。
訓練完成後,就可以去那個目錄檢視結果。
第八步 用訓練得到的權重進行預測
與第四步一樣,不同的是權重檔案的位置變了
python detect.py --source 0 --weights=“weights/yolov5s.pt”。改一下權重路徑就行。
=>python detect.py --source 0 --weights=“runs\train\exp3\weights\best.pt”
source 參數說明
如果是0,則打開攝像頭
如果是圖檔路徑,則對圖檔進行預測。結果路徑會列印
如果是檔案夾,則對檔案夾中的圖檔和視訊進行預測。
如果是視訊,則對視訊進行預測。