目錄
- 前言
- 環境搭建
- Anaconda
- yolov5克隆到本地
- 安裝相關依賴庫
- 安裝CUDA和cuDNN(有顯卡需求的話)
- pytorch單獨再次安裝
- 測驗官方demo
- detect.py識別 bus.jpg
- train.py訓練模型
- 訓練好后的權重 pt拿去 再次detect.py識別
- labelimg相關使用
- 下載
- 使用
- 從零開始的train.py訓練生活
- 找個視頻識別下
- 報錯相關
- 報錯 OSError: [WinError 1455] 頁面檔案太小,無法完成操作,
- 不吃GPU 實則環境錯誤的情況
前言
環境搭建
Anaconda
本地環境 Anaconda
python版本選的 python3.8.12,創建環境


yolov5克隆到本地
我這采取的方案是fork了倉庫 同步到了gitee,然后clone

安裝相關依賴庫
采用pycharm打開工程,配置為 conda的環境

根據官方說明檔案進行安裝
激活我們剛才創建的環境 py38-img

執行pip命令 pip install -r requirements.txt

完成安裝,
ps:我這已經換了源
路徑:C:\Users\用戶名\pip
pip.ini 內容為:
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
[install]
trusted-host = https://pypi.tuna.tsinghua.edu.cn

安裝CUDA和cuDNN(有顯卡需求的話)
參考文章:win10安裝CUDA和cuDNN的正確姿勢
CUDA下載頁面:https://developer.nvidia.com/cuda-downloads
cuDNN下載頁面:https://developer.nvidia.com/rdp/cudnn-download
根據教程 安裝和配置好環境, cudnn里面的檔案 需要復制到 cuda的對應檔案夾下,這里訪問比較困難
我這同步到了阿里云盤:「cuda_11.6.0_511.23_windows.exe」https://www.aliyundrive.com/s/6Q4yRH9nJ8Q

環境變數的配置
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.6
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.6\lib\x64

安裝完后的測驗 nvcc -V

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.6\extras\demo_suite執行測驗程式

這是我的相關引數

pytorch單獨再次安裝
因為pytorch這塊安裝有 cpu only的版本 所以我掉了很多次坑
參考:Windows環境下Anaconda3安裝配置pytorch詳細步驟(踩坑匯總)
Pytorch版本、CUDA版本與顯卡驅動版本的對應關系
注意版本是否對應!
pytorch官網:https://pytorch.org/
根據你的需求生成安裝命令, 后綴的 -c pytorch刪掉
conda install pytorch torchvision torchaudio cudatoolkit

查看 安裝的相關庫 conda list ,沒有帶 cpuonly 對頭

測驗官方demo
detect.py識別 bus.jpg
原始碼里面寫了相關的使用命令和傳參,當然直接跑多半會報錯

正常情況運行命令 python detect.py --weights yolov5s.pt --source data\images\bus.jpg,可以完成圖片識別,顯示結果到runs下的exp里


當然 細心的你會發現缺少了 對應的權重檔案 yolov5s.pt,相應的權重檔案可以在官方github倉庫下載:https://github.com/ultralytics/yolov5/releases
當然如果你沒有下載,例程也會自動幫你運行下載程式,不過網路不好的情況下多半會出現443等報錯然后下載失敗,

另外你例程會下載字體包 Arial.ttf,如果下載失敗可以自行去提示的官網下載,然后存放在指定路徑下 C:\Users\用戶名\AppData\Roaming\Ultralytics,并安裝字體包,
我這阿里云盤也上傳了:https://www.aliyundrive.com/s/xzgh5fr6yLU
train.py訓練模型
原始碼里也同樣提供了 參考的命令 當然直接跑也是運行不了的啦

當然我這提供了運行命令,先創建檔案夾 datasets,然后將coco128資料集下載后解壓進去(當然例程會自己下載,不過我這下載還是失敗了)
$ cd datasets
$ python ..\train.py --data ..\data\coco128.yaml --img 128
例程會讀取 data\coco128.yaml 檔案,yaml里面寫了下載的資料集路徑,你可以手動下載然后解壓到datasets里面
https://ultralytics.com/assets/coco128.zip


再次執行我們的訓練命令 ,開始訓練
$ cd datasets
$ python ..\train.py --data ..\data\coco128.yaml --img 128

當然我這不訓練這個了,自己隨便搞個test訓練訓練(這個test訓練集 由labelimg 工具協助生成) labelimg相關使用可以參考下面的部分 傳送門

開始訓練 python ..\train.py --data test\test.yaml --epochs 3 --batch-size 2 --weights ..\runs\train\exp26\weights\last.pt --nosave --cache

報錯 OSError: [WinError 1455] 頁面檔案太小,無法完成操作,你可以調小 --batch-size
配合 命令 nvidia-smi,查看顯卡資訊

下圖轉自 yolov5訓練相關引數解釋

