本文档介绍了 PaddleOCR 的数据处理和增强系统,该系统负责处理文本检测、识别和文档理解任务的数据集加载、预处理和训练时数据增强。该系统为不同的数据源提供统一的接口,并提供全面的增强流程以提高模型的鲁棒性。
有关模型训练工作流程的信息,请参阅 训练流程。有关使用此处理数据的模型架构的详细信息,请参阅 检测模型、识别模型 和 文档理解模型。
PaddleOCR 支持通过统一的数据集接口处理多种数据集格式。核心架构围绕着处理不同数据源和格式的 PyTorch 风格 Dataset 类。
来源: ppocr/data/__init__.py36-49 ppocr/data/simple_dataset.py25-157 ppocr/data/lmdb_dataset.py27-301
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
每个数据集样本都遵循一种标准的字典格式,该格式会流经整个转换流程。
| 键 | 类型 | 描述 |
|---|---|---|
image | np.ndarray 或 bytes | 输入图像数据 |
polys | np.ndarray | 文本区域多边形 (检测) |
texts | list[str] | 地面真实文本标签 |
ignore_tags | list[bool] | 被忽略区域的标志 |
label | str | 文本标签 (识别) |
ext_data | list[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
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