WIN10使用YOLOX训练自己的数据集(图解超详细)

WIN10使用YOLOX训练自己的数据集(图解超详细)

下载YOLOX源码

GitHub网址:https://github.com/Megvii-BaseDetection/YOLOX

配置环境,修改源码

添加权重文件

建立VOCdevkit文件夹

在 datasets 文件夹下新建make_dir.py,内容如下:

import os

os.makedirs(r'VOCdevkit\VOC2007\Annotations')
os.makedirs(r'VOCdevkit\VOC2007\ImageSets\Main')
os.makedirs(r'VOCdevkit\VOC2007\JPEGImages')

运行后,会生成如下的文件夹:
在这里插入图片描述

添加数据集

在Annotations和JPEGImages分别放入xml文件和图片

在这里插入图片描述

划分训练集和测试集

在 datasets 文件夹下新建make_voc_data.py,内容如下:

import os
import random

train_pr = 0.7

xml_names = os.listdir('VOCdevkit/VOC2007/Annotations')
nums = len(xml_names)

train_nums = int(train_pr * nums)

list = range(nums)
train_index = random.sample(list, train_nums)

train_val = open('VOCdevkit/VOC2007/ImageSets/Main/trainval.txt', 'w')
test = open('VOCdevkit/VOC2007/ImageSets/Main/test.txt', 'w')

for i in list:
    name = xml_names[i].split('.')[0] + '\n'
    if i in train_index:
        train_val.write(name)
    else:
        test.write(name)

train_val.close()
test.close()

运行后,会生成如下的文件:
在这里插入图片描述

修改 类别 为自己训练样本的 classes

修改文件的路径:YOLOX-main\exps\example\yolox_voc\yolox_voc_s.py

将num_classes的值修改为自己训练的种类数量,例如:

self.num_classes = 5

修改类别

修改文件的路径:YOLOX-main\yolox\data\datasets\voc_classes.py

VOC_CLASSES修改为自己数据集的类别

VOC_CLASSES=(
    'cat',
    'person',
    'horse',
    'car',
    'dog'
)

开始训练

在 Terminal 中输入下面的命令:
python tools/train.py -f exps/example/yolox_voc/yolox_voc_s.py -d 1 -b 1 -c weights/yolox_s.pth
在这里插入图片描述

训练过程中可能出现的报错

ModuleNotFoundError: No module named ‘yolox’

解决方法:在train.py 最上面添加如下代码

import sys
sys.path.append(r'D:\pythonProjects\YOLOX-main2')  #路径为自己的绝对路径

FileNotFoundError: [Errno 2] No such file or directory: ‘D:\XXX\datasets\VOCdevkit\VOC2012\ImageSets\Main\trainval.txt’

解决办法:将2012格式的去掉,变为如下的代码

image_sets=[('2007', 'trainval')],

找不到xml,FileNotFoundError: [Errno 2] No such file or directory: ‘000009.xml’

解决方法:改为相对路径
修改文件的路径:YOLOX-main2\yolox\evaluators\voc_eval.py

改成如下代码:

tree = ET.parse(os.path.join(r'datasets/VOCdevkit/VOC2007/Annotations',filename))

训练完成

训练完成后,会自动生成YOLOX_outputs\yolox_voc_s文件夹,在文件夹中选择best_ckpt.pth复制到 weights文件夹

tools\demo.py中的 COCO_CLASSES修改为 VOC_CLASSES,导入的头文件修改为from yolox.data.datasets.voc_classes import VOC_CLASSES

测试

在 Terminal 中输入下面的命令:
python tools/demo.py image -f exps/example/yoLox_voc/yolox_voc_s.py -c weights/best_ckpt.pth --device gpu --save_result --path assets/
在这里插入图片描述

测试完成后,会自动生成YOLOX_outputs\yolox_voc_s\vis_res文件夹,可以看到自己测试的结果
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_44824148/article/details/122445760