基于深度学习关键点检测的发票图像畸变校正方法与流程

文档序号:19675525发布日期:2020-01-10 23:16阅读:588来源:国知局
基于深度学习关键点检测的发票图像畸变校正方法与流程

本发明涉及图像处理技术领域,特别涉及一种基于深度学习关键点检测的发票图像畸变校正方法。



背景技术:

近几年,ai技术的发展突飞猛进,其应用领域也越来越广,如机器人、语音识别、图像识别、计算机视觉、自动驾驶等领域。在图像识别方面,基于深度学习的ocr识别以其识别精度高、识别速度快等优点被业界广泛采用。众所周知,ocr技术一般分为文本检测和文本识别两个技术分支,虽然近期也有推出基于神经网络的端到端ocr识别,但其在特定场景下的效果还不理想。因此,主流的ocr识别技术还是分为文本检测和文本识别两个方向。而ocr识别精度不仅受限于识别算法的好坏,文本检测的效果也起到了决定性的作用。而图像质量对文本检测效果的影响也较为显著。尤其是移动互联网时代下,移动设备的兴起使得普通用户对ocr应用的需求也日益增大,然而,由于用户行为的不可控性,各种场景下移动设备采集到的图像也千差万别。其中,图像畸变(非平拍)对图像文字区域定位与识别的影响尤为明显,如果能在图像识别之前对采集到的图像进行校正,则能从源头有效提高文字识别的准确度。



技术实现要素:

本发明的目的是提供一种基于深度学习关键点检测的发票图像畸变校正方法,解决对票据图像畸变进行校正的问题。

本发明解决其技术问题,采用的技术方案是:基于深度学习关键点检测的发票图像畸变校正方法,包括如下步骤:

步骤1、训练数据标注及增强;

步骤2、设置网络结构及训练参数;

步骤3、利用网络结构及训练参数设置训练关键点检测模型,保存训练后的模型;

步骤4、利用训练后的模型进行票据关键点检测;

步骤5、利用检测到的关键点进行票据对齐。

具体的是,步骤1中,采用部分人工标注数据,而后用数据增强的策略生成大量训练数据,其具体包括如下步骤:

步骤101、标注数据准备;

步骤102、数据标注;

步骤103、数据增强;

步骤104、数据格式转换;

步骤105、数据集划分。

进一步的是,步骤101中,标注数据准备时,收集不同类别的待标注图片,每类1000张,定义每类票据的关键点位置及名称,关键点个数大于4个;

所述关键点的定义按如下准则执行:

若发票图片中有表格且表格样式固定,则实际定义时以表格中的角点为准,且选取的关键点分布于发票票面的各个位置;

若发票图片无表格,则应按照发票的固定文字区域位置为准来定义关键点;

若实际发票图片存在不规整的问题导致部分定义的关键点不可见,则在执行实际标注任务时只标注相应的可见关键点。

具体的是,步骤102中,数据标注时,有表格的发票图片采用via工具的points任务类型来执行标注,无表格的采用via的rect任务类型来执行标注。

进一步的是,步骤103中,数据增强时,采用标注部分数据,然后对已标注的数据根据实际业务票据图像情况进行图像增强,对训练数据的增强策略使用python的imgaug图像增强库,采用如下方式:

图像随机仿射变换,其中缩放尺度范围为(0.5,2),旋转角度范围为[(-15,15),(75,105),(165,195),(255,285)],单位为度,平移量为(-200,200),单位为像素;

图像随机透视变换,scale参数随机取值范围为(0.025,0.15);

图像随机加噪;

图像对比度拉伸;

图像增加阴影噪声;

以上数据增强方式融合将已标注训练数据进行扩充增强。

具体的是,步骤104中,数据格式转换时,对不同类型票据的标注数据进行格式融合及转换,整理成数据集,对于特定类型的票据标注数据,其对应的标注数据不变,对于其他类型的票据标注数据,其对应点标注数据用(0,0,0)填充。

进一步的是,步骤105中,数据集划分时,将整理好的数据集按照9:1的比例随机划分成训练集和测试集。

具体的是,步骤2具体包括如下步骤:

步骤201、训练网络结构,基础的特征提取采用resnet101作为特征提取模块,后跟golbalnet和refinenet,其中,golbalnet用于所有关键点的检测,refinenet用于预测关键点的修正;

步骤202、模型初始化参数,基础特征提取模块采用resnet101在imagenet上的预训练权重;总的训练epochs=30,单gpu下batch-size=4,初始化图片输入尺寸为512*512,采用adam优化器,设置学习率为0.0001,损失函数为计算各预测点坐标与真实点坐标的距离之和。

进一步的是,步骤3中具体包括如下步骤;

步骤301、设定算法参数,模型初始化参数按照步骤202中进行设置;

步骤302、建立网络模型;

步骤303、判断当前epoch是否小于epochs,若是则转步骤304,若否则转至步骤4;

步骤304、从训练集中取batch-size张发票图片,对模型进行训练,并利用adam进行模型算法更新;

步骤305、判断训练集中所有图片是否均已完成训练,若是,则转步骤306,若否则转至步骤304;

步骤306、用测试集验证模型的精度,并保存训练好的模型,并转至步骤303。

具体的是,步骤4中,票据关键点检测时,利用训练得到的模型对待校正图像进行关键点检测,得到检测到的关键点记为predict_points,记模板图片中对应的关键点集为template_points,然后使用检测到的关键点与标准票据图片的关键点计算其对应的透视变换矩阵记为homography,具体计算采用opencv的findhomography方法;

