Yolox训练VOC数据集
使用旷视科技发布的Yolox训练自己的VOC数据集,标注文件与yolov3、yolov4、yolov5格式相同。
一、搭建Yolox代码环境
1.下载Yolox代码
Yolox代码链接:GitHub - Megvii-BaseDetection/YOLOX: YOLOX is a high-performance anchor-free YOLO, exceeding yolov3~v5 with MegEngine, ONNX, TensorRT, ncnn, and OpenVINO supported. Documentation: https://yolox.readthedocs.io/
1.搭建测试环境
(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.Demo效果测试
(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]
二、Yolox训练自己的VOC数据集
1.准备数据
注意事项:
① 标注的工具:采用Labelimg标注软件
② 标注的图片:标记图片的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.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文档:
3.修改参数
(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函数。
三、训练
1.终端训练
将下载好的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
2.代码训练
修改train.py文件
运行:
python tool/train.py
Yolox训练VOC数据集相关推荐
- DETR训练VOC数据集
在学习DETR过程中,原模型用的COCO数据集,训练的太慢了,故使用VOC数据集.网上找了好长好长时间,好多博客都走不通,特此记录一下. 1. 数据集准备 数据集转换目标:文件夹名为coco, 里面包 ...
- yolov5训练voc数据集
1.数据集 下载好voc数据集,以2007为例,把数据集(VOCtrainval_06-Nov-2007和VOCtest_06-Nov-2007)都解压同一个文件夹里,记住解压后的图片是从000001 ...
- windows10和ubuntu两种环境搭建YOLOX环境配置,并训练VOC数据集
前言:本文使用的代码来自于:https://github.com/Megvii-BaseDetection/YOLOX,确保系统中已经安装好cuda cudnn,未装好的请自行查阅资料进行安装 一.W ...
- nanodet训练voc数据集
首先是修改配置文件,config/nanodet_custom_xml_dataset.yml 主要是修改以下几项 class_names: &class_names ['aeroplane' ...
- (官方步骤)YOLO-V3训练VOC数据集
前提:编译好darknet,教程参考本人链接:https://blog.csdn.net/qq_34806812/article/details/81167836 开始: darknet目录下新建VO ...
- mmdetection训练voc数据集
- mmdetection训练自己的VOC数据集及常见问题
训练自己的COCO数据集及常见问题见下文: mmdetection训练自己的COCO数据集及常见问题_不瘦8斤的妥球球饼的博客-CSDN博客 目录 一.环境安装 二.训练测试步骤 三.常见问题 bat ...
- YOLOv7训练自己的VOC数据集
YOLOv7源码:https://github.com/WongKinYiu/yolov7 本文是对YOLOV7训练自己的yolo数据集的扩展,具体训练等步骤不再详细赘述,遇到看不懂的请移步YOLOV ...
- 【学习记录】win10搭建YOLOX训练自己的VOC数据集
我是目录: 前言: 1.yolox的训练配置 2.yolox源码 3.必要的环境 配置yolox所需环境 1.安装依赖库 2.安装yolox 3.安装apex 4.下载预训练模型 4.准备自己的数据集 ...
最新文章
- 机器人建模中移动关节如何建立坐标系_机器人工程师进阶之路(八)指数积(PoE)建立机械臂模型及正运动...
- C专家编程--读书笔记九 再论数组
- 12 月份 10 个新鲜的 jQuery 插件和教程
- autocad2014 菜单栏 闪退_AutoCAD2014闪退的原因与处理办法 1打开就闪退怎样办
- 进程间通讯(一)--邮件槽
- firewalld 极速上手指南
- 说几个打工人要避开的坑
- GIS笔记_GDAL c# VS2015 环境配置
- log4j 配置和使用
- 安川伺服总线通讯方式_终于有人把常用的三种通讯方式:RS485、RS232、RS422讲明白了...
- 耦合天线测试软件,以CPL天线为W-Fi装置实现无线耦合测试
- 航天器轨迹预测——根据速度和位置确定初轨
- 正则验证车牌号码,包含新能源车牌
- Excel与Word链接操作:使用邮件合并工具
- 【python】在图片上绘画
- 无盘服务器磁盘缓存,网众无盘教程 教你挂盘设置缓存
- 题解动态规划:蓝桥杯2022国赛B组 题解 A题目
- 在IPhone上添加邮箱(163示例)
- java netty wss_netty中websocket, wss
- bbz10 android,10万应用20%靠安卓移植 黑莓BB10原生难