菜单

数据处理与增强

相关源文件

本文档介绍了 PaddleOCR 的数据处理和增强系统,该系统负责处理文本检测、识别和文档理解任务的数据集加载、预处理和训练时数据增强。该系统为不同的数据源提供统一的接口,并提供全面的增强流程以提高模型的鲁棒性。

有关模型训练工作流程的信息,请参阅 训练流程。有关使用此处理数据的模型架构的详细信息,请参阅 检测模型识别模型文档理解模型

数据集架构

PaddleOCR 支持通过统一的数据集接口处理多种数据集格式。核心架构围绕着处理不同数据源和格式的 PyTorch 风格 Dataset 类。

数据集类层次结构

来源: ppocr/data/__init__.py36-49 ppocr/data/simple_dataset.py25-157 ppocr/data/lmdb_dataset.py27-301

数据集工厂和 DataLoader 构建

build_dataloader 函数是创建具有适当采样策略的数据加载器的主要入口点。

来源: ppocr/data/__init__.py83-153 ppocr/data/multi_scale_sampler.py

数据加载流程

数据加载过程在所有数据集类型中遵循一致的模式,并将可配置的转换流程应用于每个样本。

核心数据流

来源: ppocr/data/simple_dataset.py57-68 ppocr/data/simple_dataset.py119-153 ppocr/data/lmdb_dataset.py127-152

样本数据结构

每个数据集样本都遵循一种标准的字典格式,该格式会流经整个转换流程。

类型描述
imagenp.ndarraybytes输入图像数据
polysnp.ndarray文本区域多边形 (检测)
textslist[str]地面真实文本标签
ignore_tagslist[bool]被忽略区域的标志
labelstr文本标签 (识别)
ext_datalist[dict]用于增强的外部样本

来源: ppocr/data/simple_dataset.py129-137 ppocr/data/lmdb_dataset.py147-149

增强系统

PaddleOCR 采用了一个全面的增强系统,该系统围绕着可以组合成流程的变换算子构建。该系统同时支持通用图像增强和 OCR 特定变换。

变换算子架构

来源: ppocr/data/imaug/__init__.py ppocr/data/imaug/iaa_augment.py175-214 ppocr/data/imaug/copy_paste.py26-77

Albumentations 集成

IaaAugment 类提供了与 Albumentations 库的桥梁,将 imgaug 风格的配置转换为 Albumentations 变换。

来源: ppocr/data/imaug/iaa_augment.py67-131 ppocr/data/imaug/iaa_augment.py175-214

专业处理

复制粘贴增强

CopyPaste 类通过从外部图像中提取文本区域并将其粘贴到训练样本中,实现了高级数据增强。

来源: ppocr/data/imaug/copy_paste.py34-77 ppocr/data/imaug/copy_paste.py79-134

地面真实图生成

对于文本检测模型,有几个专门的变换器可以从多边形标注生成像素级地面真实图。

收缩图生成

来源: ppocr/data/imaug/make_shrink_map.py32-95 ppocr/data/imaug/make_shrink_map.py97-125

多尺度数据集支持

MultiScaleDataSet 实现了具有可变图像尺寸的动态批处理,这对于在具有不同纵横比的图像上进行高效训练至关重要。

来源: ppocr/data/simple_dataset.py159-253 ppocr/data/simple_dataset.py166-178

依赖项和外部库

数据处理系统依赖多个关键外部库以实现高效操作。

目的代码中的使用
opencv-python图像 I/O 和处理图像加载、调整大小、几何变换
albumentations图像增强通过 IaaAugment 实现的现代增强流程
pyclipper多边形操作收缩/扩展文本区域
shapely几何计算多边形面积和交集计算
scikit-image高级图像处理科学图像操作
lmdb高性能数据存储大规模训练的快速数据集加载

来源: requirements.txt1-17 ppocr/data/imaug/iaa_augment.py24 ppocr/data/imaug/make_shrink_map.py27