李云紅,段姣姣,蘇雪平,張蕾濤,于惠康,劉杏瑞
(西安工程大學(xué) 電子信息學(xué)院,陜西 西安 710048)
書法作為中國文化的主要載體,其書寫風(fēng)格的多樣性造就了漢字獨(dú)特的藝術(shù)美感.由于古人手跡稀少且易被損毀,傳統(tǒng)人工修復(fù)周期長,效率低,而漢字生成技術(shù)可以根據(jù)少量手跡生成同一風(fēng)格的其他漢字,快速修復(fù)歷史古籍文獻(xiàn).此外,設(shè)計(jì)字體庫是一項(xiàng)費(fèi)時(shí)費(fèi)力的工作,利用漢字生成技術(shù)可以避免大量字形的調(diào)整,快速建立個(gè)性化字體庫,解決字體庫不完整的問題[1-3].
針對(duì)字體生成任務(wù),Tian[4]提出Rewrite模型,生成的字體結(jié)構(gòu)細(xì)節(jié)模糊.Tian在Pix2pix[5]網(wǎng)絡(luò)的基礎(chǔ)上提出zi2zi[6]模型,與Rewrite相比,zi2zi生成效果明顯提升.Jiang等[7]提出DCFont,分別編碼字體內(nèi)容和風(fēng)格特征,通過解碼和特征重構(gòu)生成字體.Chang等[8]提出DenseNet CycleGAN,將Cyc1eGAN[9]中的殘差單元替換為密集連接網(wǎng)絡(luò),生成字體筆畫錯(cuò)連、缺失的情況較嚴(yán)重.Ren等[10]通過引入自注意力機(jī)制及邊緣損失,解決了已有模型生成漢字局部信息不明顯、層級(jí)結(jié)構(gòu)不鮮明的問題.Wu等[11]提出CalliGAN,利用漢字筆畫信息,提升生成圖像的細(xì)節(jié)特征.Park等[12]提出LFFont,學(xué)習(xí)局部組件風(fēng)格,利用低秩矩陣分解組件級(jí)風(fēng)格,但容易出現(xiàn)組件缺失,模型性能不穩(wěn)定.Xie等[13]提出DGFont,引入特征變形卷積增強(qiáng)生成字體結(jié)構(gòu)的完整性.Park等[14]提出MXFont,采用多頭編碼器特征提取,利用局部組件信息監(jiān)督模型訓(xùn)練.Kong等[15]提出CG-GAN,設(shè)計(jì)組件感知模塊,在字符組件級(jí)別進(jìn)行監(jiān)督.
為了減少生成字體筆畫結(jié)構(gòu)的丟失和細(xì)節(jié)模糊的問題,穩(wěn)定模型訓(xùn)練,提高生成字體圖像的質(zhì)量,本文提出基于改進(jìn)生成對(duì)抗網(wǎng)絡(luò)的書法字生成算法.通過改進(jìn)編碼器卷積層結(jié)構(gòu),提高字體細(xì)節(jié)結(jié)構(gòu).通過自注意力網(wǎng)絡(luò)捕獲字體筆畫間的關(guān)系,學(xué)習(xí)豐富的上下文信息,分配不同特征的權(quán)重,增強(qiáng)風(fēng)格特征的表征能力,使得生成字體的風(fēng)格更加接近目標(biāo)字體.增加邊緣損失函數(shù),細(xì)化字體邊緣信息,提高生成圖像的質(zhì)量.通過生成2種不同風(fēng)格的書法字,驗(yàn)證本文方法的有效性.
zi2zi網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示,該網(wǎng)絡(luò)中的生成器(generator,G)包括編碼器和解碼器.生成器中的編碼器提取圖像特征,在編碼器后嵌入風(fēng)格類別標(biāo)簽,將編碼后的字符圖像特征和嵌入的風(fēng)格特征共同輸入解碼器.采用AC-GAN[16]的類別損失,確保生成漢字的類別信息一致.生成器后級(jí)聯(lián)的編碼器,與生成器中的編碼器參數(shù)共享.該編碼器對(duì)源字體與生成字體編碼,利用DTN[17]中的恒定損失,計(jì)算編碼之后兩者的損失,確保漢字內(nèi)容正確,提高生成質(zhì)量.
判別器(discriminator,D)判斷輸入圖像是否真實(shí),同時(shí)鑒別圖像類別.在網(wǎng)絡(luò)訓(xùn)練過程中,期望生成器生成接近目標(biāo)風(fēng)格的字體圖像,達(dá)到欺騙判別器的目的.判別器能夠判別生成的假字體圖像,兩者交替對(duì)抗訓(xùn)練,實(shí)現(xiàn)納什平衡.
以zi2zi為基本網(wǎng)絡(luò)模型,針對(duì)網(wǎng)絡(luò)訓(xùn)練穩(wěn)定性低、生成圖像質(zhì)量差、生成字體結(jié)構(gòu)不清晰的問題,改進(jìn)生成器與判別器的結(jié)構(gòu),設(shè)計(jì)新的損失函數(shù).改進(jìn)后的網(wǎng)絡(luò)整體結(jié)構(gòu)如圖2所示.該網(wǎng)絡(luò)包括內(nèi)容編碼器Ec、風(fēng)格編碼器Es、解碼器Dd、判別器D,內(nèi)容編碼器用來提取輸入圖像的內(nèi)容特征fc,風(fēng)格編碼器用來提取風(fēng)格特征fs.將目標(biāo)風(fēng)格字體圖像的標(biāo)簽l轉(zhuǎn)換為one-hot編碼fl,如{“目標(biāo)風(fēng)格1”:0,“目標(biāo)風(fēng)格2”:1}編碼為獨(dú)熱編碼標(biāo)簽,表示不同風(fēng)格的字體,并擴(kuò)展到與內(nèi)容和風(fēng)格特征向量相同的維度.
結(jié)合編碼后的l及內(nèi)容編碼向量、風(fēng)格編碼向量,將三者拼接成向量f=[fl,fc,fs],輸入到解碼器Dd中,經(jīng)過解碼得到生成圖像.判別器D的作用有以下2點(diǎn):1)判斷輸入圖像是虛假生成圖像還是真實(shí)目標(biāo)圖像;2)判斷圖像的風(fēng)格類別.
生成器由內(nèi)容編碼器Ec、風(fēng)格編碼器Es、解碼器Dd組成.內(nèi)容編碼器將256×256×1維度的輸入圖像映射到1×1×512維度的特征層空間,得到內(nèi)容特征向量.zi2zi在內(nèi)容編碼模塊中僅使用卷積提取特征,在特征提取過程中隨著網(wǎng)絡(luò)深度的增加,細(xì)節(jié)信息更容易丟失,提取不到圖像較深層次的特征信息,生成的字體圖像質(zhì)量較差.
2.1.1 殘差單元 為了捕捉字體圖像更多的局部特征,在內(nèi)容編碼器中加入殘差單元,擴(kuò)充卷積結(jié)構(gòu),形成卷積-殘差交替模塊.內(nèi)容編碼器包括5層卷積層、5層卷積-殘差交替編碼結(jié)構(gòu),內(nèi)容編碼器的具體參數(shù)設(shè)置如表1所示.卷積單元Conv-IN-LRelu表示Conv卷積操作、實(shí)例歸一化( instance normalization,IN )、LRelu激活函數(shù),卷積核為4,strides為步長,filters為卷積核數(shù).
表1 內(nèi)容編碼器的網(wǎng)絡(luò)參數(shù)Tab.1 Network parameters of content encoder
漢字筆畫線條的粗細(xì)、長短、書寫方向等局部細(xì)節(jié)信息影響漢字的字形與風(fēng)格.為了保存漢字細(xì)節(jié)的結(jié)構(gòu)特征,減少參數(shù)量,使用1×1的卷積核,殘差單元的結(jié)構(gòu)如圖3所示.
圖3 殘差單元Fig.3 Residual block
2.1.2 上下文感知注意力模塊 為了使得模型生成的字體圖像風(fēng)格與目標(biāo)風(fēng)格保持一致,本文算法中額外引入風(fēng)格編碼模塊,該模塊在訓(xùn)練過程中更多關(guān)注字體的風(fēng)格樣式.風(fēng)格編碼器網(wǎng)絡(luò)結(jié)構(gòu)主要由6層卷積層和上下文感知注意力模塊組成,上下文感知注意力模塊如圖4所示.風(fēng)格編碼器的輸入只進(jìn)行卷積操作,卷積核為7,步長為1.其他5層結(jié)構(gòu)均為Conv卷積操作、實(shí)例歸一化、Relu激活函數(shù),卷積核為4,步長為2,卷積核數(shù)依次為64、128、256、256、256.
圖4 上下文感知注意力模塊Fig.4 Context-aware attention block
上下文感知注意力模塊將最后1層卷積得到的特征圖輸入到自注意力網(wǎng)絡(luò)( self attention, SA ),對(duì)特征圖中的像素間結(jié)構(gòu)建立聯(lián)系,輸出的新特征向量與原始特征進(jìn)行像素加的操作,提高同一類別的緊湊性.此時(shí)的特征圖sv能夠建立全局關(guān)聯(lián)性,包含全局上下文信息,不局限于當(dāng)前感受野,而且包含其他區(qū)域的上下文信息,從而可以獲取到與目標(biāo)風(fēng)格更相關(guān)的信息,增強(qiáng)全局特征的準(zhǔn)確性.
為了增強(qiáng)特征圖中不同區(qū)域的表征能力,自動(dòng)感知上下文信息的特征權(quán)重,使用上下文向量cv來衡量特征權(quán)重.將特征向量sv輸入到單層神經(jīng)網(wǎng)絡(luò)NN,如下所示:
式中:w和b分別為權(quán)重與偏置.比較輸出的pv與可訓(xùn)練的隨機(jī)初始化向量cv,得到注意力向量,通過softmax層對(duì)上述結(jié)果歸一化,得到最終的注意力得分,如下所示:
通過像素乘操作,使得網(wǎng)絡(luò)學(xué)習(xí)不同的特征權(quán)重.將上下文注意力特征聚合到每一個(gè)位置上,得到上下文注意力特征作用于特征圖的結(jié)果.為了保留更多的空間細(xì)節(jié)信息,與原始特征圖通過像素加操作進(jìn)行不同層次的特征融合,得到特征向量fs.風(fēng)格編碼器將256×256×1維度的輸入圖像映射到1×1×256維度的特征層空間,得到對(duì)應(yīng)的風(fēng)格特征向量.
解碼器的輸入只進(jìn)行反卷積操作,中間每層卷積層的結(jié)構(gòu)為Deconv-IN-Relu,Deconv表示反卷積,最后一層進(jìn)行反卷積操作.使用Tanh激活函數(shù),解碼器中的卷積核為4,步長為2,卷積核數(shù)依次為512、512、512、512、256、128、64、1.
考慮到生成的圖像與內(nèi)容編碼器的輸入圖像的結(jié)構(gòu)相似,解碼器中使用跳躍連接,保留圖像的不同尺度信息,將內(nèi)容編碼器中的不同特征層按照通道維度拼接到解碼器對(duì)應(yīng)的相同分辨率位置.通過將底層信息連接到對(duì)應(yīng)的解碼器層,最大程度地保留圖像的底層信息,減少解碼過程中位置和結(jié)構(gòu)特征信息的丟失.
在原始的zi2zi訓(xùn)練過程中,生成器與判別器的損失振蕩比較明顯,訓(xùn)練不穩(wěn)定,判別器不能有效地指導(dǎo)生成器訓(xùn)練收斂.在判別器中,將實(shí)例歸一化替換為譜歸一化層(spectral normalization,SN),解決生成對(duì)抗網(wǎng)絡(luò)訓(xùn)練不穩(wěn)定的問題,加快模型收斂.
判別器的網(wǎng)絡(luò)結(jié)構(gòu)如圖2(b)所示,由5層卷積層組成.前4層結(jié)構(gòu)由Conv-SN-Lrelu單元堆疊而成,其中卷積核為4,步長依次是2、2、2、1,卷積核數(shù)依次是64、128、256、512;最后一層為卷積核為4、步長為1的卷積操作.
zi2zi網(wǎng)絡(luò)損失函數(shù)包括對(duì)抗損失、像素?fù)p失、類別損失與一致性損失.利用改進(jìn)的網(wǎng)絡(luò)模型,增加了邊緣損失,提高了生成字體輪廓的清晰度.對(duì)抗損失函數(shù)使得模型的生成結(jié)果盡可能與目標(biāo)風(fēng)格書法字逼近.在訓(xùn)練過程中,判別器D與生成器G需要最小化對(duì)抗損失函數(shù).
式中:m、y分別表示源風(fēng)格與生成的風(fēng)格字體圖像.
像素級(jí)損失函數(shù)采用L1范數(shù)計(jì)算圖像之間的損失,如下所示:
式中:pdata為 目標(biāo)圖像域,pinput為源風(fēng)格輸入圖像域.
風(fēng)格類別損失函數(shù)通過優(yōu)化損失函數(shù),使得生成漢字的類別一致.
式中:x為目標(biāo)風(fēng)格圖像,c為風(fēng)格類別標(biāo)簽.
內(nèi)容一致?lián)p失通過對(duì)源圖像和生成圖像內(nèi)容編碼,計(jì)算兩者一致性損失,避免信息丟失,使得解碼器盡可能地恢復(fù)正確的漢字.
式中:φ表示對(duì)源字體和生成字體編碼,pgener為生成圖像域.
與字體圖像的背景及填充字體圖像的像素相比,漢字邊緣像素在決定漢字風(fēng)格和語義信息時(shí)占有較大的比重,因此額外引入邊緣損失來約束模型,生成更加清晰的輪廓.利用Canny算子提取邊緣特征,用L1范數(shù)逐像素計(jì)算生成圖像與真實(shí)圖像的邊緣像素:
式中:C為Canny算子.
最終生成器與判別器的目標(biāo)損失函數(shù)如下所示:
式中:λL1、λstyle、λconst、λedge為對(duì)應(yīng)損失函數(shù)的權(quán)重系數(shù).通過設(shè)置不同的權(quán)重來平衡不同損失函數(shù)在目標(biāo)損失函數(shù)中的權(quán)重,經(jīng)過多次實(shí)驗(yàn)依次設(shè)置為100、1、15、100.
實(shí)驗(yàn)環(huán)境為Ubuntu 18.04 LTS 64-bit操作系統(tǒng),顯卡為NVIDIA RTX 3060,基于深度學(xué)習(xí)框架pytorch,編程語言為python3.8.實(shí)驗(yàn)參數(shù)的設(shè)置如下:批處理大小batch size為16,迭代輪數(shù)為50,優(yōu)化器為Adam優(yōu)化器,參數(shù)β1=0.5,β2=0.999.初始學(xué)習(xí)率為0.001.在訓(xùn)練過程中,判別器先訓(xùn)練,生成器通過判別器的反向傳遞更新參數(shù),交替訓(xùn)練.每迭代20輪學(xué)習(xí)率衰減為原始的一半,后面逐步衰減到0.000 2并不再變化.
針對(duì)手寫體生成圖像,目前沒有公開的數(shù)據(jù)集.本文的目標(biāo)風(fēng)格圖像為顏真卿楷書及趙孟頫行書風(fēng)格的書法字體圖像,從書法圖像字庫中爬蟲獲取,源風(fēng)格字體為黑體,使用python中的Imagefont轉(zhuǎn)換為字符圖像.訓(xùn)練樣本數(shù)開始設(shè)置為1 000,樣本量較少導(dǎo)致過擬合;后面逐漸增加訓(xùn)練樣本數(shù),提升了模型性能,解決了過擬合的問題,且當(dāng)數(shù)據(jù)量為3 000~4 000時(shí)模型性能穩(wěn)定.隨機(jī)選擇4 413張顏真卿楷書作為訓(xùn)練圖像,1 004張顏真卿楷書作為測試圖像.趙孟頫行書的訓(xùn)練圖像為3 861張,測試圖像為1 060張.訓(xùn)練圖像與測試圖像中的漢字字符各不相同,數(shù)據(jù)集的樣例如圖5所示.在實(shí)驗(yàn)中,數(shù)據(jù)集采用單通道圖像,大小均為256像素×256像素.
圖5 自建的2種數(shù)據(jù)集樣例Fig.5 Self-built samples of two datasets
從主觀和客觀這2個(gè)方面對(duì)生成結(jié)果進(jìn)行評(píng)價(jià),其中客觀評(píng)價(jià)指標(biāo)包括峰值信噪比(peak signal-to-noise ratio, PSNR)、結(jié)構(gòu)相似性(structural similarity index, SSIM)[18]、感知相似性(learned perceptual image patch similarity, LPIPS)[19].其中SSIM與PSNR越大表明生成效果越好,LPIPS越小,生成圖像與目標(biāo)圖像越相似,更符合人類的視角.
為了驗(yàn)證提出方法的有效性,設(shè)計(jì)消融實(shí)驗(yàn),分析不同模塊對(duì)實(shí)驗(yàn)結(jié)果的影響.為了進(jìn)一步比較改進(jìn)算法的生成效果,選擇CycleGAN、Dense-Net CycleGAN、zi2zi、EMD[20]、CalliGAN、LFFont、MXFont算法作為對(duì)比算法,比較不同算法的生成結(jié)果,驗(yàn)證不同源字體對(duì)改進(jìn)算法生成效果的影響.
3.4.1 消融實(shí)驗(yàn) 為了驗(yàn)證殘差單元、風(fēng)格編碼分支及邊緣損失的有效性,依次在基本模型中添加不同模塊,不同模塊生成顏真卿楷書、趙孟頫行書的結(jié)果分別如圖6、7所示,對(duì)應(yīng)的評(píng)價(jià)指標(biāo)如表2、3所示.圖中,實(shí)線矩形框表示字體生成結(jié)構(gòu)較差,虛線矩形框表示字體風(fēng)格不佳,圓圈框表示書法字的邊緣結(jié)構(gòu)較差.
表2 消融實(shí)驗(yàn)的評(píng)價(jià)指標(biāo)(目標(biāo)字體:顏真卿楷書)Tab.2 Evaluation index of ablation experiment (target font:Yan Zhenqing regular script)
圖6 不同模塊的消融實(shí)驗(yàn)(目標(biāo)字體:顏真卿楷書)Fig.6 Ablation experiments of different module (target font: Yan Zhenqing regular script)
從圖6可以看出,zi2zi生成字體存在筆畫不連貫缺失、粘連,如“仄”、“宗”字筆畫缺失,后3個(gè)字出現(xiàn)筆畫粘連.加入殘差單元,生成字體的細(xì)節(jié)明顯有所改善,減少了字體筆畫缺失、模糊不清的情況,能夠有效地提高模型的性能.比較3、4行有無風(fēng)格編碼的生成結(jié)果可以看出,添加風(fēng)格編碼使得生成字體的風(fēng)格特征更加接近目標(biāo)風(fēng)格,如“仄”、“旬”字.邊緣損失的對(duì)比結(jié)果如第4、5行所示,未使用邊緣損失的筆畫輪廓扭曲,如“仄”字的筆畫“捺”、“旬”字的筆畫“撇”、“英”字的筆畫“捺”等.第5行生成字體的結(jié)構(gòu)更加完整.筆畫線條顯得“遒勁有力”,筆畫位置的關(guān)系更加準(zhǔn)確,更加符合書法藝術(shù)字的特點(diǎn).實(shí)驗(yàn)結(jié)果表明,本文算法的不同模塊對(duì)于提高生成效果是至關(guān)重要的.
比較表2的實(shí)驗(yàn)結(jié)果,依次在原有模型上使用不同的結(jié)構(gòu),評(píng)價(jià)指標(biāo)有所提高.與原始zi2zi相比,SSIM、PSNR分別提升了4.50%、1.51 dB,LPIPS降低了5.62%,證明能夠提高模型性能.
從圖7可以看出,原始模型生成的書法字筆畫較粗,字體風(fēng)格與目標(biāo)風(fēng)格相差較大.筆畫結(jié)構(gòu)的錯(cuò)誤較多,如“印”字不連貫,“炸”字粘連,“元”字出現(xiàn)多余的筆畫.殘差單元能夠減少筆畫缺失、錯(cuò)連,如“印”、“元”字.對(duì)比3、4行可以發(fā)現(xiàn),加入風(fēng)格編碼,能夠明顯地改善字體的風(fēng)格.從表3可知,SSIM、PSNR分別提升了6.89%、2.41 dB,LPIPS降低了6.68%.對(duì)比第4、5行的結(jié)果可以看出,邊緣損失進(jìn)一步提升了字體結(jié)構(gòu)輪廓,驗(yàn)證了邊緣損失的有效性.表3的結(jié)果表明,利用本文算法中的不同結(jié)構(gòu),能夠提升各項(xiàng)指標(biāo),與原始zi2zi相比,SSIM、PSNR分別提升了7.48%、2.36 dB,LPIPS降低了7.95%,模型性能有所提升.
表3 消融實(shí)驗(yàn)的評(píng)價(jià)指標(biāo)(目標(biāo)字體:趙孟頫行書)Tab.3 Evaluation index of ablation experiment (target font:Zhao Mengfu running script)
圖7 不同模塊的消融實(shí)驗(yàn)(目標(biāo)字體:趙孟頫行書)Fig.7 Ablation experiments of different module (target font: Zhao Mengfu running script)
3.4.2 與其他算法的對(duì)比實(shí)驗(yàn) 利用本文算法與CycleGAN、DenseNet CycleGAN、zi2zi、EMD、CalliGAN、LFFont、MXFont算法生成顏真卿楷書、趙孟頫行書的結(jié)果分別如圖8、9所示.不同算法在同一實(shí)驗(yàn)平臺(tái)中完成,采用相同的數(shù)據(jù)集及評(píng)價(jià)指標(biāo).設(shè)置相同的初始參數(shù)與優(yōu)化器,其中不同的是LFFont與MXFont算法使用不同的學(xué)習(xí)率訓(xùn)練生成器與判別器.為了合理地評(píng)估算法的性能,在對(duì)比實(shí)驗(yàn)中保持原算法的參數(shù)設(shè)置,生成器的學(xué)習(xí)率設(shè)置為0.000 2,判別器的學(xué)習(xí)率設(shè)為0.000 8.
圖8 不同算法的生成結(jié)果(目標(biāo)字體:顏真卿楷書)Fig.8 Results generated by different algorithms (target font: Yan Zhenqing regular script)
圖8中,CycleGAN和DenseNet CycleGAN算法的生成效果最差,完全沒有學(xué)習(xí)到目標(biāo)風(fēng)格樣式,甚至丟失字體的筆畫結(jié)構(gòu),可讀性差.原始的zi2zi結(jié)構(gòu)損壞,部分筆畫存在扭曲的現(xiàn)象,同時(shí)筆畫不連貫缺失,粘連的現(xiàn)象較嚴(yán)重.EMD方法具備內(nèi)容編碼與風(fēng)格編碼的結(jié)構(gòu)設(shè)計(jì),不同的是EMD在內(nèi)容編碼與風(fēng)格編碼時(shí)都只用普通的卷積結(jié)構(gòu)去提取特征,生成的字體辨識(shí)度極低.CalliGAN生成的字體結(jié)構(gòu)基本完整,可以學(xué)會(huì)目標(biāo)字體的風(fēng)格,但生成的字體圖像模糊,產(chǎn)生較多的噪點(diǎn),辨識(shí)度低,邊緣結(jié)構(gòu)不清晰.LFFont容易出現(xiàn)結(jié)構(gòu)變形,如“用”、“胄”.MXFont生成的圖像質(zhì)量較高,但該模型的性能不穩(wěn)定,部分字體結(jié)構(gòu)丟失,如“崽”、“巡”.利用本文算法緩解了筆畫丟失的問題,生成的字體圖像幾乎沒有變形,可讀性高,字體的位置關(guān)系相對(duì)準(zhǔn)確,分布一致,更加接近目標(biāo)字體.實(shí)驗(yàn)結(jié)果表明,本文算法的生成效果主觀上優(yōu)于其他7種算法.
與筆畫較工整的楷書相比,行書字體形態(tài)豐富,書寫更加靈活,結(jié)構(gòu)更加不規(guī)則,因此生成任務(wù)更加困難.圖9中,CycleGAN和DenseNet Cycle-GAN生成的字體筆畫丟失,辨識(shí)度低.利用原始zi2zi算法生成的行書字體筆畫粘連嚴(yán)重.EMD生成的字體難以辨認(rèn),丟失漢字結(jié)構(gòu)和筆畫細(xì)節(jié)的信息.CalliGAN生成的字體噪點(diǎn)較多,字體扭曲.LFFont容易出現(xiàn)結(jié)構(gòu)丟失,如“圯”.MXFont生成的字體可識(shí)別性較高,但整體上筆畫較粗,與目標(biāo)風(fēng)格字體有差距,利用本文算法生成的字體圖像清晰,風(fēng)格與目標(biāo)字體最接近.
圖9 不同算法的生成結(jié)果(目標(biāo)字體:趙孟頫行書)Fig.9 Results generated by different algorithms (target font: Zhao Mengfu running script)
基于SSIM、PSNR和LPIPS評(píng)價(jià)指標(biāo)分別對(duì)不同風(fēng)格書法字的生成結(jié)果進(jìn)行定量分析比較,評(píng)價(jià)結(jié)果如表4、5所示.
表4 不同算法的評(píng)價(jià)指標(biāo)(目標(biāo)字體:顏真卿楷書)Tab.4 Evaluation indexes of different algorithms (target font:Yan Zhenqing regular script)
表4中,利用本文算法生成顏真卿楷書的SSIM、PSNR分別比zi2zi高5.21%、1.57 dB,LPIPS比zi2zi低4.21%,SSIM、PSNR指標(biāo)均高于對(duì)比算法,LPIPS指標(biāo)均低于對(duì)比算法.表5中,利用本文算法生成趙孟頫行書的SSIM、PSNR分別比zi2zi高6.91%、1.76 dB,LPIPS比zi2zi低6.20%.本文算法的3種評(píng)價(jià)指標(biāo)均優(yōu)于其他算法,證明了算法的可行性與可靠性.
表5 不同算法的評(píng)價(jià)指標(biāo)(目標(biāo)字體:趙孟頫行書)Tab.5 Evaluation indexes of different algorithms (target font:Zhao Mengfu running script)
3.4.3 不同源字體的生成結(jié)果 上述實(shí)驗(yàn)均以黑體作為源字體,為了驗(yàn)證不同源字體的生成效果,分別采用楷體與宋體作為源字體進(jìn)行實(shí)驗(yàn).本文算法的生成效果如圖10、11所示,評(píng)價(jià)指標(biāo)如表6所示.
表6 不同源字體生成目標(biāo)字體的評(píng)價(jià)指標(biāo)Tab.6 Evaluation indexes of target font generated by different source fonts
圖10 源字體為楷體的結(jié)果Fig.10 Results of source font in simkai
圖11 源字體為宋體的結(jié)果Fig.11 Results of source font in simsun
圖10、11中,利用本文算法生成的目標(biāo)字體結(jié)構(gòu)完整,細(xì)節(jié)鮮明,清晰度高,且風(fēng)格與目標(biāo)風(fēng)格接近.從表6可知,改變源字體,評(píng)價(jià)指標(biāo)SSIM與LPIPS波動(dòng)幅度不超過3%,PSNR不超過0.6 dB,證明了本文算法的魯棒性與普適性.
3.4.4 模型穩(wěn)定性的分析 為了穩(wěn)定模型訓(xùn)練,加速訓(xùn)練過程,在判別器中將實(shí)例歸一化替換為譜歸一化層.zi2zi算法與本文算法訓(xùn)練過程中的損失曲線變化如圖12所示.圖中,I為訓(xùn)練次數(shù),LD、LG分別為判別器損失與生成器損失.相比于原始模型,本文算法的損失曲線更加穩(wěn)定,振幅較小,收斂速度比原模型快.
圖12 訓(xùn)練過程的損失曲線圖Fig.12 Loss curves of training process
本文提出基于改進(jìn)生成對(duì)抗網(wǎng)絡(luò)的書法字生成算法,有效提升了書法字的生成效果.在網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計(jì)中,以zi2zi為基礎(chǔ)網(wǎng)絡(luò),通過設(shè)計(jì)編碼器結(jié)構(gòu),增強(qiáng)了網(wǎng)絡(luò)的特征提取能力;通過添加上下文感知注意力模塊,顯著提升了生成書法字的風(fēng)格效果.在模型訓(xùn)練中,設(shè)計(jì)損失函數(shù)進(jìn)一步提升了生成字體的結(jié)構(gòu)完整性,利用譜歸一化增強(qiáng)了模型的訓(xùn)練穩(wěn)定性.通過自建2種不同書法字體的數(shù)據(jù)集,驗(yàn)證了本文算法的有效性.實(shí)驗(yàn)結(jié)果表明,利用提出算法生成的字體細(xì)節(jié)清晰,結(jié)構(gòu)完整,字體風(fēng)格更加逼真,字體圖像質(zhì)量高.利用本文方法生成的顏真卿楷書與趙孟頫行書的PSNR分別達(dá)到10.63、9.52 dB,SSIM分別達(dá)到0.724 9、0.703 9,LPIPS分別達(dá)到0.186 8、0.260 3,生成效果較對(duì)比算法有明顯的提升.本文算法生成的是單一風(fēng)格字體,在接下來的研究工作中將優(yōu)化模型,實(shí)現(xiàn)一對(duì)多風(fēng)格的生成,增加模型的多樣性.