相关链接

  1. 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/
  2. yolox 论文:https://arxiv.org/abs/2107.08430
  3. yolox 中的一些基本组件:yolox中的一些基本组件【network_blocks】_乐亦亦乐的博客-CSDN博客
  4. VOC 数据集标注:使用labelimg制作数据集_乐亦亦乐的博客-CSDN博客_labelimg数据集

环境配置

参考yolox Github代码中的readme 进行配置:

Step1. Install YOLOX.

git clone git@github.com:Megvii-BaseDetection/YOLOX.git
cd YOLOX
pip3 install -U pip && pip3 install -r requirements.txt
pip3 install -v -e .  # or  python3 setup.py develop

Step2. Install pycocotools.

pip3 install cython;
pip3 install'git+https://github.com/cocodataset/cocoapi.git#subdirectory=PythonAPI'

注意:如果缺少其他包,使用pip安装即可!

运行Demo

下载相关模型

以YOLOX_s为例:

python tools/demo.py image -n yolox-s -c /path/to/your/yolox_s.pth --path assets/dog.jpg --conf 0.25 --nms 0.45 --tsize 640 --save_result --device [cpu/gpu]

其余可以阅读yolox github readme;或者官方文档:Welcome to YOLOX’s documentation! — YOLOX 0.1.0 documentation

VOC标注数据处理

1、本文使用VOC格式进行训练。
2、训练前将标签文件放在VOCdevkit文件夹下的VOC2007文件夹下的Annotation中。
3、训练前将图片文件放在VOCdevkit文件夹下的VOC2007文件夹下的JPEGImages中。
4、在训练前利用voc2yolo3.py文件生成对应的txt;

5、将VOCdekit 放到YOLOX/datasets文件夹下;

其中:

VOCdekit具体目录结构:

--VOCdevkit

----VOC2007

------Annotations

------JPEGImages

------ImageSets

--------Main

----------test.txt

-----------train.txt

voc2yolo3.py 代码如下:

import os
import random
random.seed(0)xmlfilepath = r'datasets/VOCdevkit/VOC2007/Annotations'
saveBasePath = r"datasets/VOCdevkit/VOC2007/ImageSets/Main"trainval_percent = 0.8
train_percent = 1temp_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()

到此为止,已经处理好要训练的数据集了!接下来修改yolox相关代码!

修改代码及配置文件

VOC数据集的配置文件所在路径:YOLOX/exps/example/yolox_voc/yolox_voc_s.py

a)修改 line14 ,num_classes 为自己的数据集的类别,这里以2为例。

b) 修改训练集和测试集目录  image_sets

c)修改类别voc_classes;文件所在路径:YOLOX/yolox/data/datasets/voc_classes.py

d) 修改YOLOX/yolox/exp/yolox_base.py 中num_classes;

e)修改YOLOX/yolox/data/datasets/voc.py 文件下的_do_python_eval 函数;

f)训练模型,本文训练模型使用yolox-s;首先下载预训练模型;将下载的模型放在YOLOX/weights/yolox_s.pth 路径下。

下载好的一些预训练权重:

g) 可在YOLOX/yolox/exp/yolox_base.py 文件中配置相关训练参数。

h) 开始训练,训练命令:

 python tools/train.py -f exps/example/yolox_voc/yolox_voc_s.py -d 0 -b 8 --fp16 -o -c weights/yolox_s.pth

训练:

训练的模型权重以及训练日志存在路径:YOLOX/YOLOX_outputs/yolox_voc_s/

使用tensorboard 查看训练过程:

在路径YOLOX_outputs/yolox_voc_s/ 下,执行:

tensorboard --logdir ./

测试训练好的模型

首先在YOLOX/yolox/data/datasets/__init__.py 里需要加入voc 类别

需要更改测试YOLOX/tools/demo.py:

测试代码:

python tools/demo.py image -n yolox-s -c YOLOX_outputs/yolox_voc_s/best_ckpt.pth --path assets/1_169.jpg --conf 0.3 --nms 0.1 --tsize 640 --save_result

完美运行!!


常见问题


训练过程出现如下情况:

训练前需要将VOCdevkit2007中annotations_cache的缓存删掉。

