王江江,黃星宇,戰(zhàn)國棟
(大連民族大學 計算機科學與工程學院,遼寧 大連 116650)
文字是一個國家和民族文化的重要象征,也是一種文化傳播和交流的重要載體,文字在文明的傳承和傳播過程中起著至關重要的作用。但由于漢字數(shù)量較多,而且字形多樣,結(jié)構復雜,所以設計一套具有個人風格的字體并不是一件容易的事情,現(xiàn)在電子設備上可用的字體主要由商業(yè)公司的專業(yè)字體設計師制作。在20世紀80年代Strassmann[1]提出了一個二維毛筆模型來模擬毛筆。龐云階等人[2]提出了一種計算機控制的筆式繪圖儀繪圖系統(tǒng),利用毛筆和墨水來實現(xiàn)毛筆書法的模擬。Lee等人[3]構建了一個三維筆刷模型。Xu等人[4]提出了一個六層的字符拆分和合成模型, Zhang等人[5]提出了一種將手寫體漢字轉(zhuǎn)換成手寫體漢字的方法。 2015年,Gatys等人[6]首次提出了一種基于神經(jīng)網(wǎng)絡的風格遷移算法。自從Gatys提出了風格遷移網(wǎng)絡之后,Yu等人[7]試圖將圖畫的風格賦予字符,并將字符變成任何形式的藝術形式。2017年,Tian[8]提出了基于CNN風格遷移模型的“Rewrite”模型。Lian等人[9]提出了使用循環(huán)神經(jīng)網(wǎng)絡[10]的一種基于字符筆畫提取的風格轉(zhuǎn)換方法。Tian在Pix2pix[11]模型的基礎上提出了一種新的方法“Zi2Zi2”[12]模型。
上述研究的漢字字體生成算法可以分為兩類:基于計算機圖像學的方法和基于深度學習的方法。基于計算機圖形學的方法主要是基于筆畫提取的方法,字體生成過程分為筆畫提取和孤立筆畫的重組,但是由于漢字字體的復雜性和多樣性,筆畫提取的準確性很難保證,使得基于計算機圖形學的字體生成方法效果不佳。基于深度學習的主要采用基于CNN風格遷移模型和基于RNN字符筆畫提取的風格轉(zhuǎn)換方法,基于CNN神經(jīng)網(wǎng)絡的風格遷移方法缺乏對特定字體或手寫風格的準確描述,基于RNN字符筆畫提取的風格轉(zhuǎn)換方法雖然對每種字體建立了非剛性的定位配準,準確分析了每個漢字各部分筆畫的位置,但是該方法的數(shù)據(jù)準備過程十分復雜,大大制約了其推廣應用。
本文主要針對現(xiàn)有漢字字體生成模型存在的問題進行了研究,提出了基于改進條件生成對抗網(wǎng)絡的漢字字體生成算法FontToFont,通過引入U-Net網(wǎng)絡結(jié)構,可以使生成器保存更詳細的信息,并有利于模型性能。同時,在訓練過程中使用了四個損失函數(shù):對抗損失、像素損失、類別損失和感知損失。對抗損失有利于生成細節(jié)清晰的圖像。像素損失表示真實圖像和生成圖像之間的像素空間距離,而感知損失從感知方面衡量它們之間的差異。類別損失對預訓練很重要,它使模型能夠同時從多種風格中學習。通過定量和定性的實驗結(jié)果表明,本文提出的模型性能更好,能夠生成結(jié)構層次更加鮮明、細節(jié)更加豐富、輪廓更加清晰的漢字。
本文從字體設計網(wǎng)站上選擇了江南手書、刻石錄顏體、刻石錄鋼筆鶴體三種字體構建本文多風格漢字字體數(shù)據(jù)集。每種字體使用ImageFont模塊轉(zhuǎn)為圖像,每種字體的包含大約4000張漢字圖像,同時本文將圖像大小統(tǒng)一為256×256×3。數(shù)據(jù)集中部分漢字字體圖像如圖2所。采用源字體為黑體。訓練集分別由2 000個源字符圖像和2 000個對應的來自其他風格的目標字符圖像組成。源字體中剩余的字符圖像用于測試。漢字字體圖像均為灰度圖像,同時本文也對不同風格的漢字字體圖像進行了中心對齊。
(1)數(shù)據(jù)集的大小。實驗采用3種不同風格字體進行對比實驗,字體數(shù)量選擇500、1 000、1 500、2 000、2 500、3 000。采用RMSE定性指標進行評價。從圖1的實驗結(jié)果可以看出,隨著字體數(shù)量的增大,RMSE的值逐漸降低,說明數(shù)據(jù)集與生成效果直接呈正比。但是當字體數(shù)量達到2 000時,生成的字體質(zhì)量的效果提升并 不明顯,所以本文考慮到設計師設計字體的勞動復雜度,本文選擇2 000。
圖1 字體生成質(zhì)量與數(shù)據(jù)集大小的關系
(2)模型介紹。本文提出的網(wǎng)絡結(jié)構如圖2。由一個生成器和一個判別器組成,生成器主要有內(nèi)容編碼器、風格遷移模塊、結(jié)果解碼器組成。內(nèi)容編碼器第一層使用卷積神經(jīng)網(wǎng)絡,其余層均采用Conv-InstanceNorm[13]-ReLU結(jié)構;結(jié)果解碼器最后一層采用tanh激活函數(shù),與其他層對應的層采用Deconv-InstanceNorm-ReLU結(jié)構;風格遷移模塊采用6個ResNet[14]中提出的殘差網(wǎng)絡模塊構成。本文也采用了U-Net網(wǎng)絡結(jié)構,考慮到參考字體和生成的字體應該具有相似的結(jié)構來表示相同的內(nèi)容,本文將內(nèi)容編碼器中細節(jié)豐富的低層直接連接到相應的解碼器層。在內(nèi)容編碼器和結(jié)果解碼器之間添加層間跳躍鏈接,這樣可以盡可能的保留字體圖像的底層信息,避免字體圖像在下采樣過程中丟失形成和結(jié)構信息。
圖2 網(wǎng)絡模型
網(wǎng)絡模型詳細見表1。
表1 網(wǎng)絡詳細參數(shù)
(1)對抗損失函數(shù)。從最初的生成性對抗損失開始。通過一個帶有判別器D的最小最大值游戲,訓 練生成器G將樣本從噪聲x映射到真實分布y。在訓練階段,生成器G試圖生成具有真實 外觀的假圖像以混淆判別器D。同時,D旨在區(qū)分真實樣本和生成的樣本。對于圖像到 圖像的轉(zhuǎn)換任務,本文關注的是將真實圖像從一種風格轉(zhuǎn)換為另一種風格,而不是從 隨機噪聲轉(zhuǎn)換為真實圖像,因此判別器D需要最小化下面定義的對抗損失函數(shù):
(1)
此外,G試圖生成具有真實外觀的假圖像以混淆判別器D,所示生成器G最小化下面定義的對抗損失函數(shù):
(2)
本文為了提高生成對抗網(wǎng)絡的訓練穩(wěn)定性以及提高生成對抗網(wǎng)絡的圖像生成質(zhì)量,采用WGAN[15]提出的對抗損失來優(yōu)化本文提出的漢字字體生成網(wǎng)絡模型參數(shù)。并且在判別器D中使用梯度懲罰項,使得判別器D滿足連續(xù)性條件。
(3)
其中‖‖采用L2范數(shù),表示0到1之間的均勻分布,
(4)
(2)像素損失函數(shù)。像素級損失在圖像的像素級別進行懲罰,常見的像素級損失有歐氏距離、均方誤差(Mean Square Error,MSE)、交叉熵損失(Cross Entropy Loss)等。本文采用了L1距離作為像素級別損失,因為其優(yōu)化過程相比交叉熵損失穩(wěn)定,比均方誤差、L2距離的約束結(jié)果更銳利。
δL1=Ex∈pdata,z∈pinput||x-G(z)||1。
(5)
像素級損失一般只能約束生成圖像的低頻部分,也就是圖像的輪廓、顏色等信息;像素級損失只能約束每個單獨像素對比度的呈現(xiàn),沒有考慮到與周圍像素的關系,因此需要進一步使用其他損失約束生成圖像。
(3)字體風格類損失函數(shù)。為了生成高質(zhì)量的字體圖像,重要的是使模型不僅知道它自己的樣式,還知道其他字體樣式。因此,使模型能夠同時學習多種字體樣式是非常重要的[16],因此,在字符嵌入進入解碼器之前,通過將不可訓練的高斯噪聲作為樣式嵌入連接到字符嵌入來使用類別嵌入。為了防止模型將樣式混合在一起并生成看起來不像任何提供的目標的字符,添加了多類類別損失來監(jiān)督鑒別器預測生成的字符的樣式[17]。其中表示經(jīng)過判別器D得出的字體種類的概率分布,t表示目標字體真實圖像,c表示目標字體的標簽。字體風格類損失函數(shù)的定義為
(6)
將上述公式中的真實樣本圖像t替換為生成器生成的圖像,就可以得到生成器的字體風格類損失函數(shù)。損失函數(shù)的定義如
(7)
生成器 G通過最小化這個損失函數(shù),以此來保證生成的假圖的風格種類能夠被鑒別器正確的分類。
(4)感知損失函數(shù)。對抗損失和像素損失都是圖像生成任務中常見的度量。此外,本文使用另一個更 接近感知相似性的損失函數(shù)。感知損失探索了從訓練有素的CNN提取的圖像的高維表示之間的差異[18]。本文根據(jù)預先訓練的VGG16網(wǎng)絡的ReLU激活層來定義感知損失。不同深度的層可以代表不同抽象級別的圖像特征:從邊緣、顏色到對象模式。感知網(wǎng)絡中較低級和較高級激活的匹配指導合成網(wǎng)絡學習細粒度細節(jié)以及全局排列[19]。本文在漢字字體生成中,要求生成的漢字字體圖像與目標字體圖像在漢字的形狀結(jié)構方面保持一致性,這樣的一致性可以用感知損失函數(shù)來進行權衡,來保證生成字體圖像與目標字體圖像在形狀和結(jié)構方面保證一致。
(8)
本文使用CRN網(wǎng) 絡[19]的參數(shù)配置。其中,代表VGG16的第l層網(wǎng)絡 。采用conv1_2,conv2_2,conv3_2,conv4_2,conv5_2層來計算感知損失。對應層權重,在本文的實驗中,本文設置λ1=λ2=λ3=λ4=1,λ5=10
(5)最終優(yōu)化目標。通過上述損失函數(shù)的介紹,本文提出的漢字字體生成網(wǎng)絡模型的損失函數(shù)為這四種損失函數(shù)的加權之和,最終得到本文網(wǎng)絡訓練需要優(yōu)化的損失函數(shù)。
(9)
(10)
(11)
本文為了更客觀的進行漢字字體生成模型性能的評價,根據(jù)論文[20-21]中提出的評價方法,從定性和定量兩個方面對提出的漢字字體生成模型性能的評價,評估生成圖像的效果。除了直接對比較實驗的定性結(jié)果外,還采用了均方根誤差 (Root Mean Square Error, RMSE)和像素差異率 (Pixel Disagreement Ratio, APDR)這兩個定量值作為評價標準。
為了驗證本文提出的模型的性能。本文構建了多風格的漢字字體的數(shù)據(jù)集,并且使用均方根誤差(RMSE),像素差異率(APDR)兩個定性評價指標,從圖像的像素差異性以及像素差異率兩個方面對生成的漢字字體圖像進行評價,并且設計了四個實驗。本文提出的漢字字體生成模型FontToFont與現(xiàn)有的三種字體生成算法進行對比實驗,模型的消融實驗,驗證各部分的有效性,不同訓練數(shù)據(jù)集對于模型性能的影響,以及不同源字體對于模型性能的影響。
通過使用python類庫中的ImageFont 模塊[22]將字庫文件TrueType轉(zhuǎn)為漢字字體圖像。從字體設計網(wǎng)站上選擇江南手書、刻石錄顏體、刻石錄鋼筆鶴體三種字體構建本文多風格漢字字體數(shù)據(jù)集。每種字體使用ImageFont 模塊轉(zhuǎn)為圖像,每種字體包含大約4 000張漢字圖像,同時本文將圖像大小統(tǒng)一為256×256×3。數(shù)據(jù)集中部分漢字字體圖像如圖3,采用源字體為黑體。訓練集分別由2 000個源字符圖像和2 000個對應的來自其他風格的目標字符圖像組成。源字體中剩 余的字符圖像用于測試。本文也討論了不同訓練數(shù)據(jù)集規(guī)模對于模型性能的影響,訓練數(shù)據(jù)樣本依次為500,1 000,1 500,2 000,2 500,3 000個。漢字字體圖像均為灰度圖像,同時本文也對不同風格的漢字字體圖像進行了中心對齊。
圖3 多風格字體漢字圖像示例
使用Pytorch框架搭建本文的漢字字體生成網(wǎng)絡。采用Adam[23]優(yōu)化方法對所提模型進行訓練,并將學習率設置為0.000 1,判別器D先訓練,生成器G次之,交替進行訓練。在本文構建的多風格漢字字體數(shù)據(jù)集上訓練40輪,每輪次10 000次,批次大小設置為1。學習率遵循StepLR策略,每50次迭代降 低一次。本文所有的實驗都是在Ubuntu18.04系統(tǒng),Intel(R) Core(TM) i7-7700K CPU, 英偉達GeForce GTX TITAN XP GPU上進行的。算法1如圖4,詳細討論了本文模型的訓練流程。
圖4 算法1詳細過程
為了在整體上展示本文提出的漢字字體生成
模型的效果,將《早春呈水部張十八員外》為內(nèi)容進行生成如圖5,分別使用三種目標字體進行生成。為了增強可讀性,可對比性,本文將真實的字體文字變成了風格一至三的第二列和第六列。
圖5 《早春呈水部張十八員外》生成結(jié)果
圖5展示了《早春呈水部張十八員外》三種字體的生成效果。其中圖5a展示的是黑體表示的需要生成的文字內(nèi)容,圖5b~5d展示的是三種不同風格字體對應的生成結(jié)果。從圖5b~d中可以看出,本文的模型生成效果較好,生成的字體與真實字體直接沒有差別。此外,從圖中也可以看出,模型對于漢字的結(jié)構和形狀的特征把握比較好。能夠當?shù)乇A糁匾墓P畫細節(jié),如筆畫的開始、轉(zhuǎn)折和結(jié)束區(qū)域。同時從圖5c的筆畫連接情況可以看出,本文提出的U-Net網(wǎng)絡結(jié)構以及感知損失函數(shù),能夠保留筆畫的重要信息特征,做到了一致性。
接下來本文選取三種字體進行漢字字體生成對比實驗,分別選擇Pix2pix、Zi2zi、HGAN三種漢字字體生成模型進行對比實驗。本文對實驗結(jié)果進行定量和定性的評價。定性評價的圖如圖6,定量評價結(jié)果見表2。
圖6 風格一部分生成結(jié)果示例
Pix2pix、Zi2zi、HGAN模型生成效果如圖6所示,在三種風格的漢字字體生成任務中,在Zi2zi、HGAN,Pix2pix中出現(xiàn)的一些不完整的筆畫現(xiàn)象以及筆畫模糊的現(xiàn)象。Pix2pix只能產(chǎn)生模糊的圖像,很難識別字符的內(nèi)容,無法捕捉相似手寫風格之間的細微差異。相反,本文提出的漢字字體生成模型能夠產(chǎn)生逼真的合成結(jié)果,并適當?shù)乇A糁匾臐h字筆畫結(jié)構和形狀細節(jié),如筆畫的開始、轉(zhuǎn)折和結(jié)束區(qū)域。但是在字體風格形狀結(jié)構復雜時候,本文的模型也有一些不完整的筆畫問題。
從上面的分析結(jié)果可以看出,相比較與Pix2pix、Zi2zi、HGAN三種模型,本文的模型能夠生成質(zhì)量較高的漢字字體圖像。此外從圖6中可以看出,在漢字字體形狀結(jié)構相對復雜的時候,本文的模型還是取得了比較好的生成效果,能夠較好的捕捉到字體的形狀和結(jié)構的信息,但是Pix2pix網(wǎng)絡模型卻產(chǎn)生了筆畫缺失,整體模糊的現(xiàn)象。這也在一定程度上證明了本文模型的泛化能力比較強。而Pix2pix、Zi2zi、HGAN這三種模型,雖然在模型訓練的過程中產(chǎn)生比較好的效果,但是測試時生成結(jié)果卻很差。
從表2分析出,從黑體生成字體一,模型的像素差異率最低,均方根誤差比HGAN稍高,比Pix2Pix和Zi2Zi低很多;從黑體生成字體二,模型的像素差異率和均方根誤差比HGAN稍高,比Pix2Pix高很多;從黑體生成字體三,模型的像素差異率和均方根誤差比Pix2Pix、Zi2Zi和HGAN都低很多。所以從定量分析的角度看,文中所建立的模型生成效果較優(yōu)。
表2 定量分析
為了驗證本文提出的感知損失函數(shù)的有效性,設計了對比實驗,在本文提出的模型中加入感知損失函數(shù)以及不加感知損失函數(shù)進行對比實驗,生成效果如圖7。使用感知損失函數(shù),可以看出模型生成的字體輪廓更加清晰,也保證了源字體和目標字體必須保持一致的文字拓撲,生成字體的局部信息丟失較少。但是去除感知函數(shù)之后可以發(fā)現(xiàn),生成的字體出現(xiàn)局部信息丟失,字體輪廓模糊的現(xiàn)象,因此也驗證了本文提出的感知損失函數(shù)的有效性。
圖7 使用/不使用感知損失的生成結(jié)果示例
在上述的實驗對比以及模型消融實驗中,采用黑體作為參考字體來進行實驗。為了求證不同參考字體對漢字字體生成模型生成效果的影響,本文的實驗采用宋體、楷體作為參考字體分別進行實驗。實驗對比結(jié)果如圖8~9。
圖8 源字體為楷體的部分實驗結(jié)果
圖9 源字體為宋體的部分實驗結(jié)果
從這兩幅實驗對比圖8和圖9可以看出,不管是楷體還是宋體,漢字字體生成模型的生成效果都沒有受到影響。這也進一步證明了本文的漢字字體生成模型比現(xiàn)有的漢字字體生成模型的性能更好,能夠生成結(jié)構層次更加鮮明、細節(jié)更加豐富、輪廓更加清晰的漢字。
本文研究了利用生成對抗網(wǎng)絡來實現(xiàn)漢字字體生成。通過在不同風格下字體生成效果分析,可以看出本文模型的整體性和一致性均有保證;通過與Pix2pix、Zi2zi、HGAN三種經(jīng)典模型在同一風格生成效果分析,可以看出本文模型無論在簡單還是復雜的字體結(jié)構中均取得比較好的生成效果;通過分析不同源字體的生成效果,本文模型的生成效果均沒有收到影響。從以上三方面的分析中可以看出本文提出的算法FontToFont與MSAFont均有效地提升了生成字體的質(zhì)量,在一定程度上滿足了實際應用的需求。