WIN10使用YOLOX训练自己的数据集(图解超详细)
下载YOLOX源码
GitHub网址:https://github.com/Megvii-BaseDetection/YOLOX
配置环境,修改源码
添加权重文件
- 新建weights文件夹
- 下载yolox_s.pth权重:https://download.csdn.net/download/qq_44824148/75506518。若不方便下载,可评论区留言,可发邮箱。
建立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
文件夹,可以看到自己测试的结果