YOLOX训练自有数据集

本文详细介绍了如何进行YOLOX目标检测算法的数据标注,包括VOC数据格式、XML标注文件的制作以及训练数据的转换。此外,还详细阐述了YOLOX模型的训练步骤,从修改配置文件、加载不同格式的图片到启动训练,以及模型预测时的设置。提供了一站式的YOLOX训练和预测流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

开源代码:https://github.com/Megvii-BaseDetection/YOLOX

参考:深入浅出Yolox之自有数据集训练超详细教程 - 知乎

Anchor-Free系列之YOLOX:Exceeding YOLO Series in 2021_程大海的博客-优快云博客

Yolo系列目标检测算法知识点总结_程大海的博客-优快云博客_yolo系列目标检测算法

 

训练数据标注

        YOLOX采用VOC数据标注格式,VOC数据格式如下:

        其中图片训练的图片数据存放在JPEGImages目录中,每张图片对应的同名xml文件存放在Annotations目录下,ImageSets/Main目录下存放划分号的训练集train.txt和验证集文件val.txt,其中train.txt和val.txt中存放的训练集和测试集每个图片的文件名,不包含文件后缀,如下:

        训练集train.txt和验证集val.txt的划分脚本如下:

        Annotation目录下每个xml标注文件的格式如下:

        在训练数据标注格式上,YOLOX与Yolov5的数据格式不一致,需要通过脚本代码转换一下,网上一搜全都是。

        备注:在U版的Yolov5开源代码中,模型训练时可以添加10%左右的负样本,也就是没有检测目标的图片样本,并且可以不需要为这些负样本添加空的标注文件,但是如果要在YOLOX的训练数据中添加负样本,需要为每个负样本图片生成对应的xml文件,xml文件中只包含图片的宽、高、通道等信息。

模型训练

        1、修改yolox/data/datasets/vos_classes.py文件中的元组VOC_CLASSES,元组中每个类别后面都要跟一个逗号

       2、当前YOLOX只支持加载jpg训练数据,修改yolox/data/datasets/voc.py中load_image函数,支持使用png训练图片,修改后的load_image函数如下:

        3、由于YOLOX代码训练VOC数据集,所以在yolox/data/datasets/voc.py中的VOCDetection类的__init__初始化函数中的125行左右来加载VOC数据集的训练集和验证集,如下:

        将上面的for训练以及rootpath修改如下:

        4、修改yolox/exp/yolox_base.py配置文件中的self.num_classes等相关配置项,关键配置项有以下几个:

                a)、num_classes: 目标检测类别数量,与VOC_CLASSES中的类别数量保持一致

                b)、input_size: 图片分辨

                c)、mosaic_prob: 使用马赛克数据增强的概率

                d)、test_size: 与input_size保持一致

                e)、no_aug_epochs: 提前关闭马赛克和mixup数据增强的epoch数量

                f)、mixup_prob: 使用mixup数据增强的概率

        5、修改exps/example/yolox_voc/yolox_voc_s.py

                a)、olox_voc_s.py中Exp类的__init__函数中的num_classes,与VOC_CLASSES中的类别数量保持一致

                b)、修改get_data_loader函数,如下:

                 c)、修改get_eval_loader函数,如下:

        6、下载预训练权重yolox_s.pth,放在./weights目录下

        7、模型训练:CUDA_VISIBLE_DEVICES=”0,1,2,3” python tools/train.py -f exps/example/yolox_voc/yolox_voc_s.py -d 4 -b 32 -c ./weights/yolox_s.pth

        8、模型保存在YOLOX_outputs/yolox_voc_s/best_ckpt.pth

模型预测

        1、修改yolox/data/datasets/__init__.py,添加VOC_CLASSES,如下:

        2、 修改tools/demo.py

                a)、修改:

                        为:

                b)、修改main函数:

                        为:

        3、 模型预测:Python tools/demo.py image -n yolox-s -c ./ YOLOX_outputs/yolox_voc_s/best_ckpt.pth --path /data_path --conf 0.35 --nms 0.45 --tsize 960 --save_result --device gpu

        模型预测结果保存在YOLOX_outputs/yolox_s/vis_res目录下。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值