Windows10下搭建YOLOX环境以及训练自己数据集

目录:

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

效果:

Windows10下搭建YOLOX环境以及训练自己数据集_第1张图片

 3. 训练自己的数据集

此处制作数据集的步骤不再赘述。

3.1 首先按要求设置文件夹目录:

Windows10下搭建YOLOX环境以及训练自己数据集_第2张图片

 将图片放入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 如下:

Windows10下搭建YOLOX环境以及训练自己数据集_第3张图片

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

Windows10下搭建YOLOX环境以及训练自己数据集_第4张图片

Windows10下搭建YOLOX环境以及训练自己数据集_第5张图片

修改num_classes改为自己的类别数量

3.5 修改yolox/data/datasets/voc_classes.py为自己的类别

Windows10下搭建YOLOX环境以及训练自己数据集_第6张图片

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

Windows10下搭建YOLOX环境以及训练自己数据集_第7张图片

在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'

Windows10下搭建YOLOX环境以及训练自己数据集_第8张图片

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

继续上一批次恢复训练的话,改成如下形式:

Windows10下搭建YOLOX环境以及训练自己数据集_第9张图片

将—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

 运行截图:

Windows10下搭建YOLOX环境以及训练自己数据集_第10张图片为了演示,本次训练,就训练了2轮。

结果存入:

Windows10下搭建YOLOX环境以及训练自己数据集_第11张图片

 测试:

4.1 测试前修改demo.py如下:

注释掉COCO_CLASSES,加入VOC_CLASSES

Windows10下搭建YOLOX环境以及训练自己数据集_第12张图片

Windows10下搭建YOLOX环境以及训练自己数据集_第13张图片

Windows10下搭建YOLOX环境以及训练自己数据集_第14张图片

4.2 测试代码

python tools/demo.py image -f exps/example/yolox_voc/yolox_voc_s.py -c YOLOX_outputs/yolox_voc_s/latest_ckpt.pth --path assets/001.jpg --conf 0.3 --nms 0.65 --tsize 640 --save_result --device gpu

 结果:

Windows10下搭建YOLOX环境以及训练自己数据集_第15张图片

因为训练轮数为2轮,所以识别框不是很准确。

到此,YOLOX复现成功。

完结!

你可能感兴趣的:(深度学习,YOLOX,计算机视觉,人工智能,目标检测,pytorch)