【MMDetection系列 - 2】MMDetection使用自定义数据集训练、测试已有模型


前言

本文介绍如何用自定义数据集来对MMDetection中给定的模型进行训练及测试。

本文采用的模型是:deformable_detr
数据集为: cat 数据集


一、数据集准备

在终端输入以下指令来下载并解压cat数据集:

rm -rf cat_dataset*
wget https://download.openmmlab.com/mmyolo/data/cat_dataset.zip
unzip cat_dataset.zip -d cat_dataset && rm cat_dataset.zip 

文件目录结构为:

mmdetection
├── mmdet
├── tools
├── configs
├── cat_dataset
│ ├── annotations (其中包括3个json文件)
│ ├── images(包含144张图片)
│ ├── labels(图片的json文件)
│ ├── labelsclass_with_id.txt

二、编写配置文件

1.创建配置文件

在mmdetection根目录下创建一个文件夹try_demo,在文件夹下建立一个my_demo_cat.py文件,文件内容如下

# my_demo_cat: 使用deformable-detr & cat数据集

_base_ = [
    '../configs/deformable_detr/deformable-detr-refine-twostage_r50_16xb2-50e_coco.py'
]

model = dict(
    backbone=dict(
        init_cfg=None)		# 不直接从官网下载预训练模型,使用我自己下载好的预训练模型
)


data_root = 'cat_dataset/' #数据集路径前缀


metainfo = {
   
   
    # 类别名,注意 classes 需要是一个 tuple,因此即使是单类,后面也需要加逗号。
    'classes'
### 使用MMDetection训练自定义COCO128格式数据集 #### 配置文件修改 为了使MMDetection能够识别并使用自定义的COCO128格式数据集,需调整配置文件以适应新数据源的要求。具体来说,在配置文件中指明数据集路径、类别数量以及其他必要参数[^1]。 对于COCO128这样的特定格式,确保`data_root`指向存储标注JSON文件和图片的位置;更新`classes`列表至匹配目标分类数目(COCO128有80个类别),并且设置好train/val/test分割方式。这一步骤至关重要,因为正确的配置直接影响到后续训练过程能否顺利进行。 ```yaml # example of coco dataset configuration in mmdet config file dataset_type = 'CocoDataset' data_root = '/path/to/coco128/' img_norm_cfg = dict( mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375], to_rgb=True) train_pipeline = [ ... ] test_pipeline = [ ... ] data = dict( samples_per_gpu=2, workers_per_gpu=2, train=dict( type='RepeatDataset', times=5, dataset=dict( type=dataset_type, ann_file=data_root + 'annotations/train.json', # path to annotation json img_prefix=data_root + 'images/', # image directory pipeline=train_pipeline)), val=dict( type=dataset_type, ann_file=data_root + 'annotations/val.json', img_prefix=data_root + 'images/', pipeline=test_pipeline), test=dict( type=dataset_type, ann_file=data_root + 'annotations/test.json', img_prefix=data_root + 'images/', pipeline=test_pipeline)) evaluation = dict(interval=1, metric='bbox') ``` #### 数据预处理 完成配置更改之后,还需确认自定义数据集已按标准COCO格式准备妥当。这意味着拥有对应的`.json`形式标签文件,并且图像文件夹结构清晰有序。此外,考虑到不同分辨率可能带来的影响,建议实施统一尺寸转换或比例缩放作为额外的数据增强措施之一[^2]。 #### 模型调参最佳实践 针对所选模型架构(例如Cascade Mask R-CNN R50-FPN),合理设定超参数有助于提升最终效果。一般而言: - **学习率调度**:采用逐步衰减策略或者余弦退火方法来动态调节每轮迭代的学习速率; - **批量大小**:依据硬件资源情况选取合适的batch size,既不过大也不过小; - **正则化手段**:适当加入权重衰减项防止过拟合现象发生; - **优化算法选择**:SGD配合动量项或是Adam都是不错的选择[^3]。 通过上述几个方面的精心设计与调试,可以有效提高基于MMDetection框架下对自定义COCO128数据集的目标检测精度及泛化能力。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值