【YOLOX训练部署】YOLOX训练自己的VOC数据集相关推荐

  1. 【YOLOX训练部署】将自己训练的YOLOX权重转化成ONNX 并进行推理

    YOLOX 训练自己的VOC数据集 [YOLOX训练部署]YOLOX训练自己的VOC数据集_乐亦亦乐的博客-CSDN博客YOLOX 环境安装与训练自己标注的VOC数据集:https://blog.cs ...

  2. YOLOX——Win10下训练自定义VOC数据集

    前言 上个博客试着把yolox在win下的环境配置,然后就要试着训练自己的数据集,我这里用的是VOC格式的数据集,训练环境是win10 x64,CUDA11.0 cudnn 8.1 GPU 是GTX ...

  3. 收藏 | YOLOX模型部署、优化及训练全过程

    点上方计算机视觉联盟获取更多干货 仅作学术分享,不代表本公众号立场,侵权联系删除 转载于:作者丨叶润源 来源丨https://www.yuque.com/yerunyuan/ar9831/tsm0id ...

  4. YOLOX部署优化训练

    用给一个小不知名小板卡部署一下 不过这里用python 就当个玩具吧 YOLOX将近两年来目标检测领域的各个角度的优秀进展与YOLO进行了巧妙地集成组合并且重回Anchor Free的怀抱.本文详细的 ...

  5. 手把手教学 | YOLOX的部署、优化及训练的实现全过程

    作者 | 叶润源  编辑 | 极市平台 原文链接:https://www.yuque.com/yerunyuan/ar9831/tsm0id#Kfi4w 点击下方卡片,关注"自动驾驶之心&q ...

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

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

  7. Yolox训练VOC数据集

    使用旷视科技发布的Yolox训练自己的VOC数据集,标注文件与yolov3.yolov4.yolov5格式相同. 一.搭建Yolox代码环境 1.下载Yolox代码 Yolox代码链接:GitHub ...

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

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

  9. YOLOX训练自己的VOC数据集

    文章目录 一.下载YOLOX代码 二.配置文件 修改数据集参数 三.开始训练 报错1:no model named 'yolox' 报错2:No such file or directory: '/a ...

  10. YOLOX模型部署Android端-NCNN方法

    YOLOX模型部署Android端-NCNN方法 1.YOLOX代码仓库的下载 2.ONNX模型转换 3.NCNN框架模型转换 4 安装Android Studio 5 准备Android项目文件 6 ...

最新文章

  1. java accept encoding_Accept-Encoding gzip 乱码 和Okhttp的解决方法
  2. 强化学习到底是什么,它如何运作?
  3. 回顾Node文件路径
  4. 解决IDEA中,maven依赖不自动补全的问题
  5. matlab中fill函数的使用方法
  6. 【opencv】16.截取图像中的一个roi区域时,判断该roi是否越界
  7. JavaScript的Prototype实现
  8. group by分组、having() 筛选组的用法
  9. HTML5教程:1.3 HTML 5的使用理由和待解决问题
  10. Error in loadNamespace(name) : there is no package called ‘yaml’
  11. qtp 连接mysql_QTP连接mysql数据库
  12. 高频电子线路_实验一:调谐放大器
  13. MDM授权管理设计方案
  14. arcgis字段计算器赋值_ArcGIS中62个常用应用技巧汇总【必须收藏】
  15. 计算机主机三短一长,电脑主机出现三短一长响声怎么办
  16. 计算机图形学学习笔记(4.1)画线算法
  17. 【转】将HTML5封装成android应用APK 文件若干方法
  18. Hive处理数据基本操作流程
  19. 服务器迁移域名和证书要改什么用,服务器数据迁移方案介绍 怎样更换网站域名?...
  20. FPGA Altera Remote Update笔记

热门文章

  1. 为什么你应该学习编程?
  2. 日记侠:写文章快速赚钱的方法就3个字
  3. 《COMPLETE MAYA PRO GRAMMIN G VOLUME II》导言
  4. 科创板将迎做市商机制,做市商到底是什么?
  5. 【图解CAN总线】-2-详述CAN总线电平
  6. Android实战 - 音心音乐播放器 (开启篇)
  7. 开题报告中的研究现状怎么写?
  8. 计算机专业口号 十六个字,霸气押韵16字班级口号(精选100句)
  9. 没有被遣返的人生是不完整的
  10. c语言 如何筛选小数点,怎样在表格里筛选有出整数与有小数点的数值