ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

数据决定鲁棒性上限:MaskTextSpotterV3 五大核心数据集(ICDAR/SynthText/SCUT)准备完整清单

数据决定鲁棒性上限:MaskTextSpotterV3 五大核心数据集(ICDAR/SynthText/SCUT)准备完整清单 数据决定鲁棒性上限MaskTextSpotterV3 五大核心数据集ICDAR/SynthText/SCUT准备完整清单【免费下载链接】MaskTextSpotterV3The code of Mask TextSpotter v3: Segmentation Proposal Network for Robust Scene Text Spotting项目地址: https://gitcode.com/gh_mirrors/ma/MaskTextSpotterV3MaskTextSpotterV3 是 ECCV 2020 论文Mask TextSpotter v3的官方 PyTorch 实现一个用分割提案网络SPN取代传统 RPN 的端到端场景文本检测识别框架。它对旋转、长宽比和形状的鲁棒性很大程度上由训练数据的覆盖面与多样性决定——数据决定鲁棒性上限。本文给出一份可直接照做的清单五大核心数据集SynthText、ICDAR2013、ICDAR2015、SCUT、Total-Text的下载角色、目录结构、命名规则与配置文件开关帮你一次备齐 MaskTextSpotterV3 训练与评测所需的全部数据。为什么数据多样性决定鲁棒性上限 MaskTextSpotter v3 的核心思路是不再依赖固定尺寸的锚框去猜文字位置而是让**文字区域分割网络SPN**从特征图上直接产生任意形状、任意方向的文字提案。但网络再强也强不过没见过——旋转鲁棒性来自 Total-Text 的弯曲文本、SCUT 的大角度文字以及训练时MAX_ROTATE_THETA: 90的随机旋转增强尺度与长宽比鲁棒性来自 SynthText 的海量合成场景 ICDAR 系列的真实场景识别精度来自带字符级标注的数据SynthText、ICDAR2013、SCUT、Total-Text。官方混合训练配置中五个数据集的采样比例为0.25 / 0.25 / 0.25 / 0.125 / 0.125见 configs/mixtrain/seg_rec_poly_fuse_feature.yaml 中的DATASETS.TRAIN与DATASETS.RATIOS这正是数据配比即鲁棒性配方的体现。五大核心数据集速览角色、目录与标注格式数据集主要角色采样比例字符级标注期望目录datasets/ 下SynthText预训练主力海量合成文本0.25有synthtext/ICDAR2013真实场景训练 旋转角度评测0.25有icdar2013/ICDAR2015真实场景训练 标准评测0.25无icdar2015/SCUTscut-eng-char英文字符/大角度补充训练0.125有scut-eng-char/Total-Text弯曲文本训练 专项评测0.125无total_text/ 标注统一为 txt 文本每行一条文字区域格式为x1,y1,x2,y2,x3,y3,x4,y4,单词内容[,字符框...]无法识别的单词用###表示加载器会自动过滤相关逻辑见 maskrcnn_benchmark/data/datasets/icdar.py。一键搭好 datasets 目录结构附下载清单所有数据统一放在仓库根目录的datasets/下目标结构如下MaskTextSpotterV3/ └── datasets/ ├── synthtext/ │ ├── train_images/ # 合成文本图片 │ ├── train_gts/ # 转换后的标注每张图对应一个 .txt │ └── train_list.txt # 图片清单每行一个相对路径 ├── icdar2013/ │ ├── train_images/ │ ├── train_gts/ │ ├── test_images/ │ └── test_gts/ ├── icdar2015/ │ ├── train_images/ │ ├── train_gts/ │ └── test_images/ ├── scut-eng-char/ │ ├── train_images/ │ └── train_gts/ └── total_text/ ├── train_images/ ├── train_gts/ └── test_images/各数据集的官方获取渠道说明见仓库 README.md 的Datasets一节SynthText合成文本原图需自行准备标注使用作者提供的转换版标注converted labels解压后图片放入synthtext/train_images/标注放入synthtext/train_gts/并生成train_list.txt清单文件代码中读取路径写死为synthtext/train_list.txt见 maskrcnn_benchmark/config/paths_catalog.py。ICDAR2013 / ICDAR2015按训练/测试拆分为train_images、train_gts、test_images、test_gts评测 GT 压缩包仓库已内置于 evaluation/icdar2015/gt.zip。SCUT训练用英文字符数据放入scut-eng-char/train_images与train_gts。Total-Text训练用转换版标注评测 GT 内置于 evaluation/totaltext/gt.zip。逐数据集准备要点1️⃣ SynthText预训练的地基先用 SynthText 单独预训练配置 configs/pretrain/seg_rec_poly_fuse_feature.yaml 中DATASETS.TRAIN: (synthtext_train,)再进入混合微调是官方复现的标准流程。关键点除图片和标注外train_list.txt缺一不可——加载器 maskrcnn_benchmark/data/datasets/synthtext.py 会逐行读取清单来拼接图片与标注路径该配置中AUG: True且MAX_ROTATE_THETA: 90会做随机旋转增强。2️⃣ ICDAR2013训练 旋转鲁棒性试金石ICDAR2013 既参与混合训练又被用来构造旋转评测集。评测时把测试集按 0°~90°含负角度旋转检验模型在极端倾斜下的表现用 tools/convert_dataset.py 指定旋转角度生成旋转数据集内部完成图片旋转 多边形标注同步旋转核心函数_rotate_image/_rotate_polygons生成结果对应datasets/icdar2013/rotated_test_images_45、rotated_test_gts_45等目录名注册表见 maskrcnn_benchmark/config/paths_catalog.py 中rotated_ic13_test_*条目仓库已内置 13 个角度的评测 GTevaluation/rotated_icdar2013/gt/ 下的gt_0.zip~gt_90.zip、gt_-15.zip~gt_-90.zip旋转后直接用 evaluation/rotated_icdar2013/e2e/script.py 计算 Hmean。3️⃣ ICDAR2015标准评测基准训练集带完整标注train_imagestrain_gts测试集只有图片test_imagesgts_dirNone⚠️ 注意 ICDAR2015 加载时use_charannFalse——它不做字符识别训练只贡献检测与区域信息评测脚本evaluation/icdar2015/e2e/script.pyGT 见 evaluation/icdar2015/gt.zip。4️⃣ SCUTscut-eng-char字符级补充SCUT 英文字符数据集提供大量字符级标注用于强化识别分支。目录为scut-eng-char/train_imagestrain_gts加载器见 maskrcnn_benchmark/data/datasets/scut.py。5️⃣ Total-Text弯曲文本专家弧形/透视文本场景下 ICDAR 类数据集几乎失效Total-Text 补齐这一短板。训练集用转换版标注train_imagestrain_gts测试集仅图片专项评测脚本为 evaluation/totaltext/e2e/script.py并配套处理弯曲文本的 rrc_evaluation_funcs_total_text.py。在配置文件中打开训练开关数据备齐后按以下清单核对两个 YAML 配置即可修改入口统一为DATASETS段检查项预训练配置混合训练配置配置路径configs/pretrain/seg_rec_poly_fuse_feature.yamlconfigs/mixtrain/seg_rec_poly_fuse_feature.yamlDATASETS.TRAIN(synthtext_train,)五个数据集全开DATASETS.RATIOS—[0.25, 0.25, 0.25, 0.125, 0.125]MODEL.WEIGHTImageNet 预训练权重指向预训练产出的权重文件DATASETS.IGNORE_DIFFICULTTrueTrue跳过###困难样本然后执行官方脚本启动训练/测试# 混合训练需先完成 SynthText 预训练 sh train.sh # 测试 sh test.sh训练入口为 tools/train_net.py 与 tools/test_net.py。评测前别漏掉的最后一步词典lexiconsICDAR2015 与 Total-Text 的识别评测需要下载词典包并解压到evaluation/lexicons/README 有下载地址GT 解压把内置的gt.zip解压到对应评测目录如evaluation/icdar2015/e2e/修改评测脚本参数在各script.py中把result_dir指向你的测试输出目录再运行python script.py。常见问题自查清单 ✅症状大概率原因加载时FileNotFoundError找不到标注标注命名不对需为图片名.txt或gt_图片名.txt前缀形式SynthText 读不到任何图片缺少datasets/synthtext/train_list.txt清单文件训练启动即报目录不存在数据未放在MaskTextSpotterV3/datasets/根目录下ICDAR2015 训练报字符标注缺失正常预期该集use_charannFalse无需字符标注旋转评测分数异常未用convert_dataset.py同步旋转标注只旋转了图片总结备齐 MaskTextSpotterV3 的数据其实就三步下载五大数据集 → 按datasets/目录树归位 → 在 YAML 里打开DATASETS.TRAIN开关。其中 SynthText 负责量ICDAR2013/2015 负责真SCUT 负责字符Total-Text 负责弯——缺一不可这正是数据决定鲁棒性上限的原因。# 获取仓库数据集准备前 git clone https://gitcode.com/gh_mirrors/ma/MaskTextSpotterV3【免费下载链接】MaskTextSpotterV3The code of Mask TextSpotter v3: Segmentation Proposal Network for Robust Scene Text Spotting项目地址: https://gitcode.com/gh_mirrors/ma/MaskTextSpotterV3创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进