yolov7-pytorch可用于訓練自己的數據集


YOLOV7:You Only Look Once目標檢測模型在pytorch當中的實現

yolov7-pytorch可用于訓練自己的數據集的圖1

所需環境

torch==1.2.0+
為了使用amp混合精度,推薦使用torch1.7.1以上的版本。

全部 代碼  ,預訓練模型 獲取方式:

關注微信公眾號 datayx  然后回復 v7  即可獲取。


訓練步驟

a、訓練VOC07+12數據集

  1. 數據集的準備
    本文使用VOC格式進行訓練,訓練前需要下載好VOC07+12的數據集,解壓后放在根目錄

  2. 數據集的處理
    修改voc_annotation.py里面的annotation_mode=2,運行voc_annotation.py生成根目錄下的2007_train.txt和2007_val.txt。

  3. 開始網絡訓練
    train.py的默認參數用于訓練VOC數據集,直接運行train.py即可開始訓練。

  4. 訓練結果預測
    訓練結果預測需要用到兩個文件,分別是yolo.py和predict.py。我們首先需要去yolo.py里面修改model_path以及classes_path,這兩個參數必須要修改。
    model_path指向訓練好的權值文件,在logs文件夾里。
    classes_path指向檢測類別所對應的txt。

    完成修改后就可以運行predict.py進行檢測了。運行后輸入圖片路徑即可檢測。

b、訓練自己的數據集

數據集的準備
本文使用VOC格式進行訓練,訓練前需要自己制作好數據集,
訓練前將標簽文件放在VOCdevkit文件夾下的VOC2007文件夾下的Annotation中。
訓練前將圖片文件放在VOCdevkit文件夾下的VOC2007文件夾下的JPEGImages中。

數據集的處理
在完成數據集的擺放之后,我們需要利用voc_annotation.py獲得訓練用的2007_train.txt和2007_val.txt。
修改voc_annotation.py里面的參數。第一次訓練可以僅修改classes_path,classes_path用于指向檢測類別所對應的txt。
訓練自己的數據集時,可以自己建立一個cls_classes.txt,里面寫自己所需要區分的類別。
model_data/cls_classes.txt文件內容為:

yolov7-pytorch可用于訓練自己的數據集的圖2

修改voc_annotation.py中的classes_path,使其對應cls_classes.txt,并運行voc_annotation.py。

  1. 開始網絡訓練
    訓練的參數較多,均在train.py中,大家可以在下載庫后仔細看注釋,其中最重要的部分依然是train.py里的classes_path。
    classes_path用于指向檢測類別所對應的txt,這個txt和voc_annotation.py里面的txt一樣!訓練自己的數據集必須要修改!
    修改完classes_path后就可以運行train.py開始訓練了,在訓練多個epoch后,權值會生成在logs文件夾中。

  2. 訓練結果預測
    訓練結果預測需要用到兩個文件,分別是yolo.py和predict.py。在yolo.py里面修改model_path以及classes_path。
    model_path指向訓練好的權值文件,在logs文件夾里。
    classes_path指向檢測類別所對應的txt。

    完成修改后就可以運行predict.py進行檢測了。運行后輸入圖片路徑即可檢測。

預測步驟

a、使用預訓練權重

  1. 下載完庫后解壓,在百度網盤下載權值,放入model_data,運行predict.py,輸入

img/street.jpg
  1. 在predict.py里面進行設置可以進行fps測試和video視頻檢測。

b、使用自己訓練的權重

  1. 按照訓練步驟訓練。

  2. 在yolo.py文件里面,在如下部分修改model_path和classes_path使其對應訓練好的文件;model_path對應logs文件夾下面的權值文件,classes_path是model_path對應分的類

yolov7-pytorch可用于訓練自己的數據集的圖3

yolov7-pytorch可用于訓練自己的數據集的圖4

  1. 運行predict.py,輸入

img/street.jpg
  1. 在predict.py里面進行設置可以進行fps測試和video視頻檢測。

評估步驟

a、評估VOC07+12的測試集

  1. 本文使用VOC格式進行評估。VOC07+12已經劃分好了測試集,無需利用voc_annotation.py生成ImageSets文件夾下的txt。

  2. 在yolo.py里面修改model_path以及classes_path。model_path指向訓練好的權值文件,在logs文件夾里。classes_path指向檢測類別所對應的txt。

  3. 運行get_map.py即可獲得評估結果,評估結果會保存在map_out文件夾中。

b、評估自己的數據集

  1. 本文使用VOC格式進行評估。

  2. 如果在訓練前已經運行過voc_annotation.py文件,代碼會自動將數據集劃分成訓練集、驗證集和測試集。如果想要修改測試集的比例,可以修改voc_annotation.py文件下的trainval_percent。trainval_percent用于指定(訓練集+驗證集)與測試集的比例,默認情況下 (訓練集+驗證集):測試集 = 9:1。train_percent用于指定(訓練集+驗證集)中訓練集與驗證集的比例,默認情況下 訓練集:驗證集 = 9:1。

  3. 利用voc_annotation.py劃分測試集后,前往get_map.py文件修改classes_path,classes_path用于指向檢測類別所對應的txt,這個txt和訓練時的txt一樣。評估自己的數據集必須要修改。

  4. 在yolo.py里面修改model_path以及classes_path。model_path指向訓練好的權值文件,在logs文件夾里。classes_path指向檢測類別所對應的txt。

  5. 運行get_map.py即可獲得評估結果,評估結果會保存在map_out文件夾中。


登錄后免費查看全文
立即登錄
App下載
技術鄰APP
工程師必備
  • 項目客服
  • 培訓客服
  • 平臺客服

TOP