YOLOx 官方数据集训练方法1(VOC)
yolox的训练和测试方法可以参考下面视频:
1.准备工作
博主这里训练的数据集是视频中提供的,视频中还涉及到很多编译错误,博主这边都没遇到过。。。这就很神奇了!
按照博客《YOLOx 安装开发环境》,我们先把开发环境安装好。
准备数据集:
将视频中提供的VOC2007数据集移动到datasets目录下:
VOC2007数据集下载地址:https://pan.baidu.com/s/1WGQHQmzIFY8rRYYU-4g-vQ
提取码:0ate

2.修改文件参数
进行训练之前,我们需要修改一些文件,注意修改如下:
1、修改“YOLOX-main\yolox\data\datasets\voc_classes.py”文件,为了方便演示,我们训练的数据集只提取了5张图片,一共有4类:"cat","car","person","horse",文件修改如下:
#!/usr/bin/env python3
# -*- coding:utf-8 -*-
# Copyright (c) Megvii, Inc. and its affiliates.
# VOC_CLASSES = ( '__background__', # always index 0
VOC_CLASSES = (
"cat",
"car",
"person",
"horse"
)
2、修改“YOLOX-main\exps\example\yolox_voc\yolox_voc_s.py”文件。
1)将self.num_classes种类参数值改成4;
2)新增“ self.data_num_workers = 0”设置,windows下只支持单线程,所以要设置成0,linux下可以设置成1(博主没试过)
3)由于我们只要2007的数据集,所以需要将“ image_sets=[('2007', 'trainval'), ('2012', 'trainval')],”修改成“ image_sets=[('2007', 'trainval')],”

3、修改“YOLOX-main\tools\demo.py”文件
将
from yolox.data.datasets import COCO_CLASSES
改成
from yolox.data.datasets import COCO_CLASSES
同时将“COCO_CLASSES”全部替换成“VOC_CLASSES”
4、修改“YOLOX-main\yolox\evaluators\voc_eval.py”文件,解决在训练时,可能导致的无法找到xml文件的异常。
将
tree = ET.parse(filename)
改为
tree = ET.parse(os.path.join('datasets/VOCdevkit/VOC2007/Annotations', filename))
3.环境配置
注意:训练时如果报下面这个错误,则需要配置环境变量。
Command '['where', 'cl']' returned non-zero exit status 1.
参考博客:https://blog.csdn.net/SINPER123/article/details/124920875
主要操作也就是添加下面两个环境变量(需要最新的Visual Studio环境)
1、新建环境变量INCLUDE,添加:(Include可能有多个版本,经验是选择新的)
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.34.31933\Include; C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\Ucrt; C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\Um; C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\shared; |
2、新建环境变量LIB, 添加:
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.34.31933\Lib\X64; C:\Program Files (x86)\Windows Kits\10\Lib\10.0.22000.0\Ucrt\X64; C:\Program Files (x86)\Windows Kits\10\Lib\10.0.22000.0\Um\X64; |
3.开始训练
说明:如果想使用GPU进行训练,请在train.py文件的前面添加下面代码
import os
os.environ['CUDA_VISIBLE_DEVICES']='0'

然后执行下面命令开始训练
python tools/train.py -f exps/example/yolox_voc/yolox_voc_s.py -d 1 -b 8 -c yolox_s.pth
训练完成之后,会生成这么一个目录“YOLOX-main\YOLOX_outputs\yolox_voc_s”,而我们最终要使用的是“best_ckpt.pth”文件。


4.测试
执行下面命令,来测试我们的“best_ckpt.pth”文件。
注意:记得将测试图片拷贝到“YOLOX-main\assets”目录下面。
python tools/demo.py image -f exps/example/yolox_voc/yolox_voc_s.py -c ./YOLOX_outputs/yolox_voc_s/best_ckpt.pth --path assets/000009.jpg --conf 0.3 --nms 0.65 --tsize 640 --save_result --device gpu
识别结果的文件保存在“YOLOX-main\YOLOX_outputs\yolox_voc_s\vis_res\2023_02_09_10_42_57”目录下面
注意:由于训练样本较少,识别度会比较低。
