YOLOX训练自己的VOC标注的数据

0. 前言

YOLOX是旷世在YOLO的基础上将anchor-free技术引入,从性能和速度上取得的更好的结果。具体可参考github相关代码及论文说明,此处介绍如何利用YOLOX训练自己的VOC数据集,YOLOX网络结构

github:https://github.com/Megvii-BaseDetection/YOLOX

paper:https://arxiv.org/abs/2107.08430

1.环境配置

参考github上相关说明。

1)安装YOLOX

conda create -n yolox python=3.8
conda activate 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

2)安装apex

git clone https://github.com/NVIDIA/apex.git
cd apex
pip install -v --no-cache-dir --global-option="--cpp_ext" --global-option="--cuda_ext" ./
# pip install -v --no-cache-dir --global-option="--pyprof" --global-option="--cpp_ext" --global-option="--cuda_ext" ./
# python setup.py install --cpp_ext --cuda_ext

3)安装pycocotools

pip3 install cython; pip3 install 'git+https://github.com/cocodataset/cocoapi.git#subdirectory=PythonAPI'

2.Demo

下载相关的训练模型。

python tools/demo.py image -n yolox-s -c /path/to/your/yolox_s.pth.tar --path assets/dog.jpg --conf 0.25 --nms 0.45 --tsize 640 --save_result --device [cpu/gpu]

3.训练VOC标注数据

1)准备数据

按照VOC的数据标注格式标注数据,数据目录如下:

--VOCdevkit
----VOC2007
------Annotations
------JPEGImages
------ImageSets
--------Main
----------test.txt
----------train.txt

2)修改配置文件

VOC的配置文件在YOLOX/exps/example/yolox_voc/yolox_voc_s.py

a)修改类别:

def __init__(self):
        super(Exp, self).__init__()
        self.num_classes = 20 ##类别
        self.depth = 0.33
        self.width = 0.50
        self.exp_name = os.path.split(os.path.realpath(__file__))[1].split(".")[0]

b)修改训练集目录

dataset = VOCDetection(
            data_dir=os.path.join(get_yolox_datadir(), "VOCdevkit"),
            image_sets=[('2007', 'trainval'), ('2012', 'trainval')], ## 训练集目录
            img_size=self.input_size,
            preproc=TrainTransform(
                rgb_means=(0.485, 0.456, 0.406),
                std=(0.229, 0.224, 0.225),
                max_labels=50,
            ),
        )

c)修改测试集目录

valdataset = VOCDetection(
            data_dir=os.path.join(get_yolox_datadir(), "VOCdevkit"),
            image_sets=[('2007', 'test')], ## 测试集目录
            img_size=self.test_size,
            preproc=ValTransform(
                rgb_means=(0.485, 0.456, 0.406),
                std=(0.229, 0.224, 0.225),
            ),
        )

3)修改类别

类别文件在YOLOX/yolox/data/datasets/voc_classes.py文件中,将自己对应的类别写入到这里即可。

4)训练模型

利用如下代码训练:

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.tar

训练过程中的参数设置可以在文件yolox/exp/yolox_base.py中进行设置、

注意:更改测试集的时候,需要删除datasets/VOCdevkit下的annotations_cache文件,该文件存储的时候测试集数据GT,如更改数据集,之前保存的有,则还是调用之前生成的文件,导致训练错误。

  • 2
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值