MMOCR项目数据集准备全指南

MMOCR项目数据集准备全指南

mmocr OpenMMLab Text Detection, Recognition and Understanding Toolbox mmocr 项目地址: https://gitcode.com/gh_mirrors/mm/mmocr

前言

在OCR(光学字符识别)领域,数据集的准备是模型训练和评估的基础环节。MMOCR作为一款优秀的OCR工具库,支持多种常用文本相关数据集,并提供了便捷的数据准备工具。本文将详细介绍如何在MMOCR中准备和使用数据集。

数据集准备流程概述

MMOCR数据集准备主要包含两个关键步骤:

  1. 下载数据集并转换为MMOCR支持的格式
  2. 配置数据集参数

如果你的数据集已经是MMOCR支持的格式,可以跳过第一步直接进行配置。

数据集下载与格式转换

基本使用方法

MMOCR提供了便捷的数据集准备脚本,可以自动完成下载和格式转换。以ICDAR 2015文本检测数据集为例:

python tools/dataset_converters/prepare_dataset.py icdar2015 --task textdet

执行后,数据集将被下载并转换为MMOCR格式,目录结构如下:

data/icdar2015
├── textdet_imgs
│   ├── test
│   └── train
├── textdet_test.json
└── textdet_train.json

数据集验证

转换完成后,建议使用可视化工具检查数据集是否正确:

python tools/analysis_tools/browse_dataset.py configs/textdet/_base_/datasets/icdar2015.py

这个工具可以帮助你直观地查看标注信息是否正确,包括文本区域的位置和内容。

数据集配置详解

单数据集配置

在MMOCR中,每个数据集都需要一个配置文件。以ICDAR 2015为例,典型的配置文件如下:

icdar2015_textdet_data_root = 'data/icdar2015'  # 数据集根目录

# 训练集配置
icdar2015_textdet_train = dict(
    type='OCRDataset',  # 数据集类型
    data_root=icdar2015_textdet_data_root,  # 数据集路径
    ann_file='textdet_train.json',  # 标注文件名
    filter_cfg=dict(filter_empty_gt=True, min_size=32),  # 过滤空标注和小尺寸图像
    pipeline=None)  # 数据处理流程

# 测试集配置
icdar2015_textdet_test = dict(
    type='OCRDataset',
    data_root=icdar2015_textdet_data_root,
    ann_file='textdet_test.json',
    test_mode=True,  # 测试模式标识
    pipeline=None)

在模型中使用数据集

配置好数据集后,可以在模型配置文件中引用。例如,使用DBNet_R18模型训练ICDAR 2015数据集:

_base_ = [
    '_base_dbnet_r18_fpnc.py',
    '../_base_/datasets/icdar2015.py',  # 引入数据集配置
    '../_base_/default_runtime.py',
    '../_base_/schedules/schedule_sgd_1200e.py',
]

# 指定训练集和测试集
icdar2015_textdet_train = _base_.icdar2015_textdet_train
icdar2015_textdet_train.pipeline = _base_.train_pipeline
icdar2015_textdet_test = _base_.icdar2015_textdet_test
icdar2015_textdet_test.pipeline = _base_.test_pipeline

# 配置数据加载器
train_dataloader = dict(
    batch_size=16,
    num_workers=8,
    persistent_workers=True,
    sampler=dict(type='DefaultSampler', shuffle=True),
    dataset=icdar2015_textdet_train)  # 指定训练数据集

val_dataloader = dict(
    batch_size=1,
    num_workers=4,
    persistent_workers=True,
    sampler=dict(type='DefaultSampler', shuffle=False),
    dataset=icdar2015_textdet_test)  # 指定验证数据集

test_dataloader = val_dataloader

多数据集联合训练

MMOCR支持使用多个数据集联合训练模型,这是通过ConcatDataset实现的。配置方法如下:

# 定义数据集列表
train_list = [ic11, ic13, ic15]  # 假设这些是已配置的数据集变量

# 配置联合数据集
train_dataloader = dict(
    dataset=dict(
        type='ConcatDataset', 
        datasets=train_list, 
        pipeline=train_pipeline))

实际应用示例

以下配置展示了如何使用MJSynth数据集进行训练,同时使用6个学术数据集进行测试:

_base_ = [
    '../_base_/datasets/mjsynth.py',
    '../_base_/datasets/cute80.py',
    '../_base_/datasets/iiit5k.py',
    # 其他数据集配置...
]

# 训练数据集列表
train_list = [_base_.mjsynth_textrecog_train]
# 测试数据集列表
test_list = [
    _base_.cute80_textrecog_test,
    _base_.iiit5k_textrecog_test,
    # 其他测试集...
]

# 配置联合数据集
train_dataset = dict(
    type='ConcatDataset', 
    datasets=train_list, 
    pipeline=_base_.train_pipeline)
test_dataset = dict(
    type='ConcatDataset', 
    datasets=test_list, 
    pipeline=_base_.test_pipeline)

# 配置数据加载器
train_dataloader = dict(
    batch_size=192 * 4,
    num_workers=32,
    dataset=train_dataset)

test_dataloader = dict(
    batch_size=1,
    num_workers=4,
    dataset=test_dataset)

val_dataloader = test_dataloader

最佳实践建议

  1. 数据检查:转换后务必使用可视化工具检查数据质量
  2. 路径配置:确保配置中的路径与实际存储路径一致
  3. 数据过滤:合理设置过滤条件,如filter_empty_gtmin_size
  4. 多数据集平衡:联合训练时注意各数据集的样本量平衡
  5. 性能优化:根据硬件配置调整batch_sizenum_workers

通过以上步骤,你可以高效地在MMOCR中准备和使用各种OCR数据集,为模型训练和评估打下坚实基础。

mmocr OpenMMLab Text Detection, Recognition and Understanding Toolbox mmocr 项目地址: https://gitcode.com/gh_mirrors/mm/mmocr

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

管旭韶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值