IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 【YOLOX训练部署】YOLOX训练自己的VOC数据集 -> 正文阅读

[人工智能]【YOLOX训练部署】YOLOX训练自己的VOC数据集

相关链接

  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 = 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()

到此为止,已经处理好要训练的数据集了!接下来修改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的缓存删掉。

?

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-01-01 13:53:53  更:2022-01-01 13:54:51 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 23:20:55-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码