一种基于自编码卷积网络的线条检测方法与流程

文档序号:17131866发布日期:2019-03-16 01:22阅读:205来源:国知局
一种基于自编码卷积网络的线条检测方法与流程

本发明涉及图像处理技术领域,特别涉及一种基于自编码卷积网络的线条检测方法。



背景技术:

线条检测通常作为图像处理应用的前置步骤,高效精确的线条检测方法对后续图像处理流程具有显著影响。传统的图像处理方法,存在对噪声较大或干扰较多的图像线条检测效果不佳的问题。



技术实现要素:

本发明的目的是克服上述背景技术中不足,提供一种基于自编码卷积网络的线条检测方法,通过基于自编码和卷积神经网络构建了一种新型的用于线条检测的神经网络结构,通过深度学习技术手段来提升线条检测的高效性和精确性,可实现高效、精确地检测图像中的干扰线。

为了达到上述的技术效果,本发明采取以下技术方案:

一种基于自编码卷积网络的线条检测方法,包括以下步骤:

a.构造神经网络的训练数据集;

b.构造基于自编码的卷积神经网络;

c.从所述训练数据集里随机选取a个样本为一批,一共b批的训练数据,设置学习率为c,以均方误差mse为损失函数,采用adam优化方法训练d个轮回进行卷积神经网络的训练;其中,a为16的倍数,c小于0.001大于0.000001;

d.训练完成后保存经步骤c训练好的模型,并采用训练好的模型进行线条检测。

为有效的训练神经网络,需要大量的数据,人工标注数据将耗费大量时间,为了有效提升标注效率,本方案中采取以下流程构造网络的训练的数据集,既能有效控制训练数据量,又能节省大量标注时间,所述步骤a中构造神经网络的训练数据集时具体包括以下步骤:

a1.确定需要构造的样本数量n、构造图片的大小长col,宽row、设置计数器cnt=0;

a2.随机选择背景颜色,且背景颜色灰度值选择范围为[0,255];

a3.随机选择字体颜色,字体颜色灰度值选择范围为[0,255]且字体颜色不等于背景颜色;

a4.在0.2*min(row,col)至0.8*min(row,col)之间随机选择字体大小,从而确保选择的字体大小在整个图片中看来不会太小和太大,又能保证随机性;

a5.在需要训练的字体中随机选择一种字体;

a6.在需要训练的汉字的集合中随机选择一个汉字char;

a7.随机生成1至4条线条lines,其中,随机生成的线条需要在row*col的矩形中可以内置;

a8.生成两个row*col的画布分别为画布canvas1和画布canvas2;

a9.在画布canvas1上画上汉字char和线条lines,在画布canvas2上画线条lines;

a10.保存画布canvas1为图片p_cnt_1,保存画布canvas2为图片p_cnt_2;

a11.设置cnt=cnt+1;

a12.判断cnt是否等于n,如果等于n则进入步骤a13,如果不等于n则返回步骤a2;

a13.训练数据集构造流程结束,所有的图片p_cnt_1即为训练数据集的输入,图片p_cnt_2即为对应的线条检测真值,所有的(p_cnt_1,p_cnt_2)数据对记为训练数据集data_train。

进一步地,所述步骤b中构造基于自编码的卷积神经网络时具体包括以下步骤:

b1.构建网络输入层input_image,用以接受训练数据集的输入的图片;

b2.对输入的图片进行卷积运算,卷积的横向步长和纵向步长均为2,卷积核个数为16;

b3.对卷积后的图片进行批归一化处理;

b4.对归一化处理后的图片进行relu激活;

b5.对步骤b4输出的图片进行卷积运算,卷积的横向步长和纵向步长均为2,卷积核个数为32;

b6.对卷积后的图片进行批归一化处理;

b7.对归一化处理后的图片进行relu激活;

b8.对步骤b7输出的特征图片进行卷积运算,卷积的横向步长和纵向步长均为2,卷积核个数为16;

b9.对卷积后的特征图片进行批归一化处理;

b10.对归一化处理后的特征图片进行relu激活;

b11.对步骤b10输出的特征图片进行反卷积运算,反卷积的横向步长和纵向步长均为2,卷积核个数为32;

b12.对反卷积后的特征图片进行relu激活;

b13.对步骤b12输出的特征图片进行反卷积运算,反卷积的横向步长和纵向步长均为2,卷积核个数为16;

b14.对反卷积后的特征图片进行relu激活;

b15.对步骤b14输出的特征图片进行反卷积运算,反卷积的横向步长和纵向步长均为2,卷积核个数为1;

b16.对反卷积后的特征图片进行relu激活;

b17.relu激活后的得到图片即为网络的输出图片,也即神经网络提取的线条图片;

