如何快捷高效地开发智能图像识别产品
本文将结合笔者多次智能图像识别产品、OCR识别项目开发经历,从工程技术角度对这一流程进行总结和介绍
明确识别任务
在项目开发之前,要明确产品需求,即识别任务到底是什么。
例如在做身份证信息识别之前,需要沟通如下内容:
- 识别应用的场景如何,用户通过API调用我们的云端识别服务程序,还是识别程序直接在移动端直接部署
- 用户上传的身份证图像是规范矫正过的,还是随意角度放置的
- 用户需要识别哪些关键字段,身份证反面需不需要识别
确定工程技术路线
在了解大概的识别任务后,可以着手进行工程技术路线调研和设计了。
开发分两条线,工程一条线,技术一条线。
技术线先行,在确定了技术可行,原型通过验证后,可快速启动工程线。
毫无疑问技术线是智能图像识别产品的开发重点。
例如在身份证识别项目中,我结合使用场景设计了目标检测,校正,文本检测,文本识别和信息抽取等几个步骤。
对于每块内容需要进行技术调研和评估:
- 目标检测的方法如YOLO、Faster RCNN、SSD等有哪些有缺点 校正。
- 如何进行透视变换,求解变换矩阵。
- 如何进行文本检测,CTPN有哪些限制。
- 文本识别需要多少样本,样本如何获取。
- 信息如何抽取,需不需要NLP支持。
工程线:重要的是规划
工程线需要设计前后端架构,明确开发要点。
本文着重从技术实现方向介绍智能图像识别产品的开发流程
数据准备
数据准备包含以下步骤内容:
- 原始数据收集
由于原始数据内容可能涉及隐私,比如身份证,银行卡图像,
在不触犯法律情况下可通过内部资源贡献,或者通过网络途径获取。- 数据标签化
对获取的原始图集进行打标签,可交由外包专业团队。
这部分需要设计标签的格式以及储存方式。建议采用 labelme 进行标注
例如可以使用create polygons 创建文本检测和识别标签,使用create points 创建关键点标签
- 增强数据
由于原始数据集规模有限,需要通过透视变换,模糊,抖动,背景融合进行图像增强,提升训练效果。- 数据生成(部分情况可用)
对于印刷文字识别等,可通过工具机器生成出以假乱真的字符文本图像集。一个比较好用的 工具 。
模型训练
从数据集中分割出训练,测试用数据,使用训练数据集进行模型测试。
对于某个产品的开发过程,可能需要训练多个模型来满足功能需求。
例如在身份证识别应用中,我们需要训练一下模型:
- 目标定位模型,实现身份证目标的位置大小坐标检测。
- 关键点检测模型,实现身份证关键点的坐标检测,求解透视变换矩阵,校正图像。
- 文本检测模型,实现文本区域的定位。
- 文本识别模型,实现文本区域内字符序列的预测。
各个模型需要根据具体场景选择合适的开发算法。
模型训练可能持续一天甚至一周,需要不时观察模型训练输出,根据loss变化调整训练姿势。
测试评估
这里的测试评估不仅关注单模型的表现效果,同时对模型集成后的表现效果进行测试
对建立的测试集进行测试,评估单模型精度和集成后整体精度。
模型发布
在测试集上表现出色的可以进行模型发布。
一般需要freeze graph,将模型文件和权重文件整合合并为一个文件,便于发布。
一些应用场景,还需要对模型进行压缩,向目标设备进行适配。
多模型发布需要根据技术路线和方案进行集成,以实现完整的产品能力。
可通过建立开放平台对外提供识别服务,对外输出AI能力。
总结
好啦, 如何快捷高效地开发智能图像识别产品,你学会了吗??
欢迎同学们访问如下链接,测试评估交流!!
Email:1161242024@qq.com
通用卡证信息高精度识别流程
智能图像识别产品开发流程
如何设计一个开放平台
转载:https://blog.csdn.net/u011306419/article/details/105708224