天天看點

win10+pytorch+yolov3 訓練爬取資料寫在前頭編譯運作拓展錯誤彙總小結

目錄

  • 寫在前頭
  • 編譯運作
    • 運作環境及準備
    • 安裝編譯環境
    • 收集資料
    • 進行配置
    • 執行訓練
    • 測試訓練結果
  • 拓展
  • 錯誤彙總
  • 小結

寫在前頭

第一次寫,寫了一下午感覺寫的還是比較細緻的,在最後也附上了源碼連結,如果在參照此方法訓練資料出現任何問題的歡迎微信(BreakALegToday)交流探讨,共同進步。自己也是小白一個,希望能夠一步步有所改進~~~~也歡迎大佬提點指導。下面開始跑起來~

編譯運作

運作環境及準備

  1. 筆記本(最好有帶gpu的電腦)
  2. pytorch版yolov3
  3. Win10系統:

    3.1 安裝Git

  4. python環境及編譯器

    4.1 安裝python3.7

    4.2 安裝pycharm

    4.3 安裝pipenv 建構虛拟環境(嫌麻煩的可以安裝AnaConda)

    4.4 下載下傳labelImg标注工具

  5. 安裝CUDNN+CUDA加速運作,教程

安裝編譯環境

  1. 安裝源檔案及建構python虛拟環境

選擇一個路徑,打開powershell(在檔案夾空白處shift+滑鼠右鍵)輸入以下代碼

git clone https://github.com/ultralytics/yolov3.git
           
win10+pytorch+yolov3 訓練爬取資料寫在前頭編譯運作拓展錯誤彙總小結

轉移到yolov3檔案夾下,使用pipenv shell建立該檔案夾下的虛拟環境。

pipenv shell
           
win10+pytorch+yolov3 訓練爬取資料寫在前頭編譯運作拓展錯誤彙總小結
  1. 安裝yolov3所需環境

    源址中提到所需的環境和安裝方式,報Error.1的錯誤

    win10+pytorch+yolov3 訓練爬取資料寫在前頭編譯運作拓展錯誤彙總小結
pip3 install torch===1.3.1 torchvision===0.4.2 -f https://download.pytorch.org/whl/torch_stable.html
pip3 install opencv-python
pip3 install tqdm
pip3 install matplotlib
           

安裝完成後都會有Successfully installed xxx的提示,numpy在安裝torch時已經安裝,matplotlib是程式中畫圖有用到

收集資料

  1. 一些公開資料(持續更新)

    紅細胞資料集

    螺母資料集

    昆蟲資料集

  2. 收集自己資料

    若不想收集資料的話可以使用上述資料。如果想訓練自己特定的目标時,則需要先收集資料。

    選擇免費無水印的圖檔庫pixabay,相應的收集參照教程

    pycharm建立一個collect.py

    win10+pytorch+yolov3 訓練爬取資料寫在前頭編譯運作拓展錯誤彙總小結
    pixabay的組織形式有點變化,在上述教程上稍微做了些改動,主要是連結位址的變化,可參看源碼

運作成功後如下,從圖檔第3頁開始總共下載下傳1頁

win10+pytorch+yolov3 訓練爬取資料寫在前頭編譯運作拓展錯誤彙總小結

下載下傳完成後,先删除一些無效圖檔或不相關圖檔,再進行标注,标注工具LabelImg

win10+pytorch+yolov3 訓練爬取資料寫在前頭編譯運作拓展錯誤彙總小結

可以在view裡面設定自動儲存等,快捷鍵d下一張圖,a上一張圖,w框選器

win10+pytorch+yolov3 訓練爬取資料寫在前頭編譯運作拓展錯誤彙總小結

标注完成後更改儲存路徑,每一張圖檔都有對應的一張xml的

進行配置

  1. 資料拷貝至data目錄下

    本次訓練采用紅細胞來訓練,可參考,下載下傳後的資料放到Data檔案夾中并将JPEGImages重命名為Images

    win10+pytorch+yolov3 訓練爬取資料寫在前頭編譯運作拓展錯誤彙總小結
  2. 劃分資料

    運作根目錄下的maketxt.py将資料集劃分,再運作labelPy.py擷取圖像路徑及标注資訊

    win10+pytorch+yolov3 訓練爬取資料寫在前頭編譯運作拓展錯誤彙總小結
  3. 配置檔案

    配置訓練資料和網絡結構,在data檔案夾下添加ReadBlood.data 以及ReadBlood.names

    ReadBlood.data

classes=1
train=data/train.txt
valid=data/test.txt
names=data/RedBlood.names
backup=backup/
           

ReadBlood.names

RedBloodCeil
           

在cfg檔案夾yolov3-tiny.cfg配置搜尋yolo,更改所有[yolo]下的classes和上面一個filters,隻需更改一個

win10+pytorch+yolov3 訓練爬取資料寫在前頭編譯運作拓展錯誤彙總小結

同時更改cfg中的batch類