步骤5中,票据对齐时,将得到的透视变换矩阵作homography用于待校正图像src上得到校正后的图像dst,校正采用opencv的warpperspective方法。

本发明的有益效果是,通过上述基于深度学习关键点检测的发票图像畸变校正方法,可以精确检测发票图像中的关键点,进而利用检测到的关键点与标准票据图片的关键点计算其对应的透视变换矩阵,将变换矩阵作用于待处理图像上即可得到校正后的图像。该方法快速、精确、适用于自然场景,对校正后的图片进行识别很大程度上提高了ocr识别的准确率。为下游ocr应用减少人力物力投入,节省资源。

附图说明

图1为本发明基于深度学习关键点检测的发票图像畸变校正方法的流程图。

具体实施方式

下面结合附图,详细描述本发明的技术方案。

本发明所述基于深度学习关键点检测的发票图像畸变校正方法,其流程图参见图1,其中,该方法包括如下步骤:

步骤1、训练数据标注及增强。为有效的训练神经网络,需要大量的标注数据,人工标注数据将耗费大量时间。为保证标注数据的质量并尽量减少标注成本,本发明采用部分人工标注数据,而后用数据增强的策略生成大量训练数据的方法,具体如下:

步骤101、标注数据准备。收集不同类别的待标注图片,每类1000张左右,定义每类票据的关键点位置及名称,关键点个数要大于4个。关键点的定义按如下准则执行:1、若发票图片中有表格且表格样式固定,则实际定义时以表格中的角点为准,且选取的关键点分布于发票票面的各个位置。2、若发票图片无表格,则应按照发票的固定文字区域位置为准来定义关键点。此外,需要注意的是,实际发票图片可能存在不规整,如残缺、遮挡、扭曲、严重曝光等的问题导致部分定义的关键点不可见。针对此种情况,可在执行实际标注任务时只标注相应的可见关键点即可。

步骤102、数据标注。实际执行标注任务时,有表格的发票图片采用via工具的points任务类型来执行标注。无表格的可采用via的rect任务类型来执行标注,例如:定额发票,其中相应的关键点取矩形的四个顶点或四条边的中点。

步骤103、数据增强。受限于标注成本,实际可采用标注部分数据,然后对已标注的数据根据实际业务票据图像情况进行图像增强,在节省标注成本的同时也可增加训练模型的鲁棒性及精度。本发明中对训练数据的增强策略使用python的imgaug图像增强库,采用如下方式。1、图像随机仿射变换(缩放、旋转、平移),其中缩放尺度范围为(0.5,2),旋转角度范围为[(-15,15),(75,105),(165,195),(255,285)],单位为度,平移量为(-200,200),单位为像素;2、图像随机透视变换,scale参数随机取值范围为(0.025,0.15);3、图像随机加噪;4、图像对比度拉伸;5、图像增加阴影噪声。以上数据增强方式融合将已标注训练数据进行扩充增强。

步骤104、数据格式转换。为了支持多种票据类型同时进行关键点检测,本发明对不同类型票据的标注数据进行格式融合及转换。采用类似one-hot方式的数据类型。对于特定类型的票据标注数据,其对应的标注数据不变,对于其他类型的票据标注数据,其对应点标注数据用(0,0,0)填充。

步骤105、数据集划分。将步骤104中整理好的数据集按照9:1的比例随机划分成训练集和测试集。

步骤2、设置网络结构及训练参数。

步骤201、训练网络结构。训练采用类似于cpn的模型结构,基础的特征提取采用resnet101作为特征提取模块,后跟golbalnet和refinenet。其中,golbalnet用于所有关键点的检测,refinenet用于预测关键点的修正。

步骤202、模型初始化参数。基础特征提取模块采用resnet101在imagenet上的预训练权重;总的训练epochs=30,单gpu下batch-size=4,初始化图片输入尺寸为512*512,采用adam优化器,设置学习率为0.0001,损失函数为计算各预测点坐标与真实点坐标的距离之和;

步骤3、利用网络结构及训练参数设置训练关键点检测模型,保存训练后的模型。利用步骤2的网络结构及参数设置训练关键点检测模型,保存训练后的模型参数,用于关键点检测。具体训练步骤如下:

步骤301、设定算法参数,模型初始化参数按照步骤202中进行设置;

步骤302、建立网络模型;

步骤303、判断当前epoch是否小于epochs,若是则转步骤304,若否则转至步骤4;

步骤304、从训练集中取batch-size张发票图片,对模型进行训练,并利用adam进行模型算法更新;

步骤305、判断训练集中所有图片是否均已完成训练,若是,则转步骤306,若否则转至步骤304;

步骤306、用测试集验证模型的精度,并保存训练好的模型,并转至步骤303。

步骤4、利用训练后的模型进行票据关键点检测。利用步骤3训练得到的模型对待校正图像进行关键点检测,得到检测到的关键点记为predict_points,记模板图片中对应的关键点集为template_points。然后使用检测到的关键点与标准票据图片的关键点计算其对应的透视变换矩阵记为homography。具体计算采用opencv的findhomography方法。

步骤5、利用检测到的关键点进行票据对齐。将步骤4得到的透视变换矩阵作homography用于待校正图像src上得到校正后的图像dst。校正采用opencv的warpperspective方法。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1