手把手教你利用YOLOX训练自定义数据集(COCO Dataset)

YOLOX运行环境要求

参考这篇的环境配置:从深度学习目标检测新手视角安装MMDetection到使用公开数据集进行模型测试

GitHub克隆YOLOX仓库源代码

git clone git@github.com:Megvii-BaseDetection/YOLOX.git
cd YOLOX
pip3 install -v -e .  # or  python3 setup.py develop

下载预训练权重

在这https://github.com/Megvii-BaseDetection/YOLOX下载预训练权重并整理放入YOLOX/checkpoints/yolox_x.pth
在这里插入图片描述
下载好预训练权重后,终端运行如下代码

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

倘若YOLOX的运行环境无任何问题,可在YOLOX/YOLOX_outputs/yolox_x/vis_res/2024_05_29_17_26_45/dog.jpg看见预测好的样本图片

在这里插入图片描述

阅读数据集内README文档

根据YOLOX/datasets/README.md可知
这段指导文本说明了如何为YOLOX对象检测模型准备数据集,特别是针对COCO数据集的结构要求。YOLOX是一个高性能的目标检测模型框架。下面是逐步解析:

  1. 设置数据集目录: YOLOX允许用户通过环境变量YOLOX_DATADIR指定数据集的根目录。这意味着,如果你想让YOLOX自动识别你的数据集位置,你应该设置这个环境变量指向包含数据集的文件夹。

    export YOLOX_DATADIR=/path/to/your/datasets
    

    如果没有设置YOLOX_DATADIR,YOLOX会默认在当前工作目录下的./datasets寻找数据集。

  2. COCO数据集结构: 对于COCO数据集,需要遵循特定的文件夹和文件命名规则。COCO数据集主要由两部分组成:标注文件和图像文件。

    • 标注文件位于COCO/annotations/目录下,包括instances_train2017.jsoninstances_val2017.json(或者相应年份的版本,如2014年版)。这些JSON文件包含了训练集和验证集每张图片的对象标注信息。

    • 图像文件则应放在COCO/{train,val}2017/目录下,其中{train,val}是占位符,实际应替换为trainval,对应训练集和验证集的图像文件。确保这些图像文件在JSON标注文件中有对应的引用。

简而言之,要准备COCO数据集以供YOLOX使用,你需要正确地组织数据集结构,并可选地设置YOLOX_DATADIR环境变量指向该数据集的根目录。这样,YOLOX就能根据这些指示找到并加载所需的训练和验证数据。

准备自定义数据集

在这个页面下载一个简易的车辆损坏COCO格式数据集https://www.kaggle.com/datasets/lplenka/coco-car-damage-detection-dataset
将其如下列形式整理放入YOLOX/datasets文件夹中

需要将图片文件夹改为train2017val2017(目前不知道为什么)

└─datasets
	└─Car
		├─annotations 
		|	├─COCO_train_annos.json
		|	└─COCO_val_annos.json
		├─train2017
		|	├─001.jpg
		|	└─....jpg
		└─val2017
			├─002.jpg
			└─....jpg

接下来,根据实际数据集自定义路径,在终端利用export设置数据集根路径

export  YOLOX_DATADIR=/home/miqi/YOLOX/datasets/Car

修改相关配置文件代码

YOLOX/exps/example/custom/yolox_s.py文件中,可对应自定义数据集修改annotations文件的路径,并修改数据集类别数num_classes,再根据需要修改epoch次数max_epoch

 # Define yourself dataset path
        self.data_dir = "/home/miqi/YOLOX/datasets/Car/"
        self.train_ann = "COCO_train_annos.json" # 你的训练集标签文件
        self.val_ann = "COCO_val_annos.json" # 你的验证集标签文件

        self.num_classes = 1 # 你的数据集类别数

        self.max_epoch = 10
        self.data_num_workers = 4
        self.eval_interval = 1

