使用YOLOX訓練自己的資料集
- 前言
- 一、安裝Anaconda
- 二、安裝YOLOX
- 1.筆者掉入的坑
- 2.開始安裝
- 3.測驗YOLOX
- 三、訓練COCO128
- 四、訓練自己的資料集
前言
前面的文章,筆者在系統環境下使用OpenCV對YOLOX模型進行推理;在本節,我們需要安裝虛擬環境使用YOLOX訓練自己的資料集,
一、安裝Anaconda
去Anaconda官網下載最新的版本

如果查詢到版本號,也可使用命令列:
wget https://repo.anaconda.com/archive/Anaconda3-2021.11-Linux-x86_64.sh
然后執行安裝:
sudo bash Anaconda3-2021.11-Linux-x86_64.sh
安裝完成后驗證

如果沒有出現則需要添加環境變數:
sudo vim ~/.bashrc
在最后添加:
export PATH=$PATH:/home/zrd/anaconda3/bin
路徑需要換成自己的,然后執行
source ~/.bashrc
二、安裝YOLOX
1.筆者掉入的坑
在YOLOX的系統推理環境中,筆者安裝了最新的CUDA11.5和對應的cuDNN版本,順利的使用了GPU推理,所以在conda虛擬環境中,筆者也準備直接使用系統的環境的CUDA,然而事與愿違,無法呼叫CUDA進行GPU訓練,

查詢后發現目前pytorch的最高版本是1.10,而它能支持的CUDA最高版本是11.3,詳見Pytorch官網,這樣的話我們就只能在conda環境中重新安裝CUDA10.2或者CUDA11.3,所以安裝pytorch訓練環境的準則是,pytorch和CUDA以及cuDNN版本需要匹配,感謝好友陳總對此的指導,
2.開始安裝
一,創建&進入虛擬環境
conda create -n yolox python=3.8
conda activate yolox
二,安裝pytorch1.10+cuda11.3(如果系統環境支持則不需要此步驟)
conda install pytorch torchvision torchaudio cudatoolkit=11.3 -c pytorch
三,按照官網安裝YOLOX
YOLOX-github
Step1. Install YOLOX.
git clone git@github.com:Megvii-BaseDetection/YOLOX.git
cd YOLOX
pip3 install -U pip && pip3 install -r requirements.txt
pip3 install -v -e . # or python3 setup.py develop
Step2. Install pycocotools.
pip3 install cython; pip3 install 'git+https://github.com/cocodataset/cocoapi.git#subdirectory=PythonAPI'
3.測驗YOLOX
下載yolox_s.pth權重檔案,放到datasets目錄下:

使用cpu推理:
python tools/demo.py image -n yolox-s -c datasets/yolox_s.pth --path assets/dog.jpg --conf 0.25 --nms 0.45 --tsize 640 --save_result --device cpu

使用gpu推理:
python tools/demo.py image -n yolox-s -c datasets/yolox_s.pth --path assets/dog.jpg --conf 0.25 --nms 0.45 --tsize 640 --save_result --device gpu

結果都保存在YOLOX_outputs目錄下:

三、訓練COCO128
提示:在訓練自己的資料集之前可以先使用官方的小資料集比如coco128測驗一下,看看是否環境有錯,如果coco128可以訓練的話再更換為自己的資料集,這樣如果發生錯誤能更好的定位,
關于coco128:
coco128是coco資料集的前128張圖片,一共有71個類而不是80,主要用來測驗,
在官方Train Custom Data中給出了coco128的下載地址,和訓練方法:

先不要修改任何檔案,只把coco128下載到datasets目錄即可:

使用exps/example/custom/yolox_s.py腳本訓練,這個腳本就是為coco128資料集準備的,后面訓練自己的資料集時可以據此修改:

訓練腳本:
python tools/train.py -f exps/example/custom/yolox_s.py -d 1 -b 8 --fp16 -o -c /path/to/yolox_s.pth
-d 1:number of gpu devices
-b 8:batch size, the recommended number for -b is num-gpu * 8
訓練中:

訓練完成:

訓練完成后會將權重保存在YOLOX_outputs/yolox_s/目錄下,選擇best_ckpt.pth進行推理測驗:
python tools/demo.py image -f exps/example/custom/yolox_s.py -c YOLOX_outputs/yolox_s/best_ckpt.pth --path assets/dog.jpg --conf 0.25 --nms 0.45 --tsize 640 --save_result --device gpu

去YOLOX_outputs/yolox_s/vis_res目錄下查看推理圖片,發現效果很差,沒有關系,因為coco128資料集太小了,
四、訓練自己的資料集
建議仿造coco128做自己的資料集,包括目錄結構(annotations train2017 val2017)和json檔案名(instances_train2017.json instances_val2017.json)等,這樣就不用修改組態檔的相關內容,
把自己的資料集同樣放到datasets目錄下,然后修改兩處配置,
一,yolox/data/datasets/coco_classes.py,把類名修改成自己的,

二,exps/example/custom/yolox_s_zrd.py,仿造yolox_s.py建立一個自己的訓練檔案

開始訓練:
python tools/train.py -f exps/example/custom/yolox_s_zrd.py -d 1 -b 8 --fp16 -o -c datasets/yolox_s.pth
訓練中:

訓練完成:

使用自己訓練的模型推理:
python tools/demo.py image -f exps/example/custom/yolox_s_zrd.py -c YOLOX_outputs/yolox_s_zrd/best_ckpt.pth --path datasets/zrodo_coco/val2017/0020.jpg --conf 0.25 --nms 0.45 --tsize 640 --save_result --device gpu

不戴口罩還抽煙的強哥

至此,YOLOX推理系列打完收工
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/376928.html
標籤:AI
