基于深度学习的在线字临摹分析系统设计*

2020-03-16 05:17张承强张永爱顾兴权
网络安全与数据管理 2020年2期
关键词:真迹残差名人

张承强,张永爱,顾兴权

(1.福州大学 物理与信息工程学院,福建 福州 350116; 2.西安电子科技大学 通信工程学院,陕西 西安 710000)

0 引言

在我国的各种古代艺术门类中,最具标志性,最能集中地、典型地、鲜明地、持续而广泛地表现民族精神和时代精神的艺术,非书法莫属[1]。数字化的书法字体临摹成为了很多大众的爱好,数字化的手写字识别往往和深度学习相结合。深度学习是新兴的机器学习研究领域,旨在研究怎样从数据中自动地更好地提取多层特征表示,其核心思想是通过数据驱动的方式,采用一系列的非线性(如激活函数)变换,从原始数据中提取由低层到高层、由具体到抽象、由一般到特定语义的特征[2]。ResNet(Residual Neural Network)是由微软研究院的He Kaiming等四名华人提出的强大深度学习网络[3-4],在ILSVRC2015比赛中取得冠军,ResNet的结构可以极快地加速神经网络[5-6]的训练,模型的准确率也有比较大的提升,本文的深度学习网络采用的就是ResNet网络。

目前,在线的名人书法临摹基本上都是照着某名人的书法临摹再比较相似度,且都是触屏书写[7-8]。触屏书写存在灵敏度强弱、屏幕大小和数字量化等因素而导致的手写字细节丢失问题,而本文的系统平台是在现实的纸等实物上进行书写后再拍照进行上传,有很多的细节能够保留且很方便,只要制作的名人书法字越精细,对细节的比较就越充分。此外,现今的在线名人书法临摹也限制了用户书写行为,只能对着名人的字进行临摹,本文的系统平台除此之外,还可以把日常的手写字与多位名人字进行比较,再展示与其最相似的名人真迹字并分析其结果。本文的平台可以面向大众娱乐,方便快捷地将自己的手写字与名人字比较。

1 深度学习

1.1 ResNet原理

ResNet借鉴了以往网络结构的优点,使用残差学习方法解决了在信息传递时出现的信息丢失、损耗等问题,整个网络只需要学习输入与输出不同的那一部分,使得网络学习的目标和难度得到简化。与传统的卷积神经网络相比,ResNet提出了两种映射,恒等映射(identity mapping)和残差映射(residual mapping)。图1是一个简单的Residual Block,恒等映射就是图1中的曲线(Shortcut Connection)跳过2层权重(层数是可变的,也可以是3层)后把X直接送到2层后的ReLU层的映射,之所以称为恒等,是因为X跳过了权重层,没有经过任何计算,即G(X)=X;残差映射指普通网络原来的部分。

图1 Residual Block

曲线部分使得每一个残差块很容易地学习到恒等映射结果,并且在反向传播时可以使梯度直接传播到更浅的层。在传统卷积神经网络上多次使用Residual Block,就形成了残差网络(Residual Network,ResNet)。残差网络解决了传统极深网络的退化问题,让训练极深的网络成为可能[9]。残差网络最常见的层数有50层和101层等。

1.2 ResNet50模型

ResNet50即共50层的残差网络,如图2所示,包括conv1,conv2.x,conv3.x,conv4.x和conv5.x卷积层,以及输出层。每个卷积层包含有7×7,3×3和1×1大小的数量不等的卷积核,以及池化(pool)层和激活(ReLU)层。

图2 ResNet50网络配置

2 ResNet50模型训练与测试

本文的ResNet50网络使用目前流行的深度学习库TensorFlow搭建,首先需要对数据进行预处理,本文自制了名人书法字数据集并将其与普通中文字数据集合在一起,以增加模型训练的数据量;为了增强模型的泛化能力以提高准确率,本文将数据集进行数据增强,接着对图片进行大小尺寸的调整,本实验将图片尺寸调整为224×224的大小;TensorFlow官方推荐的训练数据标准格式是tfrecord格式,此格式能够将图片数据和标签一起存储成二进制文件,能够在TensorFlow中实现快速地复制、移动、读取和存储操作,由于本文使用TensorFlow库进行模型搭建,可再将上述的数据集制作成tfrecord格式[10]。

数据预处理完成后,就开始搭建ResNet50网络,导入TensorFlow库和加载预训练模型,设置batch_size、学习率和网络输入的大小,指定模型保存路径,损失函数选择sigmoid交叉熵,优化器选择Adam,并设置其他相关参数[11]。

设置完所有的参数后,对模型进行训练,如图3和图4所示,分别是模型训练过程中的精度曲线和损失值(loss)曲线。

图3 迭代次数与准确率的关系图

图4 迭代次数与损失值的关系图

3 字相似度算法

本文的字相似度算法比现有的传统字相似度算法简单,且符合直观感受,有易理解和计算量小等特点。

该算法分为以下几步,为便于论述,将手写字图片和名人书法字图片分别设为图片A和图片B。

(1)将图片A和图片B灰度化。最初的图片是三通道的彩色图,需要将其灰度化为单通道图片以便下面只在单通道上二值化。

(2)自定义二值化。将图片A和图片B中的每个像素值大于设定的阈值(比如100)的像素点全部设为255,否则设为0。对于白纸黑字的手写字,经过实验得出阈值取100能有很好的二值图,即小斑点和划痕相对较少。

(3)处理图片A和B中的细小斑点、小划痕、孤立点和噪音等像素,将其全部设为255 (此步骤是为了下一步截字精确)。

