目錄:
1.必要環境
2.YOLOX安裝及模型推理
3.訓練自己資料集及測驗
1.必要環境
我的環境是:Windows10+python3.9+CUDA11.1+CUDNN8.1.1
在此環境配置不再多說,網上有很多的教程,本篇主要還是記錄YOLOX的使用,(這里安裝torch有個小坑,如果起初未安裝torch,使用requirements.txt安裝,則安裝的為cpu版本,而此處我們使用的是gpu版本,注意別踩坑)

2.YOLOX安裝
配置YOLOX的環境
2.1 進入github官網下載原始碼:GitHub - Megvii-BaseDetection/YOLOX: YOLOX is a high-performance anchor-free YOLO, exceeding yolov3~v5 with MegEngine, ONNX, TensorRT, ncnn, and OpenVINO supported. Documentation: https://yolox.readthedocs.io/
https://github.com/Megvii-BaseDetection/YOLOX
2.2 安裝依賴包:
pip install -r requirements.txt
2.3 安裝yolox
python setup.py install
2.4 下載apex,解壓到專案檔案夾內 地址:mirrors / nvidia / apex · GIT CODE
2.5 cd到apex檔案夾內,安裝apex
cd apex-master
python setup.py install
2.6 回傳yolox的主檔案夾下,安裝pycocotools
pip install pycocotools
2.7下載預訓練模型,在2.1步驟給的網址中即可下載
2.8測驗效果
測驗圖片指令:
python tools/demo.py image -f exps/default/yolox_s.py -c ./yolox_s.pth --path assets/dog.jpg --conf 0.3 --nms 0.65 --tsize 640 --save_result --device gpu
效果:

3. 訓練自己的資料集
此處制作資料集的步驟不再贅述,
3.1 首先按要求設定檔案夾目錄:

將圖片放入JPEGImages中,xml檔案放入Annotations
3.2 使用txt_write.py,劃分資料集,并寫入main檔案夾下,生成trainval.txt和test.txt,
import os
import random
trainval_percent = 0.1
train_percent = 0.9
xmlfilepath = 'E:/YOLOX-main/datasets/VOC/VOCdevkit/VOC2007/Annotations'
txtsavepath = 'E:/YOLOX-main/datasets/VOC\VOCdevkit/VOC2007/ImageSets'
total_xml = os.listdir(xmlfilepath)
num = len(total_xml)
list = range(num)
tv = int(num * trainval_percent)
tr = int(tv * train_percent)
trainval = random.sample(list, tv)
train = random.sample(trainval, tr)
ftest = open('E:/YOLOX-main/datasets/VOC/VOCdevkit/VOC2007/ImageSets/Main/test.txt', 'w')
ftrain = open('E:/YOLOX-main/datasets/VOC/VOCdevkit/VOC2007/ImageSets/Main/trainval.txt', 'w')
for i in list:
name = total_xml[i][:-4] + '\n'
if i in trainval:
ftest.write(name)
else:
ftrain.write(name)
ftrain.close()
ftest.close()
3.3 修改 yolox/data/dataloading.py 如下:

3.4 修改exps/example/yolox_voc/yolox_voc_s.py如下:


修改num_classes改為自己的類別數量

3.5 修改yolox/data/datasets/voc_classes.py為自己的類別

3.6 修改yolox/evaluators/voc_eval.py 如下

在yolox/exp/yolox_base.py
修改self.data_num_workers = 0
執行python setup.py install 更新yolox
此時運行訓練代碼報如下錯誤:Error #15: Initializing libiomp5md.dll, but found libiomp5md.dll already initialized.
方法解決:在train.py檔案中添加代碼:
import os
os.environ['KMP_DUPLICATE_LIB_OK'] = 'TRUE'

3.7 運行代碼開始訓練 :
python tools/train.py -f exps/example/yolox_voc/yolox_voc_s.py -d 1 -b 4 --fp16 -o -c yolox_s.pth
-d 使用顯卡個數
-b 批次大小
–fp16 是否開啟半精度訓練
-c 加載預訓練模型
如果出現CUDA out of memory記憶體溢位,將–fp16 -o去掉,代碼改為如下:
python tools/train.py -f exps/example/yolox_voc/yolox_voc_s.py -d 1 -b 4 -c yolox_s.pth
繼續上一批次恢復訓練的話,改成如下形式:

將—resume改為True,-c后面跟接要繼續訓練的權重檔案
代碼如下:
python tools/train.py -f exps/example/yolox_voc/yolox_voc_s.py -d 1 -b 4 -c YOLOX_outputs/yolox_voc_s/latest_ckpt.pth
運行截圖:
為了演示,本次訓練,就訓練了2輪,
結果存入:

測驗:
4.1 測驗前修改demo.py如下:
注釋掉COCO_CLASSES,加入VOC_CLASSES



4.2 測驗代碼
python tools/demo.py image -f exps/default/yolox_s.py -c ./latest_ckpt.pth --path assets/001.jpg --conf 0.3 --nms 0.65 --tsize 640 --save_result --device gpu
結果:

因為訓練輪數為2輪,所以識別框不是很準確,
到此,YOLOX復現成功,
完結!
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/381246.html
標籤:python
上一篇:影像分割之Swin-Unet分享
下一篇:TDTX【個人簡歷】