自编码器能够有效通过编码器提取图片的主要特征忽略次要特征,然后通过解码器恢复主要特征,本方案中采用上述流程构建基于自编码的卷积神经网络该网络结构简单且能有效提取图片中的线条特征。

进一步地,所述步骤c中进行卷积神经网络的训练时具体包括以下步骤:

c1.设置训练的批次大小为a,训练的轮数为d,每轮训练的总批次数目为b,初始学习率为c,设置轮数计数器的计数为0即epoch_cnt=0,设置批次数计数器的计数为0即batch_cnt=0;

c2.从步骤a构建的训练数据集data_train中随机选择a个数据对;

c3.将选择的数据对中的图片p_cnt_1输入到步骤b1的网络输入层,网络输出得到图片p_cnt_2_pred;

c4.通过线条检测真值p_cnt_2和网络输出结果p_cnt_2_pred计算预测误差mse;

c5.通过adam优化方法进行误差的反向传播,更新网络参数;

c6.令batch_cnt=batch_cnt+1,判断batch_cnt的计数是否等于b,如果是进入步骤c7,否则,返回步骤c2;

c7.令epoch_cnt=epoch_cnt+1,判断epoch_cnt是否等于d,如果是则进入步骤c8,否则,返回步骤c2;

c8.训练结束,保存训练好的网络参数及网络,并记为line_net。

进一步地,a等于16,b等于20000,c等于0.00001,d等于10。

本发明与现有技术相比,具有以下的有益效果:。

附图说明

图1是本发明的一个实施例的训练数据集构造流程示意图。

图2是本发明的一个实施例中构建的基于自编码的卷积神经网络的结构示意图。

图3是本发明的一个实施例的卷积自编码网络的训练流程示意图。

图4是本发明的一个实施例的线条检测效果对比图。

具体实施方式

下面结合本发明的实施例对本发明作进一步的阐述和说明。

实施例:

本实施例中将具体结合服务于长虹财务云的ocr系统来阐述本发明的基于自编码卷积网络的线条检测方法。

步骤1:构造神经网络的训练数据集

为有效的训练神经网络,需要大量的数据,人工标注数据将耗费大量时间,本实施例中将具体采用如图1所示的流程构造网络的训练的数据集,实现有效控制训练数据量并节省大量标注时间。

如图1所示,构造训练数据集时具体包括以下步骤:

步骤1-1:设置需要构造的样本数量n、构造图片的大小(长col,宽row)、设置计数器cnt=0;

步骤1-2:随机选择背景颜色backgroud_color,背景颜色灰度值范围[0,255];

步骤1-3:随机选择字体颜色font_color,选择范围为[0,255]且字体颜色不等于背景颜色;

步骤1-4:在0.2*min(row,col)至0.8*min(row,col)之间随机选择字体大小font_size;确保选择的字体大小在整个图片中看来不会太小和太大,又能保证随机性;

步骤1-5:在需要训练的字体中随机选择一种字体font_style,例如本实施例中需要训练的字体为黑体和放松字体,则其中随机选择一种字体即可;

步骤1-6:在字典库(需要训练的汉字的集合)中随机选择一个汉字char;

步骤1-7:随机生成1-4条线条lines,随机生成的线条需要在row*col的矩形中可以内置;

步骤1-8:生成两个row*col的画布分别为画布canvas1和画布canvas2;

步骤1-9:在画布canvas1上画上char和lines,在画布canvas2上画线条lines;

步骤1-10:保存画布canvas1为图片pcnt_1,保存画布canvas2为图片pcnt_2;

步骤1-11:设置cnt=cnt+1;

步骤1-12:判断cnt是否等于n,如果等于n则转步骤1-13,如果不等于n则跳转步骤1-2;

步骤1-13:流程结束,所有的图片p_cnt_1即为训练数据集的输入,图片p_cnt_2即为对应的线条检测真值,所有的(p_cnt_1,p_cnt_2)数据对记为训练数据集data_train。

其中,步骤1-2到步骤1-12为一个循环,每个循环会产生一对图片(p_cnt_1,p_cnt_2),当cnt等于n时,将产生n个图片对,这n个图片对构成了训练数据集;即:data_train=[(p_1_1,p_1_2),(p_2_1,p_2_2),(p_3_1,p_3_2),…,(p_n_1,p_n_2)]。

步骤2:构造基于自编码的卷积神经网络

自编码器能够有效通过编码器提取图片的主要特征忽略次要特征,然后通过解码器恢复主要特征;本实施例中构造基于自编码的卷积神经网络时具体采用图2所示的网络结构,该网络结构简单且能有效提取图片中的线条特征。

