趙 明,王存睿,戰(zhàn)國(guó)棟
(大連民族大學(xué)a.計(jì)算機(jī)科學(xué)與工程學(xué)院b.設(shè)計(jì)學(xué)院;c.大連市漢字計(jì)算機(jī)字庫(kù)設(shè)計(jì)技術(shù)創(chuàng)新中心,遼寧 大連 116650)
設(shè)計(jì)一套新的中文字體對(duì)于設(shè)計(jì)師來(lái)說(shuō)需要耗費(fèi)大量的時(shí)間,因此現(xiàn)在很多工作通過(guò)算法自動(dòng)進(jìn)行字體設(shè)計(jì)。然而不同于英文字母的風(fēng)格遷移或者其他風(fēng)格遷移任務(wù),漢字結(jié)構(gòu)復(fù)雜、筆畫(huà)豐富而且不同字體都有自己獨(dú)特的風(fēng)格,因此漢字的風(fēng)格遷移是一項(xiàng)很艱難的工作。
現(xiàn)有的漢字風(fēng)格遷移方法可以分為通過(guò)神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)筆畫(huà)的組合方式和基于端到端網(wǎng)絡(luò)進(jìn)行圖像生成兩大類。
第一類方法將漢字看作各種筆畫(huà)的組合,通過(guò)神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)漢字的各種結(jié)構(gòu)信息,并通過(guò)生成目標(biāo)字體的部件以組合的方式得到目標(biāo)字體。Junbum等人[1]通過(guò)引入部件復(fù)用的概念,通過(guò)提出的一種具有類似存儲(chǔ)器功能的部件分析模塊,在訓(xùn)練的過(guò)程中學(xué)習(xí)不同部件的特征,在解碼時(shí)從其中取出對(duì)應(yīng)部件的特征組合成目標(biāo)字體;Xie等人[2]提出很多字體的風(fēng)格可以通過(guò)標(biāo)準(zhǔn)字體經(jīng)過(guò)變換得到,因此他們提出引入可變形卷積對(duì)輸入字的特征進(jìn)行處理,通過(guò)對(duì)齊標(biāo)準(zhǔn)字和目標(biāo)風(fēng)格字的特征進(jìn)行字體的風(fēng)格遷移;Tang等人[3]的方法同樣使用基于部件復(fù)用的方法進(jìn)行目標(biāo)風(fēng)格字體的生成,通過(guò)引入交叉注意力機(jī)制使模型能夠更好地匹配內(nèi)容字和風(fēng)格字的空間特征,使目標(biāo)字體的部件能夠準(zhǔn)確地遷移到源字體的對(duì)應(yīng)部位。
另一類方法基于端到端的神經(jīng)網(wǎng)絡(luò),通常使用編碼器-解碼器的結(jié)構(gòu)直接將輸入的源字體圖像轉(zhuǎn)換為目標(biāo)字體,這類方法通常使用生成對(duì)抗網(wǎng)絡(luò)[4]的方式進(jìn)行訓(xùn)練。Zi2Zi[5]是這類方法的代表,它基于Pix2Pix[6]的網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行改進(jìn),訓(xùn)練U-Net結(jié)構(gòu)的生成器使其能夠輸入一個(gè)標(biāo)準(zhǔn)漢字得到一個(gè)具有特定風(fēng)格的漢字。Wen等人[7]引入了循環(huán)生成對(duì)抗網(wǎng)絡(luò)[8]的模式,加入了一組額外的生成器和判別器,使生成的目標(biāo)風(fēng)格字體映射回原來(lái)的字體,通過(guò)循環(huán)一致性的方式約束目標(biāo)風(fēng)格字體的生成質(zhì)量。
現(xiàn)有的字體風(fēng)格遷移方法很難收斂,例如將源字體圖像經(jīng)過(guò)編碼器進(jìn)行編碼,再將其解碼成目標(biāo)字體圖像。由于這個(gè)過(guò)程需要處理很多細(xì)節(jié)和復(fù)雜性,所以需要大量的數(shù)據(jù)和時(shí)間進(jìn)行訓(xùn)練。
4、及時(shí)與學(xué)生家長(zhǎng)溝通,共商良策。當(dāng)深入了解情況,發(fā)現(xiàn)問(wèn)題源地、中心人物以及迷信思想都來(lái)自于學(xué)生老家,一個(gè)人的出生地文化決定了我們的性格特征、行事風(fēng)格和思維方式,我選擇聯(lián)系學(xué)生的母親,利用長(zhǎng)輩和親情的力量去感召學(xué)生。
現(xiàn)有的字體風(fēng)格遷移方法難以處理復(fù)雜的字體結(jié)構(gòu),例如帶有特殊符號(hào)或復(fù)雜曲線的字體。這是因?yàn)閭鹘y(tǒng)的方法主要基于對(duì)圖像的像素級(jí)別處理,難以準(zhǔn)確捕捉字體的結(jié)構(gòu)和形狀。
本文采用條件生成對(duì)抗網(wǎng)絡(luò)的方式訓(xùn)練端到端的字體風(fēng)格遷移網(wǎng)絡(luò),通過(guò)知識(shí)蒸餾技術(shù)[9]將經(jīng)過(guò)預(yù)訓(xùn)練的目標(biāo)風(fēng)格字體圖像重建網(wǎng)絡(luò)的特征信息引入字體風(fēng)格遷移網(wǎng)絡(luò),使網(wǎng)絡(luò)更好地學(xué)習(xí)目標(biāo)字體的特征解碼方式。同時(shí)結(jié)合邊緣平滑損失和感知損失[10]使生成的目標(biāo)字體更加真實(shí)。
本文提出的字體風(fēng)格遷移網(wǎng)絡(luò)結(jié)構(gòu)如圖1。字體風(fēng)格遷移網(wǎng)絡(luò)使用與Zi2Zi相同的結(jié)構(gòu),通過(guò)條件生成對(duì)抗網(wǎng)絡(luò)的方式訓(xùn)練生成器作為字體風(fēng)格遷移網(wǎng)絡(luò)。為了能夠更好地將編碼器提取的特征解碼為目標(biāo)風(fēng)格字體,本文引入一個(gè)經(jīng)過(guò)預(yù)訓(xùn)練的目標(biāo)風(fēng)格字體圖像重建模型作為教師網(wǎng)絡(luò),以知識(shí)蒸餾中的特征蒸餾[11]方式使作為學(xué)生網(wǎng)絡(luò)的字體風(fēng)格遷移網(wǎng)絡(luò)能夠更好地將特征解碼為目標(biāo)風(fēng)格字體。同時(shí)為了使生成的目標(biāo)字體邊緣更加平滑,本文使用邊緣平滑損失使網(wǎng)絡(luò)更加關(guān)注梯度變化較大位置的生成,并且引入了感知損失使生成的目標(biāo)風(fēng)格字體圖像更加真實(shí)。
圖1 基于知識(shí)蒸餾的字體風(fēng)格遷移網(wǎng)絡(luò)結(jié)構(gòu)
本文的生成對(duì)抗網(wǎng)絡(luò)結(jié)構(gòu)屬于條件生成對(duì)抗網(wǎng)絡(luò)[12],以源風(fēng)格字體圖像作為生成器的輸入來(lái)生成目標(biāo)風(fēng)格字體,使用PatchGAN結(jié)構(gòu)[6]的判別器判斷生成質(zhì)量。
生成器的結(jié)構(gòu)如圖2。是一個(gè)編碼器-解碼器結(jié)構(gòu)的U-Net[13]網(wǎng)絡(luò),網(wǎng)絡(luò)的輸入為單通道源字體圖像,編碼器將輸入圖像下采樣到較低的特征空間,解碼器再將其上采樣回原始圖像大小并輸出為目標(biāo)風(fēng)格字體圖像。具體來(lái)說(shuō),生成器的網(wǎng)絡(luò)結(jié)構(gòu)由8組跳躍連接模塊組成,每組跳躍連接模塊包括一個(gè)下采樣卷積層、一個(gè)上采樣卷積層以及相應(yīng)的批歸一化層。其中,下采樣卷積層使用 LeakyReLU 作為激活函數(shù),以2為步幅降低圖像尺寸;上采樣卷積層使用 ReLU 作為激活函數(shù),以2為步幅還原圖像尺寸。批歸一化層的作用是在訓(xùn)練過(guò)程中加速收斂,并且有效避免過(guò)擬合等問(wèn)題的發(fā)生。此外,編碼器每一層都有一個(gè)跳躍連接,將編碼器中同一層級(jí)的特征與解碼器中對(duì)應(yīng)位置的特征相連,這種跳躍連接能夠幫助網(wǎng)絡(luò)保留較低層的細(xì)節(jié)信息。
圖2 生成器網(wǎng)絡(luò)結(jié)構(gòu)
本文的判別器如圖3。它采用的PatchGAN結(jié)構(gòu)是一種基于區(qū)域的判別器結(jié)構(gòu),它將輸入的生成目標(biāo)風(fēng)格字體圖像或者真實(shí)的目標(biāo)風(fēng)格字體圖像分成N×N個(gè)區(qū)域,并對(duì)每個(gè)區(qū)域進(jìn)行二分類真假判別。具體來(lái)說(shuō)判別器的結(jié)構(gòu)是一個(gè)全卷積網(wǎng)絡(luò),由卷積層、LeakyReLU 激活函數(shù)以及批歸一化層堆疊而成,最后一個(gè)卷積層的輸出通道數(shù)為 1,其中的值對(duì)應(yīng)每個(gè)區(qū)域的真假判斷。通過(guò)這種結(jié)構(gòu)設(shè)計(jì),PatchGAN結(jié)構(gòu)的判別器可以為圖片不同尺度的局部信息判斷真假,具有更強(qiáng)的判別能力。
圖3 PatchGAN判別器網(wǎng)絡(luò)結(jié)構(gòu)
教師網(wǎng)絡(luò)采用與字體風(fēng)格遷移網(wǎng)絡(luò)中的生成器結(jié)構(gòu)相同的U-Net結(jié)構(gòu),輸入目標(biāo)風(fēng)格字體圖像并通過(guò)均方誤差損失約束使其能夠重建為輸入圖像,在這個(gè)過(guò)程中模型能夠很好地學(xué)習(xí)到將目標(biāo)風(fēng)格字體進(jìn)行特征編碼并解碼為目標(biāo)風(fēng)格字體的能力。而字體風(fēng)格遷移網(wǎng)絡(luò)中的編碼器學(xué)習(xí)如何將源字體編碼為特征圖,解碼器學(xué)習(xí)如何將特征圖解碼為目標(biāo)風(fēng)格字體,其中解碼器部分可以通過(guò)特征蒸餾的方式學(xué)習(xí)教師網(wǎng)絡(luò)的解碼器的特征解碼方式,獲得更好的目標(biāo)風(fēng)格字體生成能力。
本文使用的損失函數(shù)主要包括GAN損失函數(shù)、L1損失函數(shù)、特征蒸餾損失函數(shù)以及感知損失函數(shù)。
其中GAN損失函數(shù)與條件生成對(duì)抗網(wǎng)絡(luò)的損失函數(shù)相同,通過(guò)判別器將生成器生成的目標(biāo)風(fēng)格字體圖像與真實(shí)的目標(biāo)風(fēng)格字體圖像進(jìn)行對(duì)比,以此來(lái)鼓勵(lì)生成器生成逼真的目標(biāo)風(fēng)格字體圖像,這一損失函數(shù)的公式如下:
LcGAN(G,D)=Ex,y[logD(x,y)+Ex,z[log(1-D(x,G(x,z)))]。
(1)
式中,x表示輸入的源風(fēng)格字體圖像,y表示目標(biāo)風(fēng)格字體圖像。生成器的目標(biāo)是生成判別器認(rèn)為真實(shí)的目標(biāo)圖像,判別器的目標(biāo)則是準(zhǔn)確判斷輸入的圖像是真實(shí)的目標(biāo)風(fēng)格字體圖像還是生成的目標(biāo)風(fēng)格字體圖像。
然而生成器的目標(biāo)不僅成功欺騙判別器,還需要使生成圖像接近目標(biāo)圖像,因此同樣需要加入其他的圖像相似性損失函數(shù),相對(duì)于L2損失,L1損失能夠鼓勵(lì)網(wǎng)絡(luò)減少圖像中的模糊區(qū)域,因此本文選擇使用L1損失函數(shù)約束生成圖像與目標(biāo)圖像的相似性,L1損失函數(shù)的公式如下:
(2)
GAN損失函數(shù)和L1損失函數(shù)的優(yōu)化目標(biāo)都是使最終的輸出結(jié)果,特征蒸餾損失可以直接約束網(wǎng)絡(luò)中間的特征層,使網(wǎng)絡(luò)能夠更加直接地學(xué)習(xí)教師網(wǎng)絡(luò)的特征處理能力,能夠更高效地訓(xùn)練網(wǎng)絡(luò),本文使用的特征蒸餾損失函數(shù)如下所示:
(3)
其中p和q分別表示教師和學(xué)生的特征圖分布,本文選擇的是對(duì)8層解碼器上采用網(wǎng)絡(luò)的特征進(jìn)行約束。
現(xiàn)有的字體風(fēng)格遷移方法如Zi2Zi的生成結(jié)果邊緣處存在不平滑的情況,為了使生成的字體邊緣更加真實(shí),本文引入邊緣平滑損失,通過(guò)對(duì)生成圖像與真實(shí)目標(biāo)圖像的梯度進(jìn)行加權(quán),使網(wǎng)絡(luò)對(duì)于高梯度處也就是邊緣位置的生成更加謹(jǐn)慎,減少生成帶來(lái)的噪聲,使生成更加真實(shí),邊緣平滑損失的計(jì)算方式如下所示:
(4)
為了使圖像生成得更加真實(shí),本文還使用了基于VGG19[14]的感知損失,感知損失通過(guò)預(yù)訓(xùn)練的VGG19模型提取圖像的高維特征表示,高維特征包含了豐富的圖像結(jié)構(gòu)與內(nèi)容信息,可以很好地約束生成的目標(biāo)風(fēng)格字體圖像與真實(shí)的目標(biāo)風(fēng)格字體圖像之間的一致性。本文使用的VGG19感知損失函數(shù)如下所示:
(5)
式中:φ表示本文使用VGG19網(wǎng)絡(luò)結(jié)構(gòu);表示網(wǎng)絡(luò)的層數(shù);φi(I)表示第i層網(wǎng)絡(luò)輸出的特征;λi表示對(duì)應(yīng)的權(quán)重。
本文字體風(fēng)格遷移網(wǎng)絡(luò)的損失函數(shù)如下所示:
LT=α1LcGAN+α2LL1+α3Lf+α4Ls+α5Lp。
(6)
其中α1為15,α2為100,α3為100,α4為100,α5為1。
為了更客觀地評(píng)估本文方法的性能,除了將生成結(jié)果可視化的定性實(shí)驗(yàn),本文還通過(guò)均方根誤差(RMSE)和像素誤差率(PDR)兩個(gè)指標(biāo)作為評(píng)估標(biāo)準(zhǔn)進(jìn)行定量實(shí)驗(yàn)對(duì)本文方法進(jìn)行實(shí)驗(yàn)評(píng)估。
為了評(píng)估本文方法的性能,本文構(gòu)建了具有多種風(fēng)格字體的數(shù)據(jù)集,其中包括印刷體如宋體、黑體以及手寫(xiě)體如楷體等,通過(guò)對(duì)生成結(jié)果進(jìn)行可視化以及使用均方根誤差和像素誤差率兩個(gè)定量指標(biāo)對(duì)生成結(jié)果進(jìn)行客觀評(píng)價(jià)。
使用宋體作為源風(fēng)格字體,目標(biāo)風(fēng)格字體選擇了黑體用以測(cè)試對(duì)印刷體的生成能力以及楷體測(cè)試針對(duì)手寫(xiě)體生成能力,隨機(jī)選擇了3 000個(gè)漢字生成了三種字體的相對(duì)應(yīng)圖像進(jìn)行訓(xùn)練和測(cè)試,其中用于訓(xùn)練和測(cè)試的數(shù)據(jù)比例為9:1,漢字圖像均為單通道的二值圖。
本文使用Pytorch框架搭建字體風(fēng)格遷移網(wǎng)絡(luò),選擇Adam優(yōu)化器對(duì)模型進(jìn)行訓(xùn)練,初始學(xué)習(xí)率設(shè)置為0.001,每20輪訓(xùn)練衰減為原來(lái)的一半,共進(jìn)行100輪訓(xùn)練,批大小設(shè)置為32。本次實(shí)驗(yàn)的運(yùn)行環(huán)境為Ubuntu 16.04系統(tǒng),Intel(R) Xeon(R) E5-2673 CPU,英偉達(dá)GeForce GTX 1080 Ti GPU。
對(duì)于源字體為宋體,目標(biāo)字體分別為黑體和楷體的風(fēng)格遷移實(shí)驗(yàn)結(jié)果分別如圖4~5??梢钥吹絑i2Zi的生成結(jié)果在字體的邊緣以及結(jié)構(gòu)復(fù)雜、筆畫(huà)緊湊的漢字(如“嬤”)位置處理地不夠好,而本文的方法能夠更好地生成邊緣平滑、結(jié)構(gòu)清晰且更加真實(shí)的目標(biāo)風(fēng)格字體。
圖4 宋體轉(zhuǎn)換成黑體的生成結(jié)果
圖5 宋體轉(zhuǎn)換成楷體的生成結(jié)果
根據(jù)主觀判斷,本文的字體風(fēng)格遷移結(jié)果相比于Zi2Zi在細(xì)節(jié)處更加真實(shí)且文字的邊緣更加清晰。
除了主觀評(píng)價(jià),本文還采用均方根誤差(RMSE)和像素誤差率(PDR)兩個(gè)客觀指標(biāo)評(píng)估生成結(jié)果。RMSE通過(guò)生成圖像的整體觀感進(jìn)行評(píng)價(jià),PDR通過(guò)漢字圖像的像素點(diǎn)位置的誤差率評(píng)估生成效果,RMSE和PDR的計(jì)算方式如下所示:
(7)
(8)
式中:f和r分別表示生成圖像(fake)和真實(shí)圖像(real)的2維向量;兩幅圖像中對(duì)應(yīng)位置的像素值分別用fi,j和ri,j表示;M和N代表圖像在兩個(gè)維度上的像素點(diǎn)總數(shù)。I{·}在fi,j=ri,j時(shí)值為1,否則為0。RMSE、PDR值越小說(shuō)明模型的生成結(jié)果越接近真實(shí)圖像。
本文方法和Zi2Zi的對(duì)比結(jié)果見(jiàn)表1。在兩種類型的字體的風(fēng)格遷移任務(wù)上都體現(xiàn)出了本文方法的有效性。
表1 定量分析
基于改進(jìn)生成對(duì)抗網(wǎng)絡(luò)的字體風(fēng)格遷移的研究,通過(guò)對(duì)目標(biāo)風(fēng)格字體進(jìn)行圖像重建任務(wù)學(xué)習(xí)目標(biāo)風(fēng)格字體的解碼過(guò)程,結(jié)合特征蒸餾技術(shù)提升了風(fēng)格遷移網(wǎng)絡(luò)中針對(duì)目標(biāo)風(fēng)格字體的解碼能力,并通過(guò)引入邊緣平滑損失和感知損失提高了字體風(fēng)格遷移任務(wù)中目標(biāo)風(fēng)格字體的生成質(zhì)量。