close

 

簡單來說這一篇是為了紀念一下我這兩個禮拜的踩坑過程, 可能會陸續地補充和新增, 但整體來說, 這過程中遇到了太多網路上沒有碰過的事情, 幾乎所有彎路都走過一遍, 但也慶幸是這樣, 讓我印象更加深刻許多.

 

 

1. Yolov7 clone

  • 要使用Yolov7當然是要先去下載這個版本, 並且放在D:\Yolov7;
  • 我們在D曹創一個新的資料夾>yolov7>在裡面clone; 至於為什麼要這樣做, 只是因為方便分層以及等等訓練而已.
    • git clone https://github.com/WongKinYiu/yolov7

 

2. 環境安裝 ( 使用anaconda )

  • 我只能說我真的反覆完這個玩到指令都能背了
    • CD D:\yolov7\yolov7
    • Conda create –name yolov7 python=3.9 && activate yolov7
    • Pip install -r requirements.txt
  • 在這個資料夾裡面, 創建新的python環境(3.9), 這裡是第一個坑, 網路上很多說什麼一定要用3.7…3.8之類的, 然後各種恐嚇你說沒有一樣絕對失敗, 不用怕, 這裡直接上3.9就對了

 

3. 接下來下載權重

 

  • D:\yolov7\yolov7底下開一個新的資料夾weights, yolov7.pt放在資料夾內

 

 

4. 配置CUDA & cuDNN & pytorch

 

  • 這邊是重點, 一定要按照這個方式配置, 不然絕對失敗.

 

[ CUDA ]

未命名

先找到自己電腦的CUDA版本, 例如我的電腦是使用 NVIDIA CUDA 11.6.110 driver ( 找的方式 > 右下角Nvidia 設定 > ICON右鍵控制面板 > 說明 (上方 )> 系統資訊然後, NVIDIA 官方網站下載對應的CUDA Tool

image

  • 下載 > 安裝 > C:\Program Files\NVIDIA GPU Computing Toolkit ( 安裝成功會看到這個資料夾 )

 

 

[ cuDNN ]

  • 因為我們是11.6, 所以我們需要去官網> 登陸    > 下載最新的版本

image

  • 下載下來後, 解壓縮, 你可以看到一個資料夾, 將資料夾裡面的三個資料夾 (bin, include, lib ) 覆蓋到 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.6 裡面去.

 

[ pytorch ]

最後我們安裝主角pytorch, 這一樣有版本的問題, 所以, 我們前往pytorch的官方網站, 並且找到CUDA 11.6 > 複製指令

 

image

 

  • 我們只需要conda那邊開始的指令就夠了
  • 回到anaconda的那個視窗 > 貼上這行指令

 

 

5. 下載訓練集 (datasets )

 

  • 我們不可能只使用yolov7裡面的東西, 我們勢必要訓練自己的模組, 所以這裡先去免費網站下載一個

 

 

6. 更改訓練路徑

 

  • D: \YOLOV7\Mask\data.yaml
  • 修改data.yaml

image

image

 

  • 然後我們也要指定放權重的路徑

image

  • 我們在yolov7>cfg>training>複製yolov7.yaml>改名成yolov7-mask
  • 將裡面修改一下,    NC = 2 , 因為我們只有兩個類別而已

image

7. 開始訓練

 

  • python train.py --weights weights/yolov7.pt --cfg cfg/training/yolov7-mask.yaml --data ../Mask/data.yaml  --batch-size 2

 

  • 你會看到yolov7>runs>train>exp>weights>產生兩個檔案best.pt & last.pt
  • 我們這裡使用到best.pt, 將這個檔案放到 yolovt>weights>這裡

 

8. 執行程式

 

  • Python detect.py –weight weights/best.pt –source ../mask/test/images/
  • 產生結果

 

image

image

 

image

 

image

 

 

 

 

 

 

 

 

 

踩坑實錄 < 不定期更新 >

1. libiomp5md.dll already initialized

  • 網路上大致上都會教你在train.py補上,

Import os

Os.environ[“KMP_DUPLICATE_LIB_OK”]=”TRUE”

  • 正確解法 > anacodna3 >envs>yolov7>Library>bin>mark    libiomp5md.dll &.pdb
  • 原因是因為我們在安裝pytorch的時候, 會自己安裝一個libiomp5md.dll, 所以整個環境裡面會有兩份一樣的libiomp5md.dll, 所以我們只要mark掉一個, 問題就能解決, 這樣也比較好的原因是因為, 我們如果有很多份程式都使用這個yolov7環境時, 我們就不需要每一個的detect.py都去加這行了.

 

2. 分頁檔太小,無法操作

  • 1. –batch-size 32 改成 2, 讓資源不要吃那麼多.
  • 2. 提升你的硬體設備.

 

 

3. Cuda out of memory Error

  • 1. 檢查 ( python, nvidia cuda driver version, cuDNN version, pytorch ), 版本是否都對應的上, 這裡我建議拿張紙筆寫下來, 第一個我證明過沒太大關係, 後面三個可以依次檢查.
  • 2. 換一台好一點的電腦 ( 我真的沒有在開玩笑, 我本身開發機GPU 2G, 結果就一直卡在這裡, 換了一台GPU 6G, 完美解決這問題 ).

 

 

 

這過程其實還有很多有趣的事情, 這一篇也不定期的更新, 將來等時間在多一些的時候, 我應該會想要換成medium ( https://medium.com/ ) 和 github來放我的文章, 但一想到轉移過程又是一個大工程....; 想到就覺得有點懶惰, 加上最近案子又多, 這部分還是多花時間想想囉.

 

 

 

 

 

 

 

arrow
arrow
    全站熱搜

    Eric 發表在 痞客邦 留言(2) 人氣()