一、运行前准备
code:
paper:
https://arxiv.org/pdf/2107.08430.pdf
torch2trt:
https://github.com/NVIDIA-AI-IOT/torch2trt/releases
在使用命令行进行操作的时候需要在tools/demo.py和tools/train.py中加上
import sys,os
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.append(BASE_DIR)
此处 需要更改yolox_s.pth,模型下载地址:yolox_s.pth
建立weights文件夹将下载的yolox_s.pth放到weights文件夹下
python tools/demo.py video -n yolox-s -c weights/yolox_s.pth --path 0 --conf 0.25 --nms 0.45 --tsize 640 --save_result --device gpu
(缺少什么包直接安装)
demo测试结果
![](https://i-blog.csdnimg.cn/blog_migrate/f43ddbe6a58dc398625c78168ede6d98.png)
二、训练注意事项:
1.准备VOC数据集
1.将VOC数据放到datasets文件夹下(如果是自己标注的数据改成VOC格式就可以了)
![](https://i-blog.csdnimg.cn/blog_migrate/e087e03a34d689369cffa17e7b464d6c.png)
2.调整训练的类别数
VOC数据的默认类别是20个,如果是自己的数据集,则调整exps/example/yolox_voc/yolox_voc_s.py下的类别数
![](https://i-blog.csdnimg.cn/blog_migrate/b9fac0e1e898f2e9e3122afafa960c11.png)
3.调整代码
(1)更改exps/example/yolox_voc/yolox_voc_s.py下的image_sets
删除2012的目录,改为图中47行
![](https://i-blog.csdnimg.cn/blog_migrate/bf1a5ce87bcb65bfdb1338dd3ce592dd.png)
(2)更改yolox/data/datasets/voc.py的do_python_eval
更改为317行的格式
![](https://i-blog.csdnimg.cn/blog_migrate/6a96bd7f10616ce589757c2b686a2a97.png)
4.训练指令
从零开始训练:
python tools/train.py -f exps/example/yolox_voc/yolox_voc_s.py -d 1 -b 24 --fp16
中断后继续训练:
将tools/train.py中的训练参数--resume默认值改为True或者在命令行中加入--resume True
![](https://i-blog.csdnimg.cn/blog_migrate/999648f7552c3526394de1e3162184f4.png)
参数保存在YOLOX_outputs文件夹下:
![](https://i-blog.csdnimg.cn/blog_migrate/89783471c3aba51cebd2579e38bd0ecb.png)
三、测试注意事项:
1.更改代码
(1)更改:yolox/data/datasets/__init__.py
加上from .voc_classes import VOC_CLASSES
(2)如果是自定义的类别需要更改yolox/data/datasets/voc_classes.py的类别名称
![](https://i-blog.csdnimg.cn/blog_migrate/fcdf5bfa987aa8dbf2a6d8b3231d3f18.png)
(3)更改demo.py
- 加上
from yolox.data.datasets import VOC_CLASSES
将main函数中的cls_names改为VOC的数据类别
cls_names = VOC_CLASSES,
2.测试指令:
(1)测试图片
python tools/mydemo.py image -f exps/example/yolox_voc/yolox_voc_s.py -c YOLOX_outputs/yolox_voc_s/best_ckpt.pth --path assets/dog.jpg --conf 0.25 --nms 0.45 --tsize 640 --save_result --device gpu
测试结果:
![](https://i-blog.csdnimg.cn/blog_migrate/ccd71f7a8fd2a7444e65fe847e292d5c.png)
(2)测试摄像头(yolox-s)(不即时展示):
python tools/demo.py webcam -n yolox-s -c weights/yolox_s.pth --conf 0.25 --nms 0.45 --tsize 640 --save_result --device gpu
边展示写入需要修改下代码:
![](https://i-blog.csdnimg.cn/blog_migrate/91a16b7beefebe39bf4f87f18e66a8b3.png)
只显示实时测试结果:
python tools/demo.py webcam -n yolox-s -c weights/yolox_s.pth --conf 0.25 --nms 0.45 --tsize 640 --device gpu
测试速度如下:
![](https://i-blog.csdnimg.cn/blog_migrate/6cd5b0ec86c3d3125cf0b8e13ba4148d.png)
参考:
YOLOX/README.md at main · Megvii-BaseDetection/YOLOX · GitHub
https://github.com/Megvii-BaseDetection/YOLOX/blob/main/docs/train_custom_data.md