使用YoloX进行自定义训练
下载并配置YoloX
https://github.com/Megvii-BaseDetection/YOLOX
怎么clone就不需要我多言了。
pip安装完环境,我们需要clone一下NVIDIA的apex
,最后执行
1 | python3 setup.py develop |
基本的结构介绍
介绍一下我们自定义训练主要用到的几个文件:
模型主要部分:./yolox
各种工具:./tools
其中我们需要使用train.py
来训练,demo.py
来预测。
命令分别为:
1 | python tools/train.py -f exps/example/yolox_voc/yolox_voc_s.py -d 8 -b 64 --fp16 -o -c /path/to/yolox_s.pth [--cache] |
1 | python tools/demo.py image -f exps/default/yolox_s.py -c /path/to/your/yolox_s.pth --path assets/dog.jpg --conf 0.25 --nms 0.45 --tsize 640 --save_result --device [cpu/gpu] |
或者视频:
1 | python tools/demo.py video -n yolox-s -c /path/to/your/yolox_s.pth --path /path/to/your/video --conf 0.25 --nms 0.45 --tsize 640 --save_result --device [cpu/gpu] |
注意:之后要把./yolox/exp/yolox_base.py
里面的num_classes
和dataset
改掉。
注意:如果之后模型报不能找到”yolox
“这个module的话,需要在前面添加
1 | import sys |
使用VOC类型的数据集训练yolo_s模型需要用到的Exp:./exps/example/yolox_voc/yolox_voc_s.py
这个文件主要定义了我们训练的Exp,我们自定义训练需要修改的主要包括分类数(num_classes
)、数据集(dataset
)。
数据集:./datasets
我们需要在里面放置VOC或者COCO格式的数据集。
我是用的是自制VOC结构的数据集,结构如下:
1 | . |
而我初始的数据集只有jpg和xml,所以需要转换。
转换数据集:
先把原始图片目录改成这样,创建用于生成数据集的xml2voc2007.py
:
1 | . |
附上用xml和jpg生成VOC格式数据集的代码:
1 |
|
开始训练自己的数据集
以VOC格式的数据集举例:
先在./yolox/data/datasets/voc_classes.py
里,把VOC_CLASSES
改成你的数据集类别
接着把./exps/example/yolox_voc/yolox_voc_s.py
里面的num_classes改成你的类别数
好了,然后我们新建个文件夹,去仓库里把预训练权重下载下来,准备工作就完事了。
训练命令:
1 | python3 tools/train.py -f exps/example/yolox_voc/yolox_voc_s.py -d 1 -b 8 --fp16 -o -c models/yolox_s.pth` |
其中:
-d是num_workers,
-b是batch_size,
-c是cache,就是之前下载的权重。
好的,这样我们就可以开始训练了。
可视化训练过程
yolox自带有tensorboard输出,我们可以在安完tensorboard以后,进入./YOLOX_outputs/yolox_voc_s/tensorboard
里面,输入
1 | tensorboard --logdir ./ --bind_all |
来可视化训练过程。
评估效果
参照上面demo的命令。
使用YoloX进行自定义训练