MMOCR项目数据集准备完全指南

MMOCR项目数据集准备完全指南

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

前言

在OCR(光学字符识别)领域,数据集的准备往往是项目开发的第一步,也是最关键的一环。不同来源的数据集往往采用不同的标注格式,这给研究人员和开发者带来了不小的困扰。MMOCR项目为解决这一问题,提供了一套完整的数据集准备方案,让用户能够轻松地将各种格式的OCR数据集转换为统一格式,并快速投入模型训练。

数据集准备流程概述

MMOCR推荐的数据集准备流程主要包含两个核心步骤:

  1. 数据集下载及格式转换:将原始数据集转换为MMOCR支持的统一格式
  2. 修改配置文件:根据实际需求配置训练和测试数据集

下面我们将详细介绍这两个步骤的具体操作方法和注意事项。

数据集下载及格式转换

一键式转换工具

MMOCR提供了便捷的数据集准备脚本prepare_dataset.py,支持多种常见OCR数据集的自动下载和格式转换。以ICDAR 2015数据集为例,只需执行以下命令:

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

这条命令会自动完成以下工作:

  1. 下载ICDAR 2015数据集(如果尚未下载)
  2. 将数据集转换为MMOCR标准格式
  3. 按照规范目录结构组织文件

转换后的目录结构

转换完成后,数据集将被组织为以下结构:

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

其中:

  • textdet_imgs目录存放图像文件
  • .json文件包含标注信息,采用MMOCR统一格式

数据验证

为确保数据转换正确,MMOCR提供了可视化工具browse_dataset.py,可用于检查标注是否正确:

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

这个工具会显示图像及其对应的标注框,帮助用户直观地验证数据准备的质量。

配置文件修改指南

单数据集配置

在MMOCR中,每个数据集都需要在配置文件中进行声明。以ICDAR 2015为例,其配置文件通常位于configs/textdet/_base_/datasets/icdar2015.py,内容如下:

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)

关键配置项说明:

  • type:指定数据集类型,MMOCR内置了多种数据集类型
  • data_root:数据集根目录路径
  • ann_file:标注文件名称
  • filter_cfg:数据过滤配置,可过滤无效样本
  • test_mode:标识是否为测试集

模型训练配置

在模型配置文件中,需要导入并使用已配置的数据集。例如,使用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_crnn_mini-vgg.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,
    persistent_workers=True,
    sampler=dict(type='DefaultSampler', shuffle=True),
    dataset=train_dataset)

test_dataloader = dict(
    batch_size=1,
    num_workers=4,
    persistent_workers=True,
    drop_last=False,
    sampler=dict(type='DefaultSampler', shuffle=False),
    dataset=test_dataset)

val_dataloader = test_dataloader

最佳实践建议

  1. 数据验证:在使用新数据集前,务必使用可视化工具检查数据质量
  2. 数据过滤:合理配置filter_cfg过滤无效样本,提高训练效率
  3. 多数据集训练:对于需要强泛化能力的场景,推荐使用多数据集联合训练
  4. 资源配置:根据数据集大小和硬件条件,合理设置batch_sizenum_workers
  5. 测试集选择:选择具有代表性的测试集组合,全面评估模型性能

通过遵循这些指南,用户可以高效地准备和使用各种OCR数据集,充分发挥MMOCR框架的强大能力。

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

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

### MMOCR 模型部署教程和最佳实践 #### 准备环境 为了成功部署MMOCR模型,需先安装必要的依赖项。推荐使用Anaconda虚拟环境来管理Python包。 ```bash conda create -n mmocr_env python=3.8 conda activate mmocr_env pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu113 ``` #### 安装MMOCR库 通过`mim`工具可以轻松安装最新版本的MMOCR库: ```bash mim install mmocr ``` #### 下载预训练模型权重 对于特定任务(如文本检测),下载对应的预训练模型权重文件是必需的操作之一。这里以DBNet为例说明如何获取并加载模型参数。 ```python import mmcv from mmdet.apis import init_detector, inference_detector config_file = 'mmocr/configs/textdet/dbnet/dbnet_r18-dcn_v3.py' checkpoint_url = 'https://download.openmmlab.com/mmocr/textdet/dbnet/dbnet_r18-dcn_1200e_icdar2015_20210623_115019-b52b911a.pth' model = init_detector(config_file, checkpoint=None, device='cuda:0') weights_path = './dbnet_weights.pth' mmcv.fileio.load_from_http(checkpoint_url, weights_path) model.load_state_dict(mmcv.runner.load_checkpoint(weights_path)) ``` #### 配置推理脚本 创建一个名为`inference.py`的新文件,在其中定义图像输入路径、输出保存位置以及所使用的配置文件与检查点链接。 ```python if __name__ == '__main__': from argparse import ArgumentParser parser = ArgumentParser() parser.add_argument('img', help='Image file') parser.add_argument('out_file', help='Path to output file') args = parser.parse_args() result = inference_detector(model, args.img) # 将预测结果可视化并保存到指定目录下 model.show_result(args.img, result, out_file=args.out_file) ``` #### 执行命令行指令完成一次完整的推断过程 最后一步是在终端中键入如下命令启动程序,实现从图片读取至最终结果展示整个流程自动化处理。 ```bash python tools/inference.py demo/demo_text.jpg output/text_det_result.png \ --config mmocr/configs/textdet/dbnet/dbnet_r18-dcn_v3.py \ --checkpoint ./dbnet_weights.pth ``` 以上即为基于MMOCR框架下的模型部署指南[^3]。值得注意的是,实际应用过程中可能还需要针对具体业务需求调整部分设置选项或优化性能表现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

袁菲李

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

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

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

打赏作者

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

抵扣说明:

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

余额充值