陳芯芯,王江江
(大連民族大學(xué) a.計算機(jī)科學(xué)與工程學(xué)院; b.大連市漢字計算機(jī)字庫設(shè)計技術(shù)創(chuàng)新中心遼寧 大連 116650)
漢字是一種內(nèi)涵豐富、外觀多樣化的字符系統(tǒng),由于漢字的形狀與書寫風(fēng)格多樣,對漢字多風(fēng)格特征抽取后融合難度較大。在完成字體圖像多風(fēng)格遷移融合學(xué)習(xí)過程中,并不需要關(guān)注圖像的所有特征,只需要關(guān)注字體圖像的風(fēng)格特征,此時如果可以把字體的風(fēng)格特征從整體維度中解耦融合出來,就能更好地控制生成效果。InfoGAN[1]的設(shè)計目的就是將這些雜亂無章的特征清晰化規(guī)律化,通過解耦方式將多風(fēng)格特征融合出來以控制圖像的生成。
多風(fēng)格字體融合生成技術(shù)研究意義重大,Yunjey Choi等人[2]提出了多個域之間圖像轉(zhuǎn)換的StarGAN模型,以解決生成過程中圖像域的可拓展性和魯棒性較差問題;李金金等人[3]提出了IBN-Net,將實例標(biāo)準(zhǔn)化和批標(biāo)準(zhǔn)化結(jié)合形成殘差網(wǎng)絡(luò)的基礎(chǔ)模塊,實現(xiàn)了多種風(fēng)格域的無監(jiān)督字體風(fēng)格遷移;Xiaoxue Zhou等人[4]在多尺度內(nèi)容和風(fēng)格特征融合的基礎(chǔ)上,構(gòu)建了一個風(fēng)格傳輸網(wǎng)絡(luò),可以同時完成多個字體的風(fēng)格遷移;陳丹妮等[5]提出了一種SSNet網(wǎng)絡(luò),結(jié)構(gòu)網(wǎng)絡(luò)和語義網(wǎng)絡(luò)負(fù)責(zé)源域字體特征的提取,可提高生成多風(fēng)格漢字圖像的質(zhì)量;Jianwei Zhang等人[6]提出了一種結(jié)構(gòu)語義網(wǎng)(SSNet)的漢字排版生成方法,該方法利用結(jié)構(gòu)模塊中解開的筆畫特征,語義模塊中預(yù)先訓(xùn)練的語義特征來生成多風(fēng)格目標(biāo)圖像;Licheng Tang等[7]提出了一種通過學(xué)習(xí)細(xì)粒度的局部樣式和空間對應(yīng)關(guān)系的內(nèi)容和參考字形,使用交叉關(guān)注機(jī)制關(guān)注參考字形中局部樣式和細(xì)粒度樣式表示的方法,生成多風(fēng)格樣式融合的字體圖像。
本文通過改進(jìn)深度學(xué)習(xí)的現(xiàn)有模型多風(fēng)格融合出生成字體圖像的關(guān)鍵風(fēng)格特征,通過控制多風(fēng)格融合出的關(guān)鍵風(fēng)格特征,進(jìn)行不同字體風(fēng)格特征的融合。
本文InfoGAN[1]是在傳統(tǒng)的生成對抗網(wǎng)絡(luò)(GAN)基礎(chǔ)上加入了一個額外的噪聲向量,可以用來融合輸入圖片的多風(fēng)格特征。通過將噪聲向量分解為多個部分,每個部分對應(yīng)于輸入圖片的不同特征,可以使生成器生成更多樣化的圖片。
具體來說,InfoGAN的生成器輸入由三部分組成:噪聲向量(Latent Code)、條件向量(Conditional Code)和分類向量(Class Code)。其中,噪聲向量和條件向量是原始GAN中的輸入,分類向量是額外加入的向量。在訓(xùn)練過程中,分類向量是由判別器預(yù)測得到的,用于指導(dǎo)生成器生成具有特定類別的圖片。通過對噪聲向量分解,可以將其分成兩部分:一個部分用于控制輸入圖片的全局特征,例如位置、角度等;另一個部分用于控制輸入圖片的局部特征,例如顏色、紋理等。這樣,生成器就可以根據(jù)噪聲向量的不同部分生成具有不同全局和局部特征的圖片。
本文在InfoGAN原有基礎(chǔ)上,修改了輸入向量的維度,增加了通道注意力模塊,使其可以融合出更多字體圖像的相關(guān)特征,針對大小寫英文字母的網(wǎng)絡(luò)模型如圖1。
圖1 改進(jìn)的InfoGAN特征多風(fēng)格融合網(wǎng)絡(luò)模型
輸入向量的“固定”部分包含離散和連續(xù)兩部分,針對52位大小寫英文字母數(shù)據(jù)集,本文將離散的潛碼數(shù)保持原模型的1位不變,離散潛碼的維度由10維改為52維,連續(xù)潛碼數(shù)由2位變?yōu)?位;針對中文數(shù)據(jù)集,選取常用的500個漢字圖像,將離散的潛碼數(shù)保持原模型的1位不變,離散潛碼的維度由10維改為500維,連續(xù)潛碼數(shù)由2位變?yōu)?位。添加的通道注意力模塊由一個自適應(yīng)的平均池化層和兩個全連接層組成。具體的網(wǎng)絡(luò)結(jié)構(gòu)見表1。
表1 改進(jìn)的InfoGAN網(wǎng)絡(luò)結(jié)構(gòu)
基于InfoGAN的多風(fēng)格融合的核心是分離特征或者提取特征。神經(jīng)網(wǎng)絡(luò)中的神經(jīng)元以某種方式單獨學(xué)習(xí)完整的概念,一個神經(jīng)元可能學(xué)會特定的物體,而不明顯依賴于其他神經(jīng)元。通常,學(xué)習(xí)到的特征往往是混雜的,它們在數(shù)據(jù)空間中以一種無序而復(fù)雜的方式被編碼。如果這些特征是可以分解的,那么這些特征就更容易理解,就可以更方便的使用這些特征進(jìn)行編碼如圖2。
圖2 InfoGAN的特征解耦示意圖
改進(jìn)的InfoGAN可以最大化相互信息以用來可學(xué)習(xí)表示,分離離散的和連續(xù)的潛在因素從而擴(kuò)展到復(fù)雜的數(shù)據(jù)集,并且不需要太多訓(xùn)練時間。
InfoGAN可以通過無監(jiān)督的方式學(xué)習(xí)到數(shù)據(jù)的高層語義特征,并且可以通過控制隱變量來生成具有不同特征的數(shù)據(jù)。其中生成器的輸入被分成了兩部分:隨機(jī)噪聲Z和由多個隱變量構(gòu)成的Latent Code、c,即可解釋的隱變量。其中,c有先驗的概率分布,可以是離散數(shù)據(jù),也可以是連續(xù)數(shù)據(jù),用來表示生成數(shù)據(jù)的不同特征。通過改變離散特征表示(Categorial Latent Code),可以生成不同種類的字母或漢字。通過改變連續(xù)特征表示(Continous Latent Code),可以生成不同風(fēng)格的字母或漢字。
基于CNN的通道注意力[8]是一種注意力機(jī)制,它可以根據(jù)每個通道的重要程度,來增強(qiáng)有用的特征,減弱無用的特征。
本文的通道注意力模塊如圖3。具體來說,輸入一個H×W×C的特征F,首先,對每個通道的特征圖分別進(jìn)行全局最大池化和平均池化,得到兩個1×1×C的向量。然后,用一個共享的兩層全連接網(wǎng)絡(luò)把這兩個向量非線性變換成另外兩個1×1×C的向量。其次,把這兩個向量加起來并用一個Sigmoid激活函數(shù),得到一個1×1×C的權(quán)重系數(shù)向量Mc。最后,將Mc乘以輸入的特征F,得到一個新的特征。
圖3 通道注意力模塊
為了保證生成圖像的生成質(zhì)量和細(xì)節(jié)特征,本文設(shè)計了五種損失函數(shù),模型訓(xùn)練時使用不同損失函數(shù)的線性組合。
Dversarial Loss[9]:最終的優(yōu)化目標(biāo)是讓生成器Ladν最小,判別器Ladν最大,對抗損失Ladν如公式(1)所示:
Ladν=Ex∈pdata[logD(x,y)]+Ez∈pinput[log(1-D(G(x)))]。
(1)
Self Rebuilding Loss[10]:為了保證字體圖像編碼和解碼過程中沒有信息丟失或模型引起失真,改進(jìn)的InfoGAN模型應(yīng)具有自我重建的能力,即能夠根據(jù)編碼器提取的結(jié)構(gòu)和風(fēng)格信息重新生成原圖像。自重建損失Lrec如公式(2)所示:
(2)
Consistency Cycle loss[11]:由于InfoGAN采用無監(jiān)督訓(xùn)練方式,生成的增強(qiáng)圖像可能會丟失原始圖像的結(jié)構(gòu)信息。因此,采用了循環(huán)一致性損失,以保證增強(qiáng)前后圖像的結(jié)構(gòu)盡量相似,具體如公式(3)所示:
(3)
Consistent Style Loss[12]:為了生成的清晰和失真圖像與原圖保持了相同的風(fēng)格,以便風(fēng)格特征提取更一致,引入了風(fēng)格一致性損失,具體公式如(4)所示:
(4)
Consistency Structure Loss[13]:為了讓生成圖像與原圖像的結(jié)構(gòu)更一致,還加入結(jié)構(gòu)一致?lián)p失來強(qiáng)化生成前后的結(jié)構(gòu)特征一致性,其具體公式如(5)所示:
(5)
為了驗證本文提出的模型的性能,通過以下三個評價指標(biāo)進(jìn)行定量分析。
(1)均方根誤差是衡量預(yù)測值與真實值之間的偏差差距。RMSE的值越小,表示預(yù)測模型的精度越高。其中x表示漢字字體生成網(wǎng)絡(luò)生成的融合圖像,y表示期望目標(biāo)漢字字體圖像。其計算公式如(6)所示:
(6)
(2)內(nèi)容相似度是通過VGG19網(wǎng)絡(luò)的分類器提取兩張圖像的高級特征,這些特征之間的歐氏距離越小,兩張圖像的SIOC越高。
dF(F1,F2)=
(7)
根據(jù)上述高級特征向量之間的歐氏距離可得內(nèi)容相似度如公式(8)所示:
(8)
(3)風(fēng)格相似度是通過卷積層得到特征圖組成的Gram矩陣,Gram矩陣之間的歐氏距離越小,兩張圖像的風(fēng)格越相似,風(fēng)格相似度評價標(biāo)準(zhǔn)可根據(jù)計算特征之間的相關(guān)性 構(gòu)建Gram矩陣,比較兩張圖像的Gram矩陣可以體現(xiàn)風(fēng)格損失的情況。
dG(G1,G2)=
(9)
根據(jù)上述Gram之間的歐氏距離可得風(fēng)格相似度如公式(10)所示:
(10)
本文使用Adam優(yōu)化算法來訓(xùn)練生成器和判別器,設(shè)置批處理大小為4,初始學(xué)習(xí)率為0.000 2,從GB2312字符集中選取了10個數(shù)字和52個大小寫英文字符,構(gòu)成了西文數(shù)據(jù)集,從GB2312字符集中選取了常用的9 169個中文漢字構(gòu)成了漢字?jǐn)?shù)據(jù)集。
本文的實驗環(huán)境采用Intel Xeon(R)CPU E5-2620 v4@2.10 GHz×32處理器,64 GB 內(nèi)存,配備2張Tesla K40C顯卡,在Ubuntu 18.04操作系統(tǒng)下,配置Python 3.6.5、深度學(xué)習(xí)框架PyTorch、Keras,使用CUDA9.0和CuDNN實現(xiàn)GPU加速。
本文將訓(xùn)練數(shù)據(jù)分為西文數(shù)據(jù)集和中文數(shù)據(jù)集兩部分,分別進(jìn)行訓(xùn)練和測試。西文數(shù)據(jù)集包括41 600張訓(xùn)練集和10 400張驗證集,中文數(shù)據(jù)集包括24 000張訓(xùn)練集和6 000張驗證集。
中文數(shù)據(jù)集多風(fēng)格融合的漢字的粗細(xì)如圖4。InfoGAN的優(yōu)點是它不需要任何監(jiān)督信息,而是自動地發(fā)現(xiàn)數(shù)據(jù)中的潛在結(jié)構(gòu)和變化因素。
本文在InfoGAN模型中加入條件變量,使得生成器模型可以針對不同的條件生成不同的風(fēng)格圖片。部分不同西文和中文風(fēng)格融合后的效果圖如圖5。中文融合部分的實驗效果是用不同的字體從不同的方面進(jìn)行融合。
圖5 中西文多風(fēng)格融合示例圖
本文對比了VAE[14]、Beta-VAE[15]和InfoGAN等特征多風(fēng)格融合方法生成字體圖像的質(zhì)量和多樣性如圖6。從圖中可以看出本文提出的方法在字形、紋理、風(fēng)格等融合方面均略好于其他方法。
圖6 不同方法對比實驗示例
此外,通過定量指標(biāo)或定性指標(biāo)來評估不同模型的表現(xiàn)見表2。在兩組字體圖像中,RMSE指標(biāo)比VAE平均低1.00個百分點,比Beta-VAE平均低1.02個百分點,比InfoGAN平均低1.34個百分點;SIOC指標(biāo)比VAE平均高0.76個百分點,比Beta- VAE平均高1.12個百分點,比InfoGAN平均高0.48個百分點;SIOS指標(biāo)比VAE平均高0.83個百分點,比Beta-VAE平均高1.01個百分點,比InfoGAN平均高1.07個百分點。說明本文方法生成的字體融合圖像與參考圖像的均方根誤差最小,模型預(yù)測精度最高;內(nèi)容相似度和風(fēng)格相似度最高。通過這些實驗結(jié)果,可以證明本文提出的方法具有較強(qiáng)的特征解耦能力和圖像多風(fēng)格融合能力。
表2 定量評價
為了評估該模型的效果和探究其內(nèi)部機(jī)制,進(jìn)行了消融實驗。使用改進(jìn)的InfoGAN模型,在200種字庫和9 000張字體圖像的訓(xùn)練集下進(jìn)行訓(xùn)練。對比了使用CAM融合和不使用CAM融合兩種方式的效果差異。結(jié)果表明,改進(jìn)后的模型能夠更好地保留不同漢字書法風(fēng)格的特征,并生成更加自然、流暢的漢字書法風(fēng)格。比較原始的InfoGAN模型,具有更好的多風(fēng)格融合效果。模型改進(jìn)前后的部分對比示例圖如圖7。
圖7 模型消融實驗示例圖
加入CAM模塊的消融實驗定量分析見表3。從表中數(shù)據(jù)可以看出加入CAM模塊的改進(jìn)是有效的。
表3 模型消融實驗定量評價
通過改進(jìn)的InfoGAN模型。對不同字體的特征進(jìn)行提取,將這些特征分解為不同的子空間,即多風(fēng)格融合。然后再將這些特征進(jìn)行融合,生成新的字體。因此,可以生成大量具有不同風(fēng)格的字體,且生成的字體與原始字體的特征關(guān)系可以被保留,因此生成的字體質(zhì)量較高。