簡單來說這一篇是為了紀念一下我這兩個禮拜的踩坑過程, 可能會陸續地補充和新增, 但整體來說, 這過程中遇到了太多網路上沒有碰過的事情, 幾乎所有彎路都走過一遍, 但也慶幸是這樣, 讓我印象更加深刻許多.
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
- 下載 > 安裝 > C:\Program Files\NVIDIA GPU Computing Toolkit ( 安裝成功會看到這個資料夾 )
[ cuDNN ]
- 因為我們是11.6, 所以我們需要去官網> 登陸 > 下載最新的版本
- 下載下來後, 解壓縮, 你可以看到一個資料夾, 將資料夾裡面的三個資料夾 (bin, include, lib ) 覆蓋到 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.6 裡面去.
[ pytorch ]
最後我們安裝主角pytorch, 這一樣有版本的問題, 所以, 我們前往pytorch的官方網站, 並且找到CUDA 11.6 > 複製指令
- 我們只需要conda那邊開始的指令就夠了
- 回到anaconda的那個視窗 > 貼上這行指令
5. 下載訓練集 (datasets )
- 我們不可能只使用yolov7裡面的東西, 我們勢必要訓練自己的模組, 所以這裡先去免費網站下載一個
- https://public.roboflow.com/
- 這裡我選擇了一個叫口罩的來做測試
6. 更改訓練路徑
- D: \YOLOV7\Mask\data.yaml
- 修改data.yaml
- 然後我們也要指定放權重的路徑
- 我們在yolov7>cfg>training>複製yolov7.yaml>改名成yolov7-mask
- 將裡面修改一下, NC = 2 , 因為我們只有兩個類別而已
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/
- 產生結果
踩坑實錄 < 不定期更新 >
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來放我的文章, 但一想到轉移過程又是一個大工程....; 想到就覺得有點懶惰, 加上最近案子又多, 這部分還是多花時間想想囉.
留言列表