徐遠純?施明勇
摘 要 漢字字體研究是計算機視覺重要的研究方向,利用pix2pix生成對抗網(wǎng)絡(luò)對手寫漢字字體風(fēng)格遷移需要大量的匹配漢字圖像,CycleGAN進行風(fēng)格遷移雖然不需要成對的匹配數(shù)據(jù)訓(xùn)練數(shù)據(jù),但是生成的漢字字體存在模糊、缺失等現(xiàn)象。為了解決以上問題,本文利用改進的循環(huán)一致性生成對抗網(wǎng)絡(luò)來實現(xiàn)手寫字體圖像的風(fēng)格遷移,生成質(zhì)量較高的手寫漢字字體。改進的CycleGAN采用超分辨網(wǎng)絡(luò)中的亞像素卷積來代替原始CycleGAN中的轉(zhuǎn)置卷積,用PReLU激活函數(shù)代替ReLU激活函數(shù),引入圖像正則TV loss來改善生成漢字的結(jié)構(gòu)和筆畫完整。改進后的CycleGAN提高了風(fēng)格遷移的手寫漢字圖像分辨率,降低了手寫漢字字體的錯誤率,改善了生成手寫漢字字體的辨識度。
關(guān)鍵詞 手寫漢字風(fēng)格遷移;CycleGAN;亞像素卷積;TV loss
引言
漢字字體生成在深度學(xué)習(xí)中有較多的研究,早期主要運用卷積神經(jīng)網(wǎng)絡(luò)實現(xiàn)漢字字體之間的映射,隨著生成對抗網(wǎng)絡(luò)的興起,漢字字體的研究重心放在了生成對抗網(wǎng)絡(luò)上。
基于編碼-解碼的卷積神經(jīng)網(wǎng)絡(luò)完成了漢字字體的生成,當(dāng)是這種網(wǎng)絡(luò)只能一對一的重建,人們無法對編碼進行合理的修改,使得編碼只有解碼能“懂”,生成的漢字字體也很模糊。
基于生成對抗網(wǎng)絡(luò)的漢字字體生成,2017年zi2zi被提出[1],運用于漢字字體風(fēng)格遷移。zi2zi是基于Pix2Pix[2]進行改進。是漢字字體風(fēng)格遷移較為成功的算法。但是zi2zi需要成對的大量的漢字字體作為訓(xùn)練。
基于CycleGAN的漢字字體風(fēng)格遷移,2018年Chang B等人提出運用CycleGAN來實現(xiàn)手寫漢字字體風(fēng)格遷移[3]。但是,較少的漢字字體圖像會使得模型學(xué)習(xí)到的字體風(fēng)格有限,降低了模型的過擬合也降低了模型的泛化能力。
手寫漢字字體風(fēng)格遷移比標(biāo)準(zhǔn)字體風(fēng)格更具難度,由于手寫漢字字體結(jié)構(gòu)復(fù)雜,筆畫雜亂,連筆較多,導(dǎo)致一個人的手寫漢字字體很難有統(tǒng)一的標(biāo)準(zhǔn)風(fēng)格。針對上述漢字字體圖像風(fēng)格存在的問題,本文提出利用改進的CycleGAN來對手寫漢字字體進行風(fēng)格遷移,實驗結(jié)果證明,模型能夠生成結(jié)構(gòu)更為完整,筆畫更加清晰的手寫漢字字體。
1改進的循環(huán)一致性生成對抗網(wǎng)絡(luò)
1.1 CycleGAN
監(jiān)督學(xué)習(xí)的風(fēng)格遷移,需要將數(shù)據(jù)整理成對稱的數(shù)據(jù),這樣的方式會浪費一些不對稱的數(shù)據(jù)和需要耗費大量的整理時間。運用無監(jiān)督學(xué)習(xí)的循環(huán)一致性生成對抗網(wǎng)絡(luò)CycleGAN解決了監(jiān)督學(xué)習(xí)中存在問題。CycleGAN含有一對生成網(wǎng)絡(luò),一個用于標(biāo)準(zhǔn)漢字字體到風(fēng)格漢字字體的映射,一個用于風(fēng)格漢字字體到標(biāo)準(zhǔn)漢字字體的映射,并且含有分別對其判定的判別網(wǎng)絡(luò)。
生成網(wǎng)絡(luò)和判別網(wǎng)絡(luò)之間的損失函數(shù)公式如下:
其中:為數(shù)學(xué)期望,為服從關(guān)系,為手寫漢字字體分布,為標(biāo)準(zhǔn)漢字字體分布,生成網(wǎng)絡(luò)G為標(biāo)準(zhǔn)漢字字體到風(fēng)格漢字字體的映射,為正向映射;生成網(wǎng)絡(luò)F為風(fēng)格漢字字體到標(biāo)準(zhǔn)漢字字體的映射,為反向映射,判別網(wǎng)絡(luò)。為判別真實風(fēng)格漢字字體和通過標(biāo)準(zhǔn)漢字字體生成的漢字字體的真假,判別網(wǎng)絡(luò)為判別風(fēng)格漢字字體和生成的標(biāo)準(zhǔn)漢字字體的真假。
CycleGAN中為了加強生成網(wǎng)絡(luò)正向映射和反向映射之間了聯(lián)系,引入了循環(huán)一致性損失函數(shù),增強了生成的漢字字體為對方風(fēng)格。X與F(G(X),Y與F(G(Y))的距離就稱為Cycle-consistency Loss。
將Cycle-consistency Loss思想引入CycleGAN中,在CycleGAN中使用的是L1范數(shù)。公式如下:
將公式(1),(2),(3)聯(lián)立,得到CycleGAN的目標(biāo)函數(shù):
其中為調(diào)整Cycle-consistency Loss在目標(biāo)函數(shù)中的權(quán)重。
1.2 改進CycleGAN
在編碼器和轉(zhuǎn)換器網(wǎng)絡(luò)中用InstanceNorm[4]代替Batch Normalization[5],Batch Normalization降低了網(wǎng)絡(luò)的訓(xùn)練難度,加快了網(wǎng)絡(luò)的收斂速度。Batch Normalization是對每一批次圖像進行歸一化操作,在分類任務(wù)中表現(xiàn)的較好,分類對于層級信息不敏感,但是在風(fēng)格遷移生成任務(wù)中,需要較多的圖像細節(jié)信息,而進行Batch Normalization會丟失掉大量的細節(jié)信息,而InstanceNorm是對每一張圖像進行歸一化操作,這樣能比Batch Normalization保留更多的細節(jié)信息。
在原始的CycleGAN中的解碼器網(wǎng)絡(luò)中,上采樣使用可學(xué)習(xí)的亞像素(sub-pixel)卷積[6]代替原始的轉(zhuǎn)置卷積,轉(zhuǎn)置卷積生成的圖像會出現(xiàn)棋盤效應(yīng),且亞像素卷積的感受視野大于轉(zhuǎn)置卷積的感受視野。因歸一化層會丟失較多的細節(jié),在解碼網(wǎng)絡(luò)中,本文將其去掉。
2實驗與結(jié)果分析
本文提出改進的CycleGAN使用了1000張黑體和1000張手寫漢字字體,其中手寫漢字字體為HWDB1.1中的HW-1252,字體圖像為128*128的單通道黑白圖像。
網(wǎng)絡(luò)訓(xùn)練將epoch設(shè)置為200,batchsize設(shè)為10,學(xué)習(xí)率設(shè)為0.0002,TV loss前參數(shù)設(shè)置為2e-8,Cycle-consistency Loss前參數(shù)設(shè)置為10。改進的CycleGAN訓(xùn)練后輸入黑體得到的圖像和原始CycleGAN得到的漢字圖如圖1,第一列為黑體,第二列為本文改進的CycleGAN生成的字體效果,第三列為原始CycleGAN生成的字體效果,第四列為HW-1252手寫漢字風(fēng)格字體。從圖中的兩種CycleGAN生成的效果對比看,本文改進的CycleGAN生成的漢字字體結(jié)構(gòu)較為完整,筆畫較清晰,生成的風(fēng)格較為HW-1252相似。CycleGAN中生成的漢字字體出現(xiàn)了些筆畫錯誤和筆畫缺失。
本文改進的CycleGAN收斂情況,模型訓(xùn)練了200個epoch,在150個epoch時,loss G、loss G GAN和loss G cycle 接近收斂,訓(xùn)練到200個epoch時,在小范圍波動,損失梯度已很小。
利用HWDB1.1訓(xùn)練數(shù)據(jù)訓(xùn)練開源的TensorFlow與中文手寫漢字識別模型,迭代20萬次,通過HWDB1.1測試數(shù)據(jù)集得到Top-1準(zhǔn)確率為84.6%和Top-3準(zhǔn)確率為93%,選取生成漢字中的樣本進行手寫漢字識別測試,“陣”字識別率在原始CycleGAN、本文方法和訓(xùn)練數(shù)據(jù)分別為19.3%、99.6%、99.9%,“輕”為95.7%、99.9%、99.9%,“淑”為52.1%、84.5%、99.9%,“詞”為3.8%、99.7%、99.5%,“致”為19.7%、99.9%、93.9%,平均值為36.1%,96.7%,98.6%。通過比較,得出本文使用的算法能很好地生成出結(jié)構(gòu)較為完整的手寫漢字字體。
3結(jié)束語
本文根據(jù)CycleGAN存在的不足,提出了改進的CycleGAN,引入了TV loss來對約束圖像,改用或者不用BatchNormal,來減少丟失漢字圖像的細節(jié)信息,改用亞像素卷積,使得生成的漢字字體不會出現(xiàn)棋盤格,能生成高質(zhì)量的漢字字體。通過對比原始CycleGAN的生成效果,本文提出的基于亞像素卷積的改進型CycleGAN能生成高質(zhì)量的手寫漢字字體。
參考文獻
[1] Y. Tian. zi2zi: Master Chinese calligraphy with conditional adversarial networks[EB/OL]. https://github.com/kaonashi-tyc/zi2zi,2017-04-06.
[2] Isola P,Zhu J-Y,Zhou T,et al. Image-to-image translation with conditional adversarial networks[C]. Proceedings of the IEEE conference on computer vision and pattern recognition,2017:1125-1134.
[3] Chang B,Zhang Q,Pan S,et al. Generating handwritten chinese characters using cyclegan[C]. 2018 IEEE Winter Conference on Applications of Computer Vision(WACV),2018:199-207.
[4] Ulyanov D,Vedaldi A,Lempitsky V. Instance normalization:The missing ingredient for fast stylization[J]. arXiv preprint arXiv,2016,(22):1607.
[5] Ioffe S,Szegedy C. Batch normalization:Accelerating deep network training by reducing internal covariate shift[J]. arXiv preprint arXiv,2015,(167):1502.
[6] Shi W,Caballero J,Huszár F,et al. Real-time single image and video super-resolution using an efficient sub-pixel convolutional neural network[C]. Proceedings of the IEEE conference on computer vision and pattern recognition,2016:1874-1883.