使用开放技术发布的Yolox培训自己的VOC数据集。 注释文件的格式与yolov3、yolov4和yolov5相同。
一、构建Yolox码环境1.Yolox码下载Yolox码链接: githu B- Meg VII-base detection/yolox : yoloxisahigh-performance anchhh exceedingyolov 3至V5 withmegengine,ONNX,TensorRT,ncnn,andopenvinosupported.documentation 33603359 yolox.readthedocs
1 .构建测试环境(1)构建新的康达环境
输入代码
Conda create-nyo lox _ 3.7 python=3.7
)2)进入康达环境
输入代码
conda activate Yolox_3.7
)3)代码依赖库的安装
进入下载的YOLOX-main文件夹下,输入代码。
pip 3安装- UPI ppip 3安装-请求. txt (4)安装库文件
从setup.py安装库文件,然后输入代码。
pip 3安装- v-e.# or python3setup.py develop (5) pycocotools下载
输入代码:
pip 3安装cy thon; pip3install ' git https://github.com/coco dataset/coco API.git # subdirectory=python API '1. demo效果测试(1)下载权重
调整好环境后,可以下载官方的预训练模型来测试图像。 预培训权重下载链接可在官方代码说明中找到。 首先下载Yolox_s.pth文件测试一下效果。
下载yolox_s.pth后,将其放在YOLOX-main/weigths代码的文件夹下。
)2) Demo测试
对代码附带的图像进行Demo测试。
在YOLOX-main文件夹的终端页面上输入:
python tools/demo.py image-nyo lox-s-cweigths/yolox _ s.PTH-- path assets/dog.jpg-- conf 0.25-- NMS 0.45 -
二、Yolox训练自己的VOC数据集1 .准备数据
注意事项:
标注工具:采用标签img标注软件
标记的图像:标记图像的jpg文件与生成的xml图像分开存储
标签类别:英语、特殊符号、空格除外
2 .数据集分割(1)数据准备
模仿VOC数据格式准备数据,VOC格式分布:
VOC中的这些文件夹主要使用以下内容:
JPEGImages:jpg文件
Annotations:xml文件
ImageSets/Main:培训集train.txt,验证集val.txt。
在YOLOX-main/datasets/下创建新的VOCdevkit/VOC2007文件夹
然后,在文件夹中创建新的ImageSets/Main文件夹,并将JPEGImages文件夹和Annotations文件夹放置在该文件夹中
)2)分为训练集和验证集
在培训过程中,脚本分为训练集和验证集,将数据集分为培训集和验证集,并相应的train.txt和val.
终端进入yolox-main/datasets/VOC dev kit/VOC 2007
输入代码:
vim train _ val.pyimportosimportrandomrandom.seed (0) xmlfile path=r './annotations ' save basepath=r './imagesesect-----------------------------total _ XML=[ ] forxmlintemp _ XML : if XML.endswith ('.XML ' ) : total _ XML.append (XML ) num=len ) ) total train val _ percend train_percent ) trainval=random.sample(list,tv ) train=random.sample (t random.sample ) tv ) trandom652 tv ) tr ) ftrainval=open ) OS.path.join ) savebasepath,trainval.txt ),(w ) ) ftest='w ' ) ft rain=open (OS.path ' w ' ) fval=open ) OS.path.join (save basepath ) ) ) savebasepatt ) 65 'w ' ) fori inlist : name=total _ XML [ I 3 n ' ifiintrainval 3360 ftrainval.write (name ) ifiintrain 3360 ft rain.write (name ) else : fval.write (name ) else 33333333 ) ftest .close )在python train_val.py中运行代码后,在Main文件夹下生成以下四个txt文档:
3 .修改参数
(1)修改参数标签
修改yolox/data/datasets/VOC _ classes.py中的标记信息。
注:必须在类别之后添加逗号,例如在" head "之后添加逗号“,”。
)2)修改模型结构
为了这次使用的yolox_x.pth模型训练,将yolox-main/exps/default/yolox _ x.py文件的网络调用结构转换为yolox-main/exps/examps
并且,将文件名变更为yolox_voc_x.py
(3)修改类别数
修改yolox-main/exps/example/yolox _ VOC/yolox _ VOC _ s.py中的self.num_classes,并根据自己的类别数进行修改
)4)修改培训集和验证集信息
更改exps/example/yolox _ VOC/yolox _ VOC _ s.py中的VOCDection,将其更改为自己的数据集
修改exps/example/yolox _ VOC/yolox _ VOC _ s.py中的get_eval_loader函数。
三.训练1 .终端训练
将下载的YOLOX_x.pth .放入yolox文件夹,打开终端,然后输入终端。
python3tools/train.py-fexps/example/yolox _ VOC/yolox _ VOC _ x.py-d0-b64-cyol ox _ x.pt H2 .代码培训
执行:
python tool/train.py