使用旷视科技发布的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数据集相关推荐

  1. DETR训练VOC数据集

    在学习DETR过程中,原模型用的COCO数据集,训练的太慢了,故使用VOC数据集.网上找了好长好长时间,好多博客都走不通,特此记录一下. 1. 数据集准备 数据集转换目标:文件夹名为coco, 里面包 ...

  2. yolov5训练voc数据集

    1.数据集 下载好voc数据集,以2007为例,把数据集(VOCtrainval_06-Nov-2007和VOCtest_06-Nov-2007)都解压同一个文件夹里,记住解压后的图片是从000001 ...

  3. windows10和ubuntu两种环境搭建YOLOX环境配置,并训练VOC数据集

    前言:本文使用的代码来自于:https://github.com/Megvii-BaseDetection/YOLOX,确保系统中已经安装好cuda cudnn,未装好的请自行查阅资料进行安装 一.W ...

  4. nanodet训练voc数据集

    首先是修改配置文件,config/nanodet_custom_xml_dataset.yml 主要是修改以下几项 class_names: &class_names ['aeroplane' ...

  5. (官方步骤)YOLO-V3训练VOC数据集

    前提:编译好darknet,教程参考本人链接:https://blog.csdn.net/qq_34806812/article/details/81167836 开始: darknet目录下新建VO ...

  6. mmdetection训练voc数据集

  7. mmdetection训练自己的VOC数据集及常见问题

    训练自己的COCO数据集及常见问题见下文: mmdetection训练自己的COCO数据集及常见问题_不瘦8斤的妥球球饼的博客-CSDN博客 目录 一.环境安装 二.训练测试步骤 三.常见问题 bat ...

  8. YOLOv7训练自己的VOC数据集

    YOLOv7源码:https://github.com/WongKinYiu/yolov7 本文是对YOLOV7训练自己的yolo数据集的扩展,具体训练等步骤不再详细赘述,遇到看不懂的请移步YOLOV ...

  9. 【学习记录】win10搭建YOLOX训练自己的VOC数据集

    我是目录: 前言: 1.yolox的训练配置 2.yolox源码 3.必要的环境 配置yolox所需环境 1.安装依赖库 2.安装yolox 3.安装apex 4.下载预训练模型 4.准备自己的数据集 ...

最新文章

  1. 机器人建模中移动关节如何建立坐标系_机器人工程师进阶之路(八)指数积(PoE)建立机械臂模型及正运动...
  2. C专家编程--读书笔记九 再论数组
  3. 12 月份 10 个新鲜的 jQuery 插件和教程
  4. autocad2014 菜单栏 闪退_AutoCAD2014闪退的原因与处理办法 1打开就闪退怎样办
  5. 进程间通讯(一)--邮件槽
  6. firewalld 极速上手指南
  7. 说几个打工人要避开的坑
  8. GIS笔记_GDAL c# VS2015 环境配置
  9. log4j 配置和使用
  10. 安川伺服总线通讯方式_终于有人把常用的三种通讯方式:RS485、RS232、RS422讲明白了...
  11. 耦合天线测试软件,以CPL天线为W-Fi装置实现无线耦合测试
  12. 航天器轨迹预测——根据速度和位置确定初轨
  13. 正则验证车牌号码,包含新能源车牌
  14. Excel与Word链接操作:使用邮件合并工具
  15. 【python】在图片上绘画
  16. 无盘服务器磁盘缓存,网众无盘教程 教你挂盘设置缓存
  17. 题解动态规划:蓝桥杯2022国赛B组 题解 A题目
  18. 在IPhone上添加邮箱(163示例)
  19. java netty wss_netty中websocket, wss
  20. bbz10 android,10万应用20%靠安卓移植 黑莓BB10原生难

热门文章

  1. vue获取本机ip地址
  2. 怎样理解前端智能化这一新浪潮?
  3. 曼哈顿距离与切比雪夫距离(知识点总结+例题整理)
  4. 【eNSP 华为模拟器】单臂路由及操作步骤【图文】
  5. 微信(支付)二维码的生成(前端方向)
  6. 少年用计算机弹的歌词,弹着吉他的少年歌词 弹着吉他的少年Lrc歌词
  7. asp.net学校门户网站系统VS开发sqlserver数据库web结构c#编程计算机网页项目
  8. 静态数据与非静态数据的区别
  9. ios解析txt电子书
  10. lucky or not