ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

为什么 MaskTextSpotterV3 不怕旋转?Rotated ICDAR2013 15个角度鲁棒性实验全解

为什么 MaskTextSpotterV3 不怕旋转?Rotated ICDAR2013 15个角度鲁棒性实验全解 为什么 MaskTextSpotterV3 不怕旋转Rotated ICDAR2013 15个角度鲁棒性实验全解【免费下载链接】MaskTextSpotterV3The code of Mask TextSpotter v3: Segmentation Proposal Network for Robust Scene Text Spotting项目地址: https://gitcode.com/gh_mirrors/ma/MaskTextSpotterV3MaskTextSpotterV3 是一个端到端可训练的场景文本检测与识别Scene Text Spotting模型它用**分割候选网络SPN, Segmentation Proposal Network**替代传统 RPN显著提升了模型对旋转、长宽比和任意形状的鲁棒性。本文将完整拆解它的 Rotated ICDAR2013 旋转鲁棒性实验15 个角度如何生成、如何评测、为什么它敢直面大角度旋转。一、旋转为什么是场景文本的噩梦真实场景中的文字千姿百态招牌歪斜、文档倒置、透视变形。传统检测器如 Faster R-CNN 系依赖水平锚框anchor文字一旦旋转水平框要么覆盖大量背景、要么切掉文字本身检测精度断崖式下跌。MaskTextSpotterV3 的破局思路是不预测框先预测文字像素级 mask。文字长什么样就分割什么样再由 mask 反推出旋转框rotated box和多边形天然对角度免疫。二、Rotated ICDAR201315 个角度的实验是怎么做的这个实验的核心思想很简单粗暴——把 ICDAR2013 测试集整体旋转然后看模型精度掉多少。1. 生成旋转数据集入口脚本是tools/convert_dataset.py流程如下读取 ICDAR2013 测试集的 233 张图片img_1.jpg~img_233.jpg与对应 GT 标注修改脚本顶部的angle变量如angle 45即可指定旋转角度对每张图做两步处理图像旋转先用_rotate_image()计算覆盖旋转后图像的最小外接矩形填充画布后用cv2.warpAffine仿射旋转保证文字不裁切标注同步旋转用 shapely 的affinity.rotate对 GT 四点多边形做同样的旋转写入新的 GT 文件90° 是特例直接用cv2.transpose flip完成避免插值损失cd tools # 修改 convert_dataset.py 中的 angle 后运行 python convert_dataset.py2. 15 个角度的 GT 已随仓库提供仓库的evaluation/rotated_icdar2013/gt/目录下预置了全部角度的评测 GT 压缩包从 -90° 到 90°步长 15°含 85° 等中间档共 15 个文件文件对应角度gt.zip0°原始基准gt_-15.zip~gt_-90.zip-15° / -30° / -45° / -60° / -75° / -90°gt_0.zip~gt_75.zip0° / 15° / 30° / 45° / 60° / 75°gt_85.zip、gt_90.zip85° / 90°也就是说你只需要生成旋转后的测试图片GT 已经是现成的直接可跑评测。3. 运行推理与评测推理修改configs/mixtrain/seg_rec_poly_fuse_feature.yaml中的DATASETS.TEST为对应旋转测试集如rotated_ic13_test_45然后执行sh test.sh评测evaluation/rotated_icdar2013/e2e/script.py封装了 ICDAR 官方评测逻辑IoU 阈值 0.5、文字识别精确匹配、Hmean 计算只需同步修改其中的angle和结果目录再运行python script.py即可得到该角度的 P/R/Hmeancd evaluation/rotated_icdar2013/e2e/ # 修改 script.py 中 angle 与 results_dir 后 python script.py三、为什么它在 15 个角度上都能扛住① SPN 用 mask 代替水平锚框根本原因分割头定义在maskrcnn_benchmark/modeling/segmentation/segmentation.py它在 FPN 多尺度特征上输出像素级文字概率图。推理时maskrcnn_benchmark/engine/text_inference.py会把 mask 转成rotated_boxes 和 polygons两种几何表示——文字无论转多少度mask 形状不变框自然跟着转。② 训练时就用旋转增强洗过混合训练配置configs/mixtrain/seg_rec_poly_fuse_feature.yaml中有两处关键设计DATASETS.MAX_ROTATE_THETA: 90训练数据随机旋转最大 90°模型在训练阶段就见过各种姿态训练集混合了 SynthText、ICDAR2013、ICDAR2015、SCUT、Total-TextDATASETS.TRAIN其中Total-Text 本身就大量包含曲线/倾斜文本等于提前做了旋转预训练③ 任意形状 任意长宽比一并覆盖同一套 mask 候选机制顺带解决了长条状文字、弯折文字问题——这也是论文标题中 Robust Scene Text Spotting 的含义对旋转、长宽比、形状三类形变同时鲁棒。四、复现实验的最快路径 准备环境按README.md装好 Python3.7 PyTorch CUDApython setup.py build develop编译算子下载预训练模型README.md的 Models 一节提供 mixtrain 权重Google Drive / 百度网盘生成旋转测试集cd tools python convert_dataset.py先设angle推理配置configs/mixtrain/seg_rec_poly_fuse_feature.yaml的TEST.DATASETS和MODEL.WEIGHT运行sh test.sh评测cd evaluation/rotated_icdar2013/e2e python script.py对照gt/下同名角度的 zip 得到 Hmean换个角度重复 3~5即可得到完整的 15 角度鲁棒性曲线想快速看效果也可以先跑单图 demopython tools/demo.py观察它对旋转文字的检测框是否依然贴合。五、小结问题MaskTextSpotterV3 的答案旋转文字检测差SPN 分割 mask 后反推旋转框与角度解耦只在小角度有效训练时MAX_ROTATE_THETA: 90随机旋转增强怎么证明ICDAR2013 整体旋转 -90°~90° 共 15 档角度GT 与评测脚本开箱即用Rotated ICDAR2013 实验的价值在于它用同一套权重、同一套评测脚本把模型丢进 15 个角度逐一考试让旋转鲁棒性不再是论文里的一句话而是一条可复现、可对比的 Hmean 曲线。对于任何做场景文字识别的开发者这套实验模板都值得直接搬走使用。【免费下载链接】MaskTextSpotterV3The code of Mask TextSpotter v3: Segmentation Proposal Network for Robust Scene Text Spotting项目地址: https://gitcode.com/gh_mirrors/ma/MaskTextSpotterV3创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表