手写字符样本的生成方法及装置、电子设备、存储介质
文献发布时间:2023-06-19 11:29:13
技术领域
本申请涉及自然语言处理技术领域,特别涉及一种手写字符样本的构生成方法及装置、电子设备、计算机可读存储介质。
背景技术
在零售场景进行商品识别任务中,经常需要同时对商品的价格签及相应的价格进行识别。当待识别的价签为超市标准机打价签或电子价签的情况下,通常可使用价签检测——OCR识别技术进行有效解决,但当待识别价签为小超市或社区零售店的手写价签,目前手写字符检测识别方法则通常无法达到很高的识别准确率,主要原因包括:手写字符多样性高(字体、角度)、手写价签背景多样性高(不同背景颜色纹理),手写字符样本数据量小,不同类型数据不均衡性强。
因此,仅通过线上实际拍摄数据构建价签识别模型训练集,通常在实际使用时无法达到很好的泛化性能,某些价签场景识别效果较差,并且通过反复补充实际数据也无法达到稳定快速的识别准确率提升。
发明内容
本申请实施例提供了一种手写字符样本的生成方法,用以实现样本的多样性,提供训练模型的泛化性能。
本申请实施例提供了一种手写字符样本的生成方法,所述方法包括:
获取无字符纹理的背景图片以及不同字符类型的手写字符图片;
针对每种字符类型,对所述字符类型的手写字符图片进行预处理,获得所述字符类型对应的第一字符掩码图;
根据所述第一字符掩码图,确定所述字符类型的手写字符图片的字符区域,并对所述字符区域进行数据增强,获得所述字符类型对应的第二字符掩码图;
从任一字符类型对应的第一字符掩码图和第二字符掩码图中随机选取目标字符掩码图,将所述目标字符掩码图与所述背景图片进行融合,得到手写字符样本。
在一实施例中,获取无字符纹理的背景图片之前,所述方法还包括:
获取存在字符纹理的样本图片;
对所述样本图片进行已有字符的擦除,获得所述无字符纹理的背景图片。
在一实施例中,所述对所述字符类型的手写字符图片进行预处理,获得所述字符类型对应的第一字符掩码图,包括:
将所述手写字符图片转化为灰度图,并对所述灰度图进行单尺度图像增强操作,获得字符边缘图;
对所述字符边缘图进行图像开运算操作,获得所述第一字符掩码图。
在一实施例中,所述根据所述第一字符掩码图,确定所述字符类型的手写字符图片的字符区域,并对所述字符区域进行数据增强,获得所述字符类型对应的第二字符掩码图,包括:
根据所述第一字符掩码图,对所述灰度图进行二值化处理,获得预处理图片;
根据所述第一字符掩码图,获得所述预处理图片的字符区域,对所述字符区域进行数据增强,获得所述第二字符掩码图。
在一实施例中,所述根据所述第一字符掩码图,对所述灰度图进行二值化处理,获得预处理图片,包括:
根据所述第一字符掩码图确定所述灰度图的字符内区域和字符外区域;
计算所述字符内区域的像素平均值和字符外区域的像素平均值;
若所述字符外区域的像素平均值大于所述字符内区域的像素平均值,对所述灰度图进行二值化处理,获得预处理图片。
在一实施例中,在所述计算所述字符内区域的像素平均值和字符外区域的像素平均值之后,所述方法还包括:
若所述字符外区域的像素平均值小于等于所述字符内区域的像素平均值,对所述灰度图进行反二值化处理,获得所述预处理图片。
在一实施例中,所述无字符纹理的背景图片包括原始无字符图片和去除字符后的图片;从任一字符类型对应的第一字符掩码图和第二字符掩码图中随机选取目标字符掩码图,将所述目标字符掩码图与所述背景图片进行融合,得到手写字符样本,包括:
从多种字符类型中随机选取目标字符类型,并从所述目标字符类型对应的第一字符掩码图和第二字符掩码图中随机选取目标字符掩码图;
从所述原始无字符图片和去除字符后的图片中随机选取目标背景图,将所述目标背景图与所述目标字符掩码图进行叠加,得到所述手写字符样本。
本申请实施例还提供了一种手写字符样本的生成装置,所述装置包括:
图片获取模块,用于获取无字符纹理的背景图片以及不同字符类型的手写字符图片;
预处理模块,用于针对每种字符类型,对所述字符类型的手写字符图片进行预处理,获得所述字符类型对应的第一字符掩码图;
数据增强模块,用于根据所述第一字符掩码图,确定所述字符类型的手写字符图片的字符区域,并对所述字符区域进行数据增强,获得所述字符类型对应的第二字符掩码图;
样本生成模块,用于从任一字符类型对应的第一字符掩码图和第二字符掩码图中随机选取目标字符掩码图,将所述目标字符掩码图与所述背景图片进行融合,得到手写字符样本。
本申请实施例还提供了一种电子设备,所述电子设备包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为执行上述手写字符样本的生成方法。
本申请实施例还提供了一种计算机可读存储介质,其特征在于,所述存储介质存储有计算机程序,所述计算机程序可由处理器执行以完成上述手写字符样本的生成方法。
本申请上述实施例提供的技术方案,通过提取手写字符图片的第一字符掩码图,并基于第一字符掩码图确定手写字符图片的字符区域,对字符区域进行数据增强,生成第二字符掩码图,由此多种形式的字符掩码图可以有已有的不同的背景图片进行融合,生成多样化的手写字符样本,多样化的手写字符样本,可以提高训练得到字符识别模型的泛化能力,提高模型准确性。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍。
图1为本申请一实施例提供的电子设备的结构示意图;
图2是本申请实施例提供的手写字符样本的生成方法的流程示意图;
图3是图2对应实施例中步骤S220的细节流程图;
图4是本申请实施例提供的处理过程中不同环节得到的图片示意图;
图5是图2对应实施例中步骤S230的细节流程图;
图6是图5对应实施例中步骤S231的细节流程图;
图7为本申请一实施例提供手写字符样本的生成装置的框图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本申请的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
图1是本申请实施例提供的电子设备的结构示意图。该电子设备100可以用于执行本申请实施例提供的手写字符样本的生成方法。如图1所示,该电子设备100包括:一个或多个处理器102、一个或多个存储处理器可执行指令的存储器104。其中,所述处理器102被配置为执行本申请下述实施例提供的手写字符样本的生成方法。
所述处理器102可以是网关,也可以为智能终端,或者是包含中央处理单元(CPU)、图像处理单元(GPU)或者具有数据处理能力和/或指令执行能力的其它形式的处理单元的设备,可以对所述电子设备100中的其它组件的数据进行处理,还可以控制所述电子设备100中的其它组件以执行期望的功能。
所述存储器104可以包括一个或多个计算机程序产品,所述计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。所述易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。所述非易失性存储器例如可以包括只读存储器(ROM)、硬盘、闪存等。在所述计算机可读存储介质上可以存储一个或多个计算机程序指令,处理器102可以运行所述程序指令,以实现下文所述的手写字符样本的生成方法。在所述计算机可读存储介质中还可以存储各种应用程序和各种数据,例如所述应用程序使用和/或产生的各种数据等。
在一实施例中,图1所示电子设备100还可以包括输入装置106、输出装置108以及数据采集装置110,这些组件通过总线系统112和/或其它形式的连接机构(未示出)互连。应当注意,图1所示的电子设备100的组件和结构只是示例性的,而非限制性的,根据需要,所述电子设备100也可以具有其他组件和结构。
所述输入装置106可以是用户用来输入指令的装置,并且可以包括键盘、鼠标、麦克风和触摸屏等中的一个或多个。所述输出装置108可以向外部(例如,用户)输出各种信息(例如,图像或声音),并且可以包括显示器、扬声器等中的一个或多个。所述数据采集装置110可以采集对象的图像,并且将所采集的图像存储在所述存储器104中以供其它组件使用。示例性地,该数据采集装置110可以为摄像头。
在一实施例中,用于实现本申请实施例的手写字符样本的生成方法的示例电子设备100中的各器件可以集成设置,也可以分散设置,诸如将处理器102、存储器104、输入装置106和输出装置108集成设置于一体,而将数据采集装置110分离设置。
在一实施例中,用于实现本申请实施例的手写字符样本的生成方法的示例电子设备100可以被实现为诸如智能手机、平板电脑、台式电脑等智能终端。
图2是本申请实施例提供的手写字符样本的生成方法的流程示意图。该方法可以由计算机等电子设备执行。如图2所示,该方法包括以下步骤S210-步骤S240。
步骤S210:获取无字符纹理的背景图片以及不同字符类型的手写字符图片。
其中,无字符纹理的背景图片是指不存在字符的图片,可以作为手写字符的背景图。背景图片可以是不存在字符的彩色图片(例如,白色/红色/蓝色/黄色/绿色/黑色等彩色无字符纹理的图片),也可以是提前去除字符后的彩色图片。字符类型可以有0、1、2、3……8、9、#等。不同字符类型的手写字符图片可以分类保存。手写字符图片是指从实际拍摄的图片中裁剪出来的字符外最小外接矩形。手写字符图片包含的字符类型,可以提前标注得到。手写字符可以是八段码,也可以是纯手写字体。举例来说,手写字符可以是手写的价格标签中的数字。
在一实施例中,可以将数据集分为真实数据集A和标准数据集B,真实数据集A和标准数据集B均包含背景图片和手写字符图片两个部分。但是标准数据集B中的背景图片是无字符纹理的图片。而真实数据集A包含的是MNIST手写数字数据集,是具有字符纹理的样本图片,故针对真实数据集A,可以先对样本图片A-bg1进行已有字符的擦除(即进行纹理修复),获得无字符纹理的背景图片A-bg2。纹理修复可以是用邻近的像素的像素值替换字符所在像素的像素值,使其看起来与字符周围的像素值差异太大。之后对真实数据集A和标准数据集B可以采用下述的方法进行处理。
步骤S220:针对每种字符类型,对所述字符类型的手写字符图片进行预处理,获得所述字符类型对应的第一字符掩码图。
其中,第一字符掩码图是指字符所在像素点为白色,其他区域为黑色的图片,为与其他字符掩码图进行区分,此处称为第一字符掩码图mask0。
在一实施例中,预处理过程如图3所示,包括以下步骤S221-步骤S222。
步骤S221:将所述手写字符图片转化为灰度图,并对所述灰度图进行单尺度图像增强操作,获得字符边缘图;
手写字符图片可以是RGB图片,灰度图是指用0-255来表示每个像素点的像素值的图片。具体可以根据RGB图像与灰度图像的转换公式进行转换。
单尺度图像增强操作可以基于SSR(Single Scale Retinex)算法,SSR算法的具体细节可以参照现有技术。通过对灰度图进行SSR增强操作,可以得到字符边缘图。字符边缘图是指仅显示字符边缘的图像,如图4所示。第一列为手写字符图像的灰度图。第二列为单尺度图像增强操作后得到的字符边缘图。
步骤S222:对所述字符边缘图进行图像开运算操作,获得所述第一字符掩码图。
其中,第一字符掩码图可以如图4所示的第四列所示。其中,字符所在像素点的灰度值可以用255表示,其他区域的像素值可以用0表示。图像开运算操作是指先对图像腐蚀后膨胀。作用是用来消除小的早上,平滑形状边界,并且不改变其面积,可以去除小颗粒噪声,断开物体之间的粘连。图像开运算操作的具体过程可以参照现有技术实现。
步骤S230:根据所述第一字符掩码图,确定所述字符类型的手写字符图片的字符区域,并对所述字符区域进行数据增强,获得所述字符类型对应的第二字符掩码图。
其中,字符区域是指字符外接多边形框。具体可以根据第一字符掩码图中灰度值为255的像素点的位置,在手写字符图片中找出这些位置的像素点,构成字符区域。数据增强可以是对字符区域进行可控参数范围内的几何变换(例如仿射变换、透视变换、弹性变换、颜色变换、对比度、饱和度变换等),从而得到增强后的字符前景图片。之后参照上述步骤S221和步骤S222将字符前景图片转换成灰度图,进而进行单尺度图像增强和图像开运算操作,即可得到第二字符掩码图mask1。第一字符掩码图和第二字符掩码图可以使前景字符的形式多样化,从而扩充样本数量。
在一实施例中,如图5所示,上述步骤S230具体包括步骤S231-步骤S232。
步骤S231:根据所述第一字符掩码图,对所述灰度图进行二值化处理,获得预处理图片。
其中,预处理图像可以认为是中间图像,灰度图像经过二值化处理后得到的图像。
在一实施例中,如图6所示,上述步骤S231具体包括:
步骤S2311:根据所述第一字符掩码图确定所述灰度图的字符内区域和字符外区域。
其中,字符内区域是指字符所在像素点。字符外区域是指除字符所在像素点以外的像素点。从图4的第四列可知,字符所在像素点可以是白色,非字符的像素点可以是黑色,故根据第一字符掩码图中灰度值为255的像素点的位置,将灰度图中该位置的像素点标记为字符内区域。其他像素点标记为字符外区域。
步骤S2312:计算所述字符内区域的像素平均值和字符外区域的像素平均值。
字符内区域的像素平均值Sin是指字符内区域中所有像素点的灰度值的平均值。字符外区域的像素平均值Sout是指字符外区域中所有像素点的灰度值的平均值。
步骤S2313:若所述字符外区域的像素平均值大于所述字符内区域的像素平均值,对所述灰度图进行二值化处理,获得预处理图片fg1。
若Sout>Sin,则对灰度图像进行正常的二值化处理,即设定阈值,将大于阈值的像素点的灰度值取值255,小于等于的像素点的灰度值则取值为0,得到预处理图片。
步骤S2313’:若所述字符外区域的像素平均值小于等于所述字符内区域的像素平均值,对所述灰度图进行反二值化处理,获得所述预处理图片fg1。
若Sout≤Sin,对灰度图进行反二值化处理,即将大于阈值的像素点的灰度值取值0,小于等于阈值的像素点的灰度值取值为255,得到预处理图片。
步骤S232:根据所述第一字符掩码图,获得所述预处理图片的字符区域,对所述字符区域进行数据增强,获得所述第二字符掩码图。
根据第一字符掩码图中的字符位置,预处理图片fg1中对应的位置即为字符区域。可以对该区域进行数据增强(例如仿射变换、透视变换、弹性变换等),得到字符前景图片fg2。之后参照上述步骤S221和步骤S222对该字符前景图片进行单尺度图像增强和图像开运算操作,即可得到第二字符掩码图mask1。
步骤S240:从任一字符类型对应的第一字符掩码图和第二字符掩码图中随机选取目标字符掩码图,将所述目标字符掩码图与所述背景图片进行融合,得到手写字符样本。
其中,目标字符掩码图是指任意一种字符类型的字符掩码图,可能是第一字符掩码图,也可能是第二字符掩码图。目标字符掩码图与背景图片的融合,可以是将目标字符掩码图与背景图片进行叠加。手写字符样本可以认为是目标字符掩码图与背景图片叠加后得到的图片。
在一实施例中,背景图片包括原始无字符图片B-bg和去除字符后的图片A-bg2。原始无字符图片是指不存在字符的原始图片。去除字符后的图片是指原始有字符的图片去除字符后得到的图片。可以从多种字符类型中随机选取目标字符类型(例如选择2)。目标字符类型是指从多种字符类型中选取的任意一种字符类型。进而可以从所述目标字符类型对应的第一字符掩码图和第二字符掩码图中随机选取目标字符掩码图;从所述原始无字符图片和去除字符后的图片中随机选取目标背景图,将所述目标背景图与所述目标字符掩码图进行叠加,得到所述手写字符样本。
目标背景图是指从所有背景图片中选取的任意一张背景图片。将目标字符掩码图与选取的背景图片进行叠加,即可得到手写字符样本。通过遍历背景图片,遍历所有字符掩码图,可以生成大量的手写字符样本。大量手写字符样本可以用于字符识别模型的训练,从而提高模型的泛化能力。
在一实施例中,由于原始数据集分为真实数据集A和标准数据集B,故作为前景的字符掩码图可以有真实数据集的第一字符掩码图A-fg(mask0),真实数据集的第二字符掩码图A-fg1(mask1),标准数据集的第一字符掩码图B-fg(mask2),标准数据集的第二字符掩码图B-fg1(mask3)。作为背景的背景图片有真实数据集的去除字符后的背景图片A-bg2,标准数据集的背景图片B-bg。可以将字符掩码图按照字符类型(0~9)进行分类,先随机选取一种字符类型,之后从这种字符类型的字符掩码图中随机选取一种字符掩码图,从A-bg2和B-bg的背景图片中随机选取一种背景图片,将选取的字符掩码图和选取的背景图片进行融合,即可生成新的手写字符样本。根据需要,还可以改变字符掩码图的字符的颜色,例如将字符掩码图扩增为RGB图片,从而进一步扩增手写字符样本,实现手写字符样本的多样化。
自然场景中的文本通常具有丰富的语义信息,在图像识别中具有重要作用,因此在过去几十年里,自然场景文字的识别和应用发生了巨大的进步,但伴随而来的大量训练数据的获取和标注难度,使得场景文字编辑也随之得以发展。目前,场景文字编辑主要有两大难点:一是文本风格的迁移,二是背景纹理的保持;其中,文本风格包括多种因素:字体、颜色、空间透视变换等。
目前,通用的图片风格迁移方法普遍使用基于GAN的深度学习方法,基于GAN的框架主要包含两个模块——生成模型和判别模型进行对抗训练,以达到良好的最终效果。但基于GAN的已有方法却很难直接应用于文本编辑任务,因为通常目标文本在风格迁移过程中一般需要对形状进行较大的改变,并且难将源图片文本风格完整的迁移到目标文本上;与此同时,还要对源图片的目标区域的原有文本进行擦除、但同时保留源文件的背景纹理信息。
本申请旨在充分利用已有手写数字字体风格多样性,通过已有可能作为背景的背景图片数据,构建具有形态多样性的手写字符样本,用于字符识别模型的训练,提升最终识别准确率本申请主要包含以下几个部分:一是前景文本提取模块,通过原始标注框、二值化等一系列图片处理模式,获取数字部分骨架区域及相关mask;二是前景数据增强模块,对前景数字进行色彩、几何形变(透视变换、仿射变换等)等数据增强处理,并获取变换后的区域骨架mask;三是对已有字符的图片进行数据区域纹理修复,获取前景mask后用周边区域值进行插值处理。四是,结合前景纹理mask,将前景图片与背景图片进行无缝区域融合。
下述为本申请装置实施例,可以用于执行本申请上述手写字符样本的生成方法实施例。对于本申请装置实施例中未披露的细节,请参照本申请手写字符样本的生成方法实施例。
图7为本申请一实施例示出的一种手写字符样本的生成装置的框图。如图7所示,该装置包括:图片获取模块710、预处理模块720、数据增强模块730以及样本生成模块740。
图片获取模块710,用于获取无字符纹理的背景图片以及不同字符类型的手写字符图片;
预处理模块720,用于针对每种字符类型,对所述字符类型的手写字符图片进行预处理,获得所述字符类型对应的第一字符掩码图;
数据增强模块730,用于根据所述第一字符掩码图,确定所述字符类型的手写字符图片的字符区域,并对所述字符区域进行数据增强,获得所述字符类型对应的第二字符掩码图;
样本生成模块740,用于从任一字符类型对应的第一字符掩码图和第二字符掩码图中随机选取目标字符掩码图,将所述目标字符掩码图与所述背景图片进行融合,得到手写字符样本。
上述装置中各个模块的功能和作用的实现过程具体详见上述手写字符样本的生成方法中对应步骤的实现过程,在此不再赘述。
在本申请所提供的几个实施例中,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本申请的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
- 手写字符样本的生成方法及装置、电子设备、存储介质
- 手写体字符生成方法、装置、计算机设备和存储介质