栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Windows10下搭建YOLOX环境以及训练自己数据集

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Windows10下搭建YOLOX环境以及训练自己数据集

目录:

1.必要环境

2.YOLOX安装及模型推理

3.训练自己数据集及测试

1.必要环境

我的环境是:Windows10+python3.9+CUDA11.1+CUDNN8.1.1

在此环境配置不再多说,网上有很多的教程。本篇主要还是记录YOLOX的使用。(这里安装torch有个小坑,如果起初未安装torch,使用requirements.txt安装,则安装的为cpu版本,而此处我们使用的是gpu版本,注意别踩坑)

2.YOLOX安装

配置YOLOX的环境

2.1 进入github官网下载源码: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/https://github.com/Megvii-baseDetection/YOLOX

2.2 安装依赖包:

pip install -r requirements.txt

2.3 安装yolox

python setup.py install

2.4 下载apex,解压到项目文件夹内 地址:mirrors / nvidia / apex · GIT CODE

2.5 cd到apex文件夹内,安装apex

cd apex-master
python setup.py install

2.6 返回yolox的主文件夹下,安装pycocotools

pip install pycocotools

2.7下载预训练模型,在2.1步骤给的网址中即可下载

2.8测试效果

测试图片指令:

python tools/demo.py image -f exps/default/yolox_s.py -c ./yolox_s.pth --path assets/dog.jpg --conf 0.3 --nms 0.65 --tsize 640 --save_result --device gpu

效果:

 3. 训练自己的数据集

此处制作数据集的步骤不再赘述。

3.1 首先按要求设置文件夹目录:

 将图片放入JPEGImages中,xml文件放入Annotations

3.2 使用txt_write.py,划分数据集,并写入main文件夹下,生成trainval.txt和test.txt。

import os
import random

trainval_percent = 0.1
train_percent = 0.9
xmlfilepath = 'E:/YOLOX-main/datasets/VOC/VOCdevkit/VOC2007/Annotations'
txtsavepath = 'E:/YOLOX-main/datasets/VOCVOCdevkit/VOC2007/ImageSets'
total_xml = os.listdir(xmlfilepath)

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)

ftest = open('E:/YOLOX-main/datasets/VOC/VOCdevkit/VOC2007/ImageSets/Main/test.txt', 'w')
ftrain = open('E:/YOLOX-main/datasets/VOC/VOCdevkit/VOC2007/ImageSets/Main/trainval.txt', 'w')

for i in list:
    name = total_xml[i][:-4] + 'n'
    if i in trainval:
        ftest.write(name)
    else:
        ftrain.write(name)

ftrain.close()
ftest.close()


3.3 修改 yolox/data/dataloading.py 如下:

3.4 修改exps/example/yolox_voc/yolox_voc_s.py如下:

修改num_classes改为自己的类别数量

3.5 修改yolox/data/datasets/voc_classes.py为自己的类别

 3.6 修改yolox/evaluators/voc_eval.py 如下 

在yolox/exp/yolox_base.py

修改self.data_num_workers = 0

执行python setup.py install 更新yolox 

此时运行训练代码报如下错误:Error #15: Initializing libiomp5md.dll, but found libiomp5md.dll already initialized.

方法解决:在train.py文件中添加代码:

import os
os.environ['KMP_DUPLICATE_LIB_OK'] = 'TRUE'

3.7 运行代码开始训练 :

python tools/train.py -f exps/example/yolox_voc/yolox_voc_s.py -d 1 -b 4 --fp16 -o -c yolox_s.pth

-d 使用显卡个数
-b 批次大小
–fp16 是否开启半精度训练
-c 加载预训练模型

如果出现CUDA out of memory内存溢出,将–fp16 -o去掉,代码改为如下:

python tools/train.py -f exps/example/yolox_voc/yolox_voc_s.py -d 1 -b 4 -c yolox_s.pth

继续上一批次恢复训练的话,改成如下形式:

将—resume改为True,-c后面跟接要继续训练的权重文件
代码如下:

python tools/train.py -f exps/example/yolox_voc/yolox_voc_s.py -d 1 -b 4 -c YOLOX_outputs/yolox_voc_s/latest_ckpt.pth

 运行截图:

为了演示,本次训练,就训练了2轮。

结果存入:

 测试:

4.1 测试前修改demo.py如下:

注释掉COCO_CLASSES,加入VOC_CLASSES

4.2 测试代码

python tools/demo.py image -f exps/default/yolox_s.py -c ./latest_ckpt.pth --path assets/001.jpg --conf 0.3 --nms 0.65 --tsize 640 --save_result --device gpu

 结果:

因为训练轮数为2轮,所以识别框不是很准确。

到此,YOLOX复现成功。

完结!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/655894.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号