赞
踩
使用旷视科技发布的Yolox训练自己的VOC数据集,标注文件与yolov3、yolov4、yolov5格式相同。
(1)新建Conda环境
输入代码:
conda create -n Yolox_3.7 python=3.7
(2)进入Conda环境
输入代码:
conda activate Yolox_3.7
(3)安装代码依赖库
进入下载好的YOLOX-main文件夹下面,输入代码:
pip3 install -U pip && pip3 install -r requirements.txt
(4)安装库文件
通过setup.py安装一些库文件,输入代码:
pip3 install -v -e . # or python3 setup.py develop
(5)下载pycocotools
输入代码:
pip3 install cython; pip3 install 'git+https://github.com/cocodataset/cocoapi.git#subdirectory=PythonAPI'
(1)下载权重
搭建好环境后,就可以下载官方的预训练模型,对图片进行测试了。预训练权重的下载链接,在官方代码的说明中。我们可先下载Yolox_s.pth文件,尝试测试效果。
下载好yolox_s.pth后,放到YOLOX-main/weigths代码的文件夹下。
(2)Demo测试
对代码中自带的图片进行Demo测试。
在YOLOX-main文件夹的终端页面输入:
python tools/demo.py image -n yolox-s -c weigths/yolox_s.pth --path assets/dog.jpg --conf 0.25 --nms 0.45 --tsize 640 --save_result --device [cpu/gpu]
注意事项:
① 标注的工具:采用Labelimg标注软件
② 标注的图片:标记图片的jpg文件与生成xml图片分开存放
③ 标签的类别:英文、不包括特殊符号、空格
(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.txt,放在Main文件夹中。
终端进入YOLOX-main/datasets/VOCdevkit/VOC2007
输入代码:
vim train_val.py
import os import random random.seed(0) xmlfilepath=r'./Annotations' saveBasePath=r"./ImageSets/Main/" #----------------------------------------------------------------------# # 想要增加测试集修改trainval_percent # train_percent不需要修改 #----------------------------------------------------------------------# trainval_percent=0.8 train_percent=1 temp_xml = os.listdir(xmlfilepath) total_xml = [] for xml in temp_xml: if xml.endswith(".xml"): total_xml.append(xml) 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) print("train and val size",tv) print("traub suze",tr) ftrainval = open(os.path.join(saveBasePath,'trainval.txt'), 'w') ftest = open(os.path.join(saveBasePath,'test.txt'), 'w') ftrain = open(os.path.join(saveBasePath,'train.txt'), 'w') fval = open(os.path.join(saveBasePath,'val.txt'), 'w') for i in list: name=total_xml[i][:-4]+'\n' if i in trainval: ftrainval.write(name) if i in train: ftrain.write(name) else: fval.write(name) else: ftest.write(name) ftrainval.close() ftrain.close() fval.close() ftest .close()
python train_val.py
运行代码后,在Main文件夹下生成下面四个txt文档:
(1)修改参数标签
将yolox/data/datasets/voc_classes.py中的标签信息,进行修改。
注意:类别后面都要加逗号,例如“head”后面加了一个逗号“,”。
(2)修改模型结构
本次使用的yolox_x.pth 模型训练,所以复制YOLOX-main/exps/default/yolox_x.py文件中的网络调用结构至YOLOX-main/exps/example/yolox_voc/yolox_voc_s.py中,如下图所示:
至并且把文件名称改成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函数。
将下载好的yolox_x.pth.放到YOLOX文件夹中,打开终端,在终端中输入:
python3 tools/train.py -f exps/example/yolox_voc/yolox_voc_x.py -d 0 -b 64 -c yolox_x.pth
修改train.py文件
运行:
python tool/train.py
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。