win10+pytorch+yolov3 訓練爬取資料寫在前頭編譯運作拓展錯誤彙總小結

執行訓練

  1. 準備權重檔案

    直接運作會報錯,需準備權重檔案,參照Solution.2下載下傳權重yolov3-tiny.weighs 并放于weights檔案夾下

    win10+pytorch+yolov3 訓練爬取資料寫在前頭編譯運作拓展錯誤彙總小結
  2. 執行訓練

    在pycharm的terminal中運作下列代碼

python train.py --data data/RedBlood.data --cfg cfg/yolov3-tiny.cfg --weights weights/yolov3-tiny.weights --epochs 10
           
win10+pytorch+yolov3 訓練爬取資料寫在前頭編譯運作拓展錯誤彙總小結

能夠開始訓練,如果安裝了CUDNN CUDA的話能夠看到GPU的使用情況,此處用的為CPU訓練~~有示例未使用了轉換的權重檔案進行處理,詳見Expend.3

win10+pytorch+yolov3 訓練爬取資料寫在前頭編譯運作拓展錯誤彙總小結

訓練完成後的顯示上圖,并在文檔中生成一個best.pt的權重檔案

win10+pytorch+yolov3 訓練爬取資料寫在前頭編譯運作拓展錯誤彙總小結

同時我用帶GPU的電腦訓練了另一類資料,效果還可以,訓練完成結果如上。

測試訓練結果

在images裡面随機挑幾張圖檔放入simple中,運作如下指令

python detect.py --data data/rbc.data --cfg cfg/yolov3-tiny.cfg --weights weights/best.pt
           
win10+pytorch+yolov3 訓練爬取資料寫在前頭編譯運作拓展錯誤彙總小結
win10+pytorch+yolov3 訓練爬取資料寫在前頭編譯運作拓展錯誤彙總小結
win10+pytorch+yolov3 訓練爬取資料寫在前頭編譯運作拓展錯誤彙總小結

在output裡面有一系列檢測結果,可以看到訓練的效果一般很多誤檢測。

拓展

Expend.1 為什麼不用AnaConda來建構環境?

使用pipenvl而不用Anaconda的原因是因為之前在做别的項目時,在pyinstaller打包exe時使用pipenv建構的純淨環境能夠極大的減少exe的大小。是以一直使用pipenv建構虛拟環境,如果沒有這方面需求的可以考慮直接用AnaConda

Expend.2 為什麼使用yolov3-tiny.cf來配置?

所需的gpu資源小

Expend.3 使用改造後的weights進行finetune?

之前配置過c++版本的yolov3 生成有.exe的darknet

win10+pytorch+yolov3 訓練爬取資料寫在前頭編譯運作拓展錯誤彙總小結

在powershell中運作可以得到yolov3-tiny.conv.15

./darknet partial cfg/yolov3-tiny.cfg yolov3-tiny.weights yolov3-tiny.conv.15 15
           
win10+pytorch+yolov3 訓練爬取資料寫在前頭編譯運作拓展錯誤彙總小結

在源碼中附有該conv.15

Expend.4 攝像頭檢測

首先将detect.py中的資料改一下

再運作

python detect.py --cfg cfg/yolov3-tiny.cfg --weights weights/best.pt --source 0
           

錯誤彙總

Error.1:yoloV3運作需要上述環境,直接參照安裝源址或在pycharm裡面安裝時pytorch報安裝失敗

win10+pytorch+yolov3 訓練爬取資料寫在前頭編譯運作拓展錯誤彙總小結

Solution.1:去官方網站上下載下傳安裝指令

win10+pytorch+yolov3 訓練爬取資料寫在前頭編譯運作拓展錯誤彙總小結

Error.2:不轉換權重時出現的錯誤

win10+pytorch+yolov3 訓練爬取資料寫在前頭編譯運作拓展錯誤彙總小結

預設權重檔案為weights/ultralytics68.pt,而直接運作時,發現在weights檔案夾下無該類檔案,故進行下載下傳,而國内又被屏蔽。是以需要自己下載下傳後轉換

Solution.2:

官網下載下傳權重檔案

win10+pytorch+yolov3 訓練爬取資料寫在前頭編譯運作拓展錯誤彙總小結

小結

上述源碼連結還有很多待完善的部分,如下:

problem.1:直接用下載下傳的weight和轉換後conv.15訓練的差別多大,或者說finetune的技巧?(貌似conv.15是保留相應的前15層權重最後一層不要??)

problem.2:如何用我訓練的資料連接配接攝像頭進行動态識别? 參見Expend.4

problem.3:粗略通熟的了解算法,以及能夠作哪些調整對訓練有比較大的幫助,減少時間、提高精度等等?

problem.4:如何部署到手機上進行操作?

以上問題一個個慢慢學習逐漸解決,首要目标!先能用再來優~附上張微信名片,歡迎交流和指導,再接再厲!

win10+pytorch+yolov3 訓練爬取資料寫在前頭編譯運作拓展錯誤彙總小結

繼續閱讀