其中,图2中input_image代表构造的训练数据集中的p1即含有线条的文字图片,conv_x*y*z,表示水平步长为x,垂直步长为y,卷积核个数为z的卷积运算,如conv_2*2*16表示水平步长为2,垂直步长为2,卷积核个数为16的卷积运算;batchnormalization代表批处理操作;relu代表采用relu激活函数;deconv_x*y*z代表水平步长为x,竖直步长为y,卷积核个数为z的反卷积运算,如deconv_2*2*16代表水平步长为2,竖直步长为2,卷积核个数为16的反卷积运算;output_image表示网络预测的输出图片即:检测到的线条。

构造基于自编码的卷积神经网络时没具体包括以下步骤:

步骤2-1:构建输入层input_image,用以接受输入的图片;

步骤2-2:对输入的图片进行卷积运算,卷积的横向步长和纵向步长均为2,卷积核个数为16;

步骤2-3:对卷积后的图片进行批归一化处理;

步骤2-4:对归一化处理后的图像进行relu激活;

步骤2-5:对步骤2-4输出的特征图片进行卷积运算,卷积的横向步长和纵向步长均为2,卷积核个数为32;

步骤2-6:对卷积后的图片进行批归一化处理;

步骤2-7:对归一化处理后的图像进行relu激活;

步骤2-8:对步骤2-7输出的特征图片进行卷积运算,卷积的横向步长和纵向步长均为2,卷积核个数为16;

步骤2-9:对卷积后的图片进行批归一化处理;

步骤2-10:对归一化处理后的图像进行relu激活;

步骤2-11:对步骤2-10输出的特征图片进行反卷积运算,反卷积的横向步长和纵向步长均为2,卷积核个数为32;

步骤2-12:对反卷积后的特征图片进行relu激活;

步骤2-13:对步骤2-12输出的特征图片进行反卷积运算,反卷积的横向步长和纵向步长均为2,卷积核个数为16;

步骤2-14:对反卷积后的特征图片进行relu激活;

步骤2-15:对步骤2-14输出的特征图片进行反卷积运算,反卷积的横向步长和纵向步长均为2,卷积核个数为1;

步骤2-16:对反卷积后的特征图片进行relu激活;

步骤2-17:relu激活后的得到图片即为网络的输出图片,也即神经网络提取的线条图片。

步骤3:从训练数据集里随机选取16个样本为一批,一共20000批的训练数据,设置学习率为0.00001,以均方误差mse为损失函数,采用adam优化方法训练10个轮回;具体的,本实施例中采用如图3所示的流程进行卷积神经网络的训练;其中,一批中样本数目的多少一定程度上影响网络的收敛速度,adam优化方法也能加速网络的收敛。

如图3所示,进行卷积神经网络的训练时具体包括以下步骤:

步骤3-1:设置训练的批次大小为batch_size=16,训练的轮数为epoch=10,每轮训练的总批次数目total_batches=20000,初始学习率learning_rate=0.00001,设置计数器epoch_cnt=0,batch_cnt=0;

步骤3-2:从步骤1构建的训练数据data_train中随机选择batch_size个数据对;

步骤3-3:将选择的数据对中的p_cnt_1输入到步骤2-1的网络输入层,网络输出得到p_cnt_2_pred;

步骤3-4:通过线条检测真值p_cnt_2和网络输出结果p_cnt_2_pred计算预测误差mse;其中,预测误差mse是通过步骤2构造网络的预测结果output_image,与训练数据的p2即线条检测真值来计算的。

步骤3-5:通过adam优化方法进行误差的反向传播,更新网络参数;

步骤3-6:令batch_cnt=batch_cnt+1,判断batch_cnt是否等于total_batches,如果是则跳转步骤3-7,如果不是则跳转步骤3-2;

步骤3-7:令epoch_cnt=epoch_cnt+1,判断epoch_cnt是否等于epoch,如果是则跳转步骤3-8,如果不是则跳转步骤3-2;

步骤3-8:训练结束,保存训练好的网络参数及网络,并记为line_net,其中,保存网络模型及训练好的网络参数的作用是用来预测新输入图片的output_image。

步骤4:在步骤3训练完成后保存训练好的模型,采用训练好的模型进行线条检测;即导入训练好的模型line_net,采用line_net进行线条检测。

本实施例中线条检测效果图如图4所示,其中,上面一行对应的是原图,下面一行对应的是上面一行各个图片检测线条的结果。

可以理解的是,以上实施方式仅仅是为了说明本发明的原理而采用的示例性实施方式,然而本发明并不局限于此。对于本领域内的普通技术人员而言,在不脱离本发明的精神和实质的情况下,可以做出各种变型和改进,这些变型和改进也视为本发明的保护范围。

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