票证检测矫正模型介绍
【读光商用矫正模型开源,快来体验吧】票证检测矫正模型在实际生活中有着广泛的需求,例如信息抽取、图像质量判断、证件扫描、票据审计等领等场景,可以大幅提高工作效率和准确性。本次 读光团队 开源了商用票证检测矫正模型,基于海量的真实数据训练,可以从容应对多种复杂场景的票证检测矫正任务,该模型具有以下优点:
- 支持任意角度、多卡证票据等混贴场景,同时检测输入图像任意角度的多个子图区域;
- 基于海量真实数据训练,效果满足国内常见的卡证票据的检测矫正需求;
- 支持子图区域复印件判断、四方向判断,准确率高达 99%;
- 矫正效果、推理速度远高于 modelScope 同类模型,详见本文测试报告。
模型效果评测
卡证场景
评测方式 | det_precison | det_recall | det_f-score | 方向判别 | 复印件判别 | 推理速度(FPS) |
---|---|---|---|---|---|---|
卡证检测矫正模型 | 99.63% | 96.80% | 98.19% | 无此能力 | 无此能力 | 1.83 |
读光-票证检测矫正模型 | 99.64% | 99.85% | 99.75% | 99.78% | 99.70% | 14.30 |
备注:1)私有测试集,该测试集包含身份证、银行卡、驾驶证、行驶证等常见的卡证数据共计 1200 张;2)测试的速度均不包含后处理的图像透视变换;测试使用 GPU 型号:Tesla A100-PCIE-80GB
票据场景
评测方式 | det_precison | det_recall | det_f-score | 方向判别 | 复印件判别 | 推理速度(FPS) |
---|---|---|---|---|---|---|
卡证检测矫正模型 | 98.90% | 82.43% | 89.92% | 无此能力 | 无此能力 | 1.79 |
读光-票证检测矫正模型 | 99.92% | 100.00% | 99.96% | 99.83% | 99.17% | 12.55 |
备注:1)私有测试集,该测试集包含营业执照、增值税发票、机动车销售发票、出生证明等常见的票据和资质数据共计 1200 张;2)测试的速度均不包含后处理的图像透视变换;测试使用 GPU 型号:Tesla A100-PCIE-80GB
模型描述
下图是实现流程:输入图片,基于 Resnet18-FPN 提取特征后,在 1/4 尺寸处通过三条分支分别识别出票证的中心点、偏移量(中心点到4个顶点距离)、中心点偏移量(为了得到精准的中心点),即可解码数出票证区域的四边形框;再用透视变换将票证拉平得到矫正后的票证信息;与此同时,分类分支识别出子图朝向,用于而切割的子图转正。
效果展示
下图是模型效果:
期望模型使用方式以及适用范围
输入图片,模型自动检测出所有票证并矫正为水平图片。用户可以自行尝试各种输入图片。具体调用方式请参考代码示例。
如何使用
在安装完成 ModelScope 之后即可使用 card-detection-correction 的能力。
算法流程
测试时的主要预处理和后处理如下:
- 图像预处理:将输入图片按照比例缩放,长边 Resize 到 768,短边 Pad 到长短边相等,同时有减均值、除方差等归一化操作。
- 模型卡证区域检测:对输入图像中的卡证票据区域进行检测,并对
卡证票据的方向
和复印件类型
进行分类; - 后处理矫正:根据
卡证区域检测框
和卡证票据的方向
对卡证区域进行透视变化,并转为水平方向;
使用范例
from modelscope.pipelines import pipeline
from modelscope.utils.constant import Tasks
card_detection_correction = pipeline(Tasks.card_detection_correction, model='damo/cv_resnet18_card_correction')
result = card_detection_correction('https://modelscope.oss-cn-beijing.aliyuncs.com/test/images/card_detection_correction.jpg')
print(result)
输出字段定义
字段名称 | 说明 |
---|---|
polygons | 框检得到的任意四边形四个顶点,依次为左上、右上、右下、左下 |
scores | 框检置信度,标识检测的可行度,值域 0 到 1 之间 |
labels | 卡证方向分类,枚举类型,0、1、2、3 依次表示卡证顺时针旋转 90度、180度、270度 |
layout | 复印件分类,枚举类型,0 表示非复印件,1 表示复印件 |
output_imgs | 矫正后的子图区域像素值 |
所有字段第一个维度的长度相等且一一对应,为图片中票证的数量。比如polygons[0]、scores[0]、labels[0]、layout[0]、output_imgs[0]表示第一个子图的坐标、置信度、方向、是否复印件、拉平后的子图。
模型训练流程
本模型利用 imageNet 预训练参数进行初始化,然后在海量真实场景训练数据集上进行训练;本模型暂不支持用户自行训练;
评论