相關訓練引數可參考:yolov5訓練相關引數解釋
我們調小 --batch-size python ..\train.py --data test\test.yaml --epochs 3 --batch-size 2 --weights ..\runs\train\exp26\weights\last.pt --nosave --cache,成功完成訓練,訓練結果默認存盤在 runs\train\exp 等下面,我們的權重檔案 生成了2個 last.pt, best.pt ,當然可能你只會生成1個last.pt,問題不大,繼續練,

訓練好后的權重 pt拿去 再次detect.py識別
相關命令
$ cd datasets
$ python ..\detect.py --weights ..\runs\train\exp29\weights\best.pt --source test\test --conf-thres 0.5
原始碼有各傳參的解釋,我們這追加了 --conf-thres 傳入

因為這個模型我已經提前鍛煉過,所以 準確性較高,

置信度還是很不錯的 ,當然你剛開始訓練的話,基本也就0.1差不多(粗略估計)

labelimg相關使用
下載
官方倉庫:https://github.com/tzutalin/labelImg/releases

使用
解壓,運行exe

洗掉默認提供的類名(根據自己需要)


我這推薦的幾個實用的快捷鍵
w 創建選框
a 前一張圖片
d 后一張圖片
ctrl+S 保存
準備需要標注的圖片資料集
我這按自己喜歡的結構創建,images 和 labels 檔案夾 和 yaml檔案,在外面套個檔案夾


我們將要標注的原始圖片放在 images檔案夾內
從百度爬點圖片


然后我們開始用工具進行標注,“open dir”打開我們需要標注的圖片的檔案夾

圖片會自動加載進來

“change save dir”設定保存labels的路徑為我們的 labels

修改標注的格式為yolo(點擊切換)

然后就是使用我們的快捷鍵 進行框選區域和打標簽了,(記得保存)

標注完,保存后,生成的配置都在 對應檔案夾下,classes.txt為所有的labels,其他單個檔案為 對應label的引數

修改 yaml檔案的相關配置
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
path: ikaros # dataset root dir
train: images # train images (relative to 'path') 128 images
val: images # val images (relative to 'path') 128 images
test: # test images (optional)
# Classes
nc: 1 # number of classes
names: ['ikaros'] # class names

拉去訓練,1組報錯

追加一個類

改yaml為
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
path: ikaros # dataset root dir
train: images # train images (relative to 'path') 128 images
val: images # val images (relative to 'path') 128 images
test: # test images (optional)
# Classes
nc: 2 # number of classes
names: ['ikaros',
'ZhiShu'] # class names
從零開始的train.py訓練生活
前面準備作業做好后,開始訓練 先叫上GPU來100組俯臥撐(當然 你GPU兄弟累了 可以不叫他 誒嘿~)
$ cd datasets
$ python ..\train.py --data ikaros\ikaros.yaml --epochs 100 --batch-size 1 --nosave --cache



100組終于練好了,可以發現我們的鍛煉結果不咋滴哈,all mAP@.5只有 0.394,沒有0.5的置信度我很難辦事呀,兄弟還得練哈

我們先拿這個練完100組的權重兄去測一測,置信度閾值設為0.3
python ..\detect.py --weights ..\runs\train\exp35\weights\best.pt --source ikaros\images --conf-thres 0.3

還行 還得多練練

置信度閾值設為0.01
python ..\detect.py --weights ..\runs\train\exp35\weights\best.pt --source ikaros\images --conf-thres 0.01

差不多了 在多練練,前面練好的pt不要丟,叫上繼續訓練 再來100組
python ..\train.py --data ikaros\ikaros.yaml --epochs 100 --weights ..\runs\train\exp35\weights\best.pt --batch-size 1 --nosave --cache

再次 測驗 python ..\detect.py --weights ..\runs\train\exp36\weights\last.pt --source ikaros\images --conf-thres 0.5,差不多得了,有興趣接著練

增加了樣本數,繼續鍛煉
python ..\train.py --data ikaros\ikaros.yaml --epochs 100 --weights ..\runs\train\exp36\weights\last.pt --batch-size 1 --workers 4 --nosave --cache

mAP@.5 0.745 效果不錯了

找個視頻識別下
python ..\detect.py --weights ..\runs\train\ikaros\ikaros.pt --source ..\data\videos\FallenDown.mp4

報錯相關
報錯 OSError: [WinError 1455] 頁面檔案太小,無法完成操作,
增加分配虛擬記憶體,然后重啟,調小 --batch-size,或者改 --batch-size -1 自動識別(不過我這就經常崩潰)
減小 --workers



python ..\train.py --data ikaros\ikaros.yaml --epochs 100 --weights ..\runs\train\exp36\weights\last.pt --batch-size 1 --workers 4 --nosave --cache
不吃GPU 實則環境錯誤的情況
基本會報錯 UserWarning: User provided device_type of 'cuda', but CUDA is not available.
看看 CUDA 相關環境是否裝好;看 pytorch版本是否匹配,是否錯裝了 cpuonly版;命令是否寫錯了

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/419982.html
標籤:AI
下一篇:條件期望求解快速排序演算法復雜度
