YOLOX推理系列4-使用YOLOX训练自己的数据集


前言

前面的文章,笔者在系统环境下使用OpenCV对YOLOX模型进行推理;在本节,我们需要安装虚拟环境使用YOLOX训练自己的数据集。


一、安装Anaconda

Anaconda官网下载最新的版本
在这里插入图片描述
如果查询到版本号,也可使用命令行:

wget https://repo.anaconda.com/archive/Anaconda3-2021.11-Linux-x86_64.sh

然后执行安装:

sudo bash Anaconda3-2021.11-Linux-x86_64.sh

安装完成后验证
在这里插入图片描述
如果没有出现则需要添加环境变量:

sudo vim ~/.bashrc

在最后添加:

export PATH=$PATH:/home/zrd/anaconda3/bin

路径需要换成自己的,然后执行

source ~/.bashrc

二、安装YOLOX

1.笔者掉入的坑

在YOLOX的系统推理环境中,笔者安装了最新的CUDA11.5和对应的cuDNN版本,顺利的使用了GPU推理。所以在conda虚拟环境中,笔者也准备直接使用系统的环境的CUDA,然而事与愿违,无法调用CUDA进行GPU训练。
在这里插入图片描述
查询后发现目前pytorch的最高版本是1.10,而它能支持的CUDA最高版本是11.3,详见Pytorch官网,这样的话我们就只能在conda环境中重新安装CUDA10.2或者CUDA11.3。所以安装pytorch训练环境的准则是,pytorch和CUDA以及cuDNN版本需要匹配,感谢好友陈总对此的指导。

2.开始安装

一,创建&进入虚拟环境

conda create -n yolox python=3.8
conda activate yolox

二,安装pytorch1.10+cuda11.3(如果系统环境支持则不需要此步骤)

conda install pytorch torchvision torchaudio cudatoolkit=11.3 -c pytorch

三,按照官网安装YOLOX
YOLOX-github
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'

3.测试YOLOX

下载yolox_s.pth权重文件,放到datasets目录下:
在这里插入图片描述
使用cpu推理:

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

在这里插入图片描述
使用gpu推理:

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

在这里插入图片描述
结果都保存在YOLOX_outputs目录下:
在这里插入图片描述

三、训练COCO128

提示:在训练自己的数据集之前可以先使用官方的小数据集比如coco128测试一下,看看是否环境有错,如果coco128可以训练的话再更换为自己的数据集。这样如果发生错误能更好的定位。

关于coco128:
coco128是coco数据集的前128张图片,一共有71个类而不是80,主要用来测试。
在官方Train Custom Data中给出了coco128的下载地址,和训练方法:
在这里插入图片描述
先不要修改任何文件,只把coco128下载到datasets目录即可:
在这里插入图片描述
使用exps/example/custom/yolox_s.py脚本训练,这个脚本就是为coco128数据集准备的,后面训练自己的数据集时可以据此修改:
在这里插入图片描述

训练脚本:

python tools/train.py -f exps/example/custom/yolox_s.py -d 1 -b 8 --fp16 -o -c /path/to/yolox_s.pth

-d 1:number of gpu devices
-b 8:batch size, the recommended number for -b is num-gpu * 8
训练中:
在这里插入图片描述
训练完成:
在这里插入图片描述
训练完成后会将权重保存在YOLOX_outputs/yolox_s/目录下,选择best_ckpt.pth进行推理测试:

python tools/demo.py image -f exps/example/custom/yolox_s.py -c YOLOX_outputs/yolox_s/best_ckpt.pth --path assets/dog.jpg --conf 0.25 --nms 0.45 --tsize 640 --save_result --device gpu

在这里插入图片描述
去YOLOX_outputs/yolox_s/vis_res目录下查看推理图片,发现效果很差,没有关系,因为coco128数据集太小了。

四、训练自己的数据集

建议仿造coco128做自己的数据集,包括目录结构(annotations train2017 val2017)和json文件名(instances_train2017.json instances_val2017.json)等,这样就不用修改配置文件的相关内容。
把自己的数据集同样放到datasets目录下,然后修改两处配置。
一,yolox/data/datasets/coco_classes.py,把类名修改成自己的。
在这里插入图片描述

二,exps/example/custom/yolox_s_zrd.py,仿造yolox_s.py建立一个自己的训练文件
在这里插入图片描述
开始训练:

python tools/train.py -f exps/example/custom/yolox_s_zrd.py -d 1 -b 8 --fp16 -o -c datasets/yolox_s.pth

训练中:
在这里插入图片描述
训练完成:
在这里插入图片描述

使用自己训练的模型推理:

python tools/demo.py image -f exps/example/custom/yolox_s_zrd.py -c YOLOX_outputs/yolox_s_zrd/best_ckpt.pth --path datasets/zrodo_coco/val2017/0020.jpg --conf 0.25 --nms 0.45 --tsize 640 --save_result --device gpu

在这里插入图片描述

不戴口罩还抽烟的强哥
在这里插入图片描述


至此,YOLOX推理系列打完收工

版权声明:本文为CSDN博主「yinqinggong」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/yinqinggong/article/details/121743172

yinqinggong

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐

One-stage Detection YOLO 与 SSD对比

作为在one-stage Detection领域中,存在两类领军级别的检测器,大部分的one-stage的检测器都或多或少能看到这两者的影子,这两个就是YOLO和SSD。 本文主要从思想上对比YOLO和

车辆行人检测学习笔记

车辆行人检测学习笔记 1、目标检测&常见检测网络 目标检测:物体识别是要分辨出图片中有什么物体,输入是图片,输出是类别标签和概率。而目标检测不仅要检测图片中有什么物体,还要输出无异的外