(4)分别将图片A和B中的字恰好截取出来,得到图片A1和B1。精确截字是为了在计算字之间的相似度时减少背景的影响。

(5)将图片A1的尺寸设置为与图片B1相同,得到图片A2和B1。同尺寸后才能用步骤(7)中算法进行相似度的计算。名人书法字的尺寸不作改变是为了要保持其字的形状不变,所以将手写字设为与其同尺寸。

(6)分别将图片A2和B1颜色取反,得到图片A3和B2。取反之后的图片变成了白字黑背景的图片,因为像素值为255表示白色,0表示黑色,所以白字黑背景进行相似度计算时才是对字进行相似度比较,不然黑字白背景其实是对背景进行相似度计算。

(7)将图片A3和B2采用修改的均方误差算法[12](即PMSE)进行相似度计算,原理如式(1),得到的计算结果就是图片A和B的相似度值。

(1)

其中,m为图片的宽,n为图片的高,I(i,j)和K(i,j)分别表示两张不同图片在(i,j)点的像素值。

改进的均方误差算法的Python代码实现如下:

def Pmse(imageA,imageB):

err = np.sum((imageA.astype("float") - imageB.astype("float")) ** 2)

err /= float(imageA.shape[0] * imageA.shape[1]*255*255)

return 1-err

相似度算法的实际实现过程如图5所示。不过一般名人书法字最终的反色二值图会预先制作好存放在数据库中,这样做一方面是为了减少系统平台处理时间,另一方面名人书法字由于岁月的侵蚀可能会出现一些非理性的脏点,需要人工处理好再存于数据库中。

字相似度算法在不同手写字与不同名人真迹字之间的实际比较效果如图6所示,其中的名人真迹字和手写字是经过上述步骤(1)~(6)处理后的,组别1和组别2中的名人真迹字是相同的真迹字,手写字是不同的,从相似值的大小来看组别1更相似,也更符合人的主观感受;组别2和组别3的名人真迹字是不同的,手写字是相同的,从相似值的结果看组别3更相似,也更符合人的主观感受;组别4中的名人真迹字与手写字主观感受上看起来很像,但由于名人真迹字边缘过于粗糙而使相似度的值没有超过0.9。通过实验认为相似度的值超过0.88(即88%)为手写字的结构基本准确(即相似)。

图5 字相似度计算实例流程图

图6 字相似度算法效果

本文的字相似度算法比书法字骨架提取、骨架相似度计算和点化形态相似度计算等综合性算法显然更简单和计算量更小,具有代码易实现、实时性明显和通用性(其他文字亦可)等特点,效果直观上无区别,优势明显。

4 在线Android平台开发

本文开发的基于深度学习的在线手写字与名人书法字相似度比较Android平台,将Android、Web服务器、深度学习和字相似度算法结合在一起。整个平台有四大模块,分别为Android应用的图片上传模块[13]、识别模块、字相似度计算模块和Android应用显示结果模块。Android应用的图片上传模块:用户可以进行本地相册的图片上传或对手写字拍照后再上传;识别模块:上传的图片被Web网站接收并预处理后,通过已训练好的文字深度学习模型(即ResNet50模型)识别用户提交的图片,成功识别为某字;字相似度计算模块:在成功识别后,Web网站[14]会将上传的图片与数据库中各名人书法字的该字图片进行相似度的计算,并返回结果;Android应用显示结果模块:显示内容包括用户提交的图片、最相似的名人真迹图片、相似值和分析结果等信息。在线Android平台结构如图7所示。

图7 在线Android系统平台

Android应用的图片上传模块的显示界面如图8所示,这是一个用HTML+CSS+Javascript技术简单设计的网页页面[15],Android应用是一个定制的浏览器,Webview方法已经设置了指定的Web服务器网址,在打开Android应用时会访问指定的Web网站,Web网站将会响应设计好的网页页面代码,通过HTTP协议将代码发送到Android端,定制的浏览器会解析页面代码进行页面渲染。Android应用的显示界面也可以做成微信小程序等界面[16]。

图8 Android应用已选定图片的界面

Android应用显示结果模块的显示界面如图9所示,图8上传手写字到Web服务器之后,服务器处理完成后会将处理结果返回给Android端,Android界面会展示返回的处理结果,该界面展示的信息有识别到的手写字、相似度计算的结果、手写字图片和最相似的名人字图片以及简单评价等。

图9 后台处理结果展示

5 结束语

本文将自制的名人真迹字数据集和普通中文数据集合在一起训练了ResNet50模型,训练好的ResNet50网络对手写汉字的识别精度非常高;改进的字相似度算法对手写字与名人真迹字的相似度计算的结果完全符合人的主观感受且计算量不大,适合做Android端与服务器端的在线相似度识别计算任务;最后将训练好的ResNet50模型和字相似度算法放在搭建好的Web网站上,再与Android应用相结合,实现了一个实时在线手写字与名人真迹字的相似度比较系统。此外本平台若增加钢笔字和水笔等字的数据集,也可对钢笔和水笔的名人真迹字进行相似度的计算。

猜你喜欢
真迹残差名人
基于残差-注意力和LSTM的心律失常心拍分类方法研究
基于双向GRU与残差拟合的车辆跟驰建模
基于残差学习的自适应无人机目标跟踪算法
舔名人
基于深度卷积的残差三生网络研究与应用
名人摔跤后
血泪史诗
你不可不知的中外名人
名人書系列
吴昌硕真迹换“真迹”