YOLOX/datasets/Car/annotations/COCO_val_annos.json查找categories,获取数据集具体类别名称

    "categories": [
        {
            "id": 1,
            "name": "damage",
            "supercategory": "part"
        }

YOLOX/yolox/data/datasets/coco_classes.py修改对应的具体类别名称。如上所示,我的简易数据集只有一个类别

COCO_CLASSES = (
    "damage",
)

修改训练文件代码

参考该博主帖子,在YOLOX/tools/train.py训练文件中修改

# 设置 default="Car", 训练后结果就会保存在 YOLOX/tools/YOLOX_outputs/Car下
parser.add_argument("-expn", "--experiment-name", type=str, default=None)

# 设置 model_name,如果--exp_file参数为None,则通过此参数加载exps/default/中的默认的实验配置
parser.add_argument("-n", "--name", type=str, default="yolox-s", help="model name")

# 设置batch_size,注意这里的batchsize数应大于gpu数量,不然会报错batch=0的error
parser.add_argument("-b", "--batch-size", type=int, default=3, help="batch size")

# 设置gpu数量
parser.add_argument(
    "-d", "--devices", default=3, type=int, help="device for training"
)

# 设置你的数据配置的路径,default="../exps/example/custom/yolox_s.py"
parser.add_argument(
    "-f",
    "--exp_file",
    default="../exps/example/custom/yolox_s.py",  # 如果出现报错 doesn't contains class named 'Exp', 将此处改为绝对路径即可。
    type=str,
    help="plz input your expriment description file",
)

# 设置预训练权重路径, default="../weights/yolox_s.pth"
parser.add_argument("-c", "--ckpt", default="../weights/yolox_s.pth", type=str, help="checkpoint file")

终端运行

python tools/train.py

注意:由于我没有放预训练权重文件,并且数据集非常简单,所以精度几乎为零!

在这里插入图片描述

训练得到的权重信息记录在YOLOX/YOLOX_outputs/yolox_s文件夹中

在这里插入图片描述

一个值得注意的数据集错误

倘如数据集annotations的图片id包含字母,YOLOX会报错KeyError,建议更换数据集

请添加图片描述

id含有字母的数据集:

        {
            "file_name": "Abyssinian_100.jpg",
            "height": 500,
            "width": 394,
            "id": "Abyssinian_100"
        }

id不含有字母的数据集:

 		{
            "coco_url": "",
            "date_captured": "2020-07-14 09:59:34.190485",
            "file_name": "75.jpg",
            "flickr_url": "",
            "height": 1024,
            "id": 54,
            "license": 1,
            "width": 1024
        }
  • 20
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
训练自己的COCO数据集使用Yolox,首先需要创建一个Yolox的conda环境,可以使用以下命令: ``` conda create -n yolox python=3.8 ``` 然后激活这个环境: ``` conda activate yolox ``` 接下来,在Yolox的项目文件夹中安装所需的依赖项: ``` cd yolox pip install -r requirements.txt python setup.py develop ``` 为了使用COCO数据集,需要安装pycocotools,可以按照以下步骤进行: ``` git clone https://github.com/cocodataset/cocoapi cd cocoapi/PythonAPI/ python setup.py build_ext install ``` 接下来,你可以下载Yolox的预训练模型,并将其放置在项目文件夹中。然后,你可以使用以下命令运行测试演示: ``` python tools/demo.py image -f exps/default/yolox_s.py -c yolox_s.pth --path assets/dog.jpg --conf 0.25 --nms 0.45 --tsize 640 --save_result --device gpu ``` 这些命令将加载预训练Yolox模型,并根据提供的参数对一张图片进行目标检测,结果将保存在指定的路径中。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [YOLOX训练自己的数据集coco格式)](https://blog.csdn.net/weixin_43804047/article/details/120433479)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [YOLOX训练(实现)(COCOcoco数据集)最新最全程](https://blog.csdn.net/java_pythons/article/details/120513863)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值