MaskTextSpotterV3 场景文字检测出分指南:test.sh 一键测试 + ICDAR2015/Total-Text 评测全流程
2026/8/24 17:08:59 网站建设 项目流程

MaskTextSpotterV3 场景文字检测出分指南:test.sh 一键测试 + ICDAR2015/Total-Text 评测全流程

【免费下载链接】MaskTextSpotterV3The code of "Mask TextSpotter v3: Segmentation Proposal Network for Robust Scene Text Spotting"项目地址: https://gitcode.com/gh_mirrors/ma/MaskTextSpotterV3

MaskTextSpotterV3 是 ECCV 2020 论文「Mask TextSpotter v3: Segmentation Proposal Network for Robust Scene Text Spotting」的官方 PyTorch 实现,一个端到端可训练的场景文字检测与识别(Scene Text Spotting)模型。它用分割提议网络(SPN)替代传统 RPN,对旋转、长宽比和弯曲文字更加鲁棒。本文将带你完成test.sh 一键推理 + ICDAR2015 / Total-Text 评测出分的完整流程,从测试到出分只需三步。

🎯 评测流程全景:测试到出分只需一步

整个评测链路非常清晰,理解这条主线后就不会迷路:

下载模型权重 → 运行 sh test.sh 批量推理 → 用 evaluation/ 脚本打分 ↓ ↓ ↓ trained_model.pth output/mixtrain/inference/ Hmean / AP 分数
  • 测试sh test.sh一行命令完成整个测试集推理,结果写入output/mixtrain/inference/<数据集名>/目录
  • 出分evaluation/下按数据集分好了三个官方评测目录,各配一份 script.py 打分脚本

📦 第一步:环境与模型准备

准备项说明位置
Python 环境Python 3.7 + PyTorch ≥ 1.4(推荐 1.4)按 README.md 安装
模型权重trained_model.pth,放入output/mixtrain/官方在 README「Models」一节提供下载
测试图片如 ICDAR2015 放在datasets/icdar2015/test_imagesMaskTextSpotterV3/datasets/
评测词表(lexicons)解压后放到evaluation/lexicons/README「Evaluation」一节

测试脚本入口是 tools/test_net.py,它加载配置文件、恢复模型权重,然后调用 maskrcnn_benchmark/engine/text_inference.py 的inference函数完成逐张推理。

🚀 第二步:test.sh 一键推理

仓库根目录的 test.sh 内容只有一行:

python tools/test_net.py --config-file configs/mixtrain/seg_rec_poly_fuse_feature.yaml

真正决定行为的是配置文件 configs/mixtrain/seg_rec_poly_fuse_feature.yaml。运行前请重点核对这 4 个参数:

配置项作用建议值
TEST.DATASETS要测哪个数据集ICDAR2015 用("icdar_2015_test",),弯曲文字用("total_text_test",)
INPUT.MIN_SIZE_TEST测试输入短边分辨率默认1000,冲更高分数可试1440
MODEL.WEIGHT权重路径./output/mixtrain/trained_model.pth
OUTPUT_DIR推理结果输出目录./output/mixtrain

⚠️常见坑:默认配置里DATASETS.TESTtotal_text_test,如果你只想测 ICDAR2015,记得先把它改成("icdar_2015_test",),否则模型会对错误的测试集做推理。

运行sh test.sh后,每张图的推理结果(检测框、多边形、mask 识别结果、序列识别结果)会被写到output/mixtrain/inference/<数据集名>/,这个目录就是下一步打分的输入。

📊 第三步(A):ICDAR2015 出分

ICDAR2015 是场景文字检测最常用的基准,评测代码在 evaluation/icdar2015/e2e/ 目录:

  1. 改参数:打开 evaluation/icdar2015/e2e/script.py,修改末尾__main__中的四个变量:
    • results_dir:指向你的推理输出目录,例如output/mixtrain/inference/icdar_2015_test/model_xxx_results/
    • lexicon_type3为强词表(推荐),2弱词表,1通用词表
    • score_det = 0.01:检测框筛选阈值
    • score_rec = 0.4score_rec_seq = 0.7:mask 识别与序列识别的置信度阈值
  2. 运行打分
cd evaluation/icdar2015/e2e/ python script.py

脚本会先由 prepare_results.py 把模型输出整理成标准提交格式,再由 rrc_evaluation_funcs.py 与../gt.zip真值对比,最终打印全局Precision / Recall / Hmean / AP

📊 第三步(B):Total-Text 弯曲文字出分

Total-Text 专门考察任意弯曲形状的文字检测,能很好体现 MaskTextSpotter v3 分割提议网络的优势。流程完全一致,只是换了目录和阈值:

cd evaluation/totaltext/e2e/ # 编辑 script.py 中的 results_dir 指向你的输出目录 python script.py

evaluation/totaltext/e2e/script.py 的推荐参数:score_det = 0.05score_rec = 0.5score_rec_seq = 0.9。多边形 IoU 匹配逻辑与 ICDAR2015 略有不同(支持任意点多边形),均由 rrc_evaluation_funcs_total_text.py 处理。

💡 项目还附带旋转鲁棒性评测 evaluation/rotated_icdar2013/,可用 tools/convert_dataset.py 把 ICDAR2013 按 15°~90° 各角度旋转生成测试集,再走同样的测试 + 打分流程。

🛠 出分常见排查清单

  • Use APEX for mixed precision:说明没装 NVIDIA apex,按 README 安装后重试
  • Hmean 偏低:优先把INPUT.MIN_SIZE_TEST从 1000 提到 1440(官方模型即在此分辨率下验证)
  • 分数忽高忽低:检查score_det / score_rec / score_rec_seq是否与对应数据集匹配,两个数据集的阈值不同
  • 缺文件报错:确认evaluation/lexicons/词表已解压、gt.zipevaluation/<数据集>/
  • 输出目录找不到:核对OUTPUT_DIRscript.pyresults_dir是否指向同一处

总结

MaskTextSpotterV3 的评测流程可以浓缩为一句话:改好 YAML 里的TEST.DATASETSMODEL.WEIGHT→ 跑sh test.sh→ 在evaluation/对应目录改results_dirscript.py出分。掌握这条链路后,无论是 ICDAR2015、Total-Text 还是旋转 ICDAR2013,出分都只是换个目录、换组阈值的事。

【免费下载链接】MaskTextSpotterV3The code of "Mask TextSpotter v3: Segmentation Proposal Network for Robust Scene Text Spotting"项目地址: https://gitcode.com/gh_mirrors/ma/MaskTextSpotterV3

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

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询