李二強(qiáng), 陳凱健, 周 漾
(深圳大學(xué) 計(jì)算機(jī)與軟件學(xué)院, 廣東 深圳 518060)
紋理合成是圖形學(xué)及圖像處理領(lǐng)域的基礎(chǔ)問(wèn)題之一, 紋理合成技術(shù)旨在合成符合用戶要求的紋理圖片, 在真實(shí)感和非真實(shí)感繪制、 圖像修復(fù)、 圖像藝術(shù)風(fēng)格轉(zhuǎn)換等領(lǐng)域應(yīng)用廣泛. 紋理合成方法主要分為兩大類: 基于參數(shù)化過(guò)程的和基于樣例的紋理合成. 由于前者包含復(fù)雜的參數(shù)設(shè)計(jì), 因此目前的研究工作以后者為主.
基于樣例的紋理合成算法研究目前已取得許多成果[1-14]. 傳統(tǒng)基于樣例的紋理合成方法主要從源紋理圖像拷貝像素顏色至結(jié)果圖像, 包括逐像素拷貝[1-2]、 逐塊拷貝拼接[3-4]和基于塊紋理優(yōu)化[5,15], 這些算法在均勻紋理(隨機(jī)紋理和規(guī)則紋理等)的合成上取得了較好的效果. 對(duì)于非均勻紋理, 近年才有研究者通過(guò)分析樣圖, 提取一些人工設(shè)計(jì)特征作為引導(dǎo)通道實(shí)現(xiàn)可控合成, 例如邊緣[6]和漸變[7]等. 但這些方法可處理的非均勻紋理有限. 深度學(xué)習(xí)技術(shù)的發(fā)展為紋理合成方法帶來(lái)了新思路. Gatys等[8]用神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)了基于樣圖的紋理合成工作, 該方法將神經(jīng)網(wǎng)絡(luò)中間層的特征圖統(tǒng)計(jì)信息作為深度紋理表征, 通過(guò)反饋網(wǎng)絡(luò)優(yōu)化合成結(jié)果; Ulyanov等[9]將文獻(xiàn)[8]的方法轉(zhuǎn)換為前饋神經(jīng)網(wǎng)絡(luò); Li等[12]將生成對(duì)抗網(wǎng)絡(luò)引入到紋理合成中, 該網(wǎng)絡(luò)能同時(shí)進(jìn)行紋理合成和藝術(shù)風(fēng)格遷移; 文獻(xiàn)[11]提出了一種用于合成周期性重復(fù)紋理的生成對(duì)抗網(wǎng)絡(luò). 但這些深度學(xué)習(xí)方法仍僅適用于隨機(jī)或規(guī)則性重復(fù)等均勻紋理. Sendik等[16]對(duì)文獻(xiàn)[8]的工作進(jìn)行了改進(jìn), 通過(guò)引入深層關(guān)聯(lián)誤差項(xiàng), 提高了具有規(guī)則結(jié)構(gòu)的非均勻紋理合成質(zhì)量, 但該方法對(duì)大尺度結(jié)構(gòu)的感知能力和感知范圍有限, 也不能處理具有空域變化的非均勻紋理. Zhou等[14]基于生成對(duì)抗網(wǎng)絡(luò), 提出了通過(guò)訓(xùn)練網(wǎng)絡(luò)學(xué)習(xí)從小紋理塊擴(kuò)展成包含其大紋理塊的映射, 使得網(wǎng)絡(luò)在學(xué)習(xí)紋理模式內(nèi)分布的同時(shí), 還能使輸出結(jié)果符合輸入紋理的結(jié)構(gòu), 從而解決了非均勻紋理合成的難題. 但這些方法對(duì)每張紋理圖片都需單獨(dú)訓(xùn)練一個(gè)專門(mén)網(wǎng)絡(luò)(稱為單一紋理擴(kuò)展模型), 當(dāng)需要學(xué)習(xí)多張紋理的合成時(shí), 空間消耗呈線性增加. 如果簡(jiǎn)單將文獻(xiàn)[14]的方法直接用于多張紋理合成, 即直接使用多張紋理圖像訓(xùn)練單一紋理擴(kuò)展模型, 當(dāng)紋理圖像間的紋理模式接近時(shí), 會(huì)出現(xiàn)合成結(jié)果退化為同一種紋理的現(xiàn)象, 在生成對(duì)抗網(wǎng)絡(luò)中稱為模式崩潰現(xiàn)象. 而且文獻(xiàn)[14]方法使用的生成器網(wǎng)絡(luò)只有一個(gè)條件輸入, 即使網(wǎng)絡(luò)能學(xué)習(xí)到多種不同的紋理模式, 在進(jìn)行紋理遷移時(shí), 用戶也無(wú)法控制生成想要的紋理模式或風(fēng)格. 目前已有通過(guò)過(guò)擬合單一圖像實(shí)現(xiàn)自然圖像編輯的工作, 如InGAN[17]和SinGAN[18]方法, 這些方法也可直接用于紋理合成, 但與文獻(xiàn)[14]方法相同, 每張圖像都需要訓(xùn)練一個(gè)單獨(dú)的網(wǎng)絡(luò).
針對(duì)上述問(wèn)題, 本文在文獻(xiàn)[14]方法的基礎(chǔ)上, 提出一種新的適用于多重紋理擴(kuò)展合成與遷移的網(wǎng)絡(luò). 首先通過(guò)在判別器中增加分類誤差, 使判別器在區(qū)分生成數(shù)據(jù)和真實(shí)數(shù)據(jù)的同時(shí), 還能進(jìn)一步正確判別輸入紋理來(lái)自哪一張訓(xùn)練圖像, 從而改善模式崩潰問(wèn)題. 其次, 為達(dá)到紋理遷移中用戶對(duì)紋理模式的控制, 將生成器修改為雙流數(shù)據(jù)輸入, 其中一流提供結(jié)構(gòu)引導(dǎo)特征, 另一流提供紋理模式特征, 融合兩種特征后解碼生成最終的紋理圖像. 實(shí)驗(yàn)結(jié)果表明, 本文的多重紋理擴(kuò)展模型不僅可用一個(gè)網(wǎng)絡(luò)就能正確學(xué)習(xí)到多張紋理圖像的紋理模式, 訓(xùn)練好的模型還具有更好的紋理遷移功能.
不同方法的多重紋理擴(kuò)展結(jié)果如圖1所示. 文獻(xiàn)[14]提出的從小紋理塊到包含其大紋理塊的擴(kuò)展映射, 可視為一個(gè)完美的紋理合成過(guò)程, 如圖2所示. 基于該假設(shè), 先從單張紋理采樣出足夠多的大紋理塊作為生成結(jié)果參考圖像, 再?gòu)倪@些紋理塊中隨機(jī)采樣出小紋理塊作為輸入圖像, 利用對(duì)抗訓(xùn)練的方法, 最終訓(xùn)練生成器即學(xué)會(huì)了對(duì)任意大小的該種紋理由小到大的擴(kuò)展合成. 除擴(kuò)展相同紋理模式的輸入圖片外, 訓(xùn)練好的網(wǎng)絡(luò)還能將任意輸入圖片進(jìn)行紋理遷移, 生成保留輸入圖片的大尺度結(jié)構(gòu), 同時(shí)具備訓(xùn)練樣本紋理模式的合成紋理. 但該方法需對(duì)每張紋理圖片都單獨(dú)訓(xùn)練一個(gè)紋理擴(kuò)展模型, 如果需學(xué)習(xí)多張紋理的合成時(shí), 空間消耗將呈線性增加. 將文獻(xiàn)[14]的方法直接應(yīng)用于多張紋理合成, 即直接在多張紋理圖像上采樣訓(xùn)練紋理對(duì), 訓(xùn)練其同一個(gè)紋理擴(kuò)展模型, 可能導(dǎo)致以下問(wèn)題:
1) 當(dāng)訓(xùn)練集中紋理圖像間的紋理模式接近時(shí), 不同紋理輸入的合成結(jié)果退化為同一種紋理模式, 如圖1(C)所示, 這種現(xiàn)象在生成對(duì)抗網(wǎng)絡(luò)中稱為模式崩潰;
2) 生成器網(wǎng)絡(luò)只有一個(gè)條件輸入(提供大尺度結(jié)構(gòu)), 因此即使網(wǎng)絡(luò)能學(xué)習(xí)到多種不同的紋理模式, 在進(jìn)行紋理遷移時(shí)用戶也無(wú)法控制輸出的紋理模式或風(fēng)格.
圖1 不同方法的多重紋理擴(kuò)展結(jié)果
圖2 單一紋理擴(kuò)展合成過(guò)程
針對(duì)上述問(wèn)題, 本文基于單一紋理擴(kuò)展模型的思想, 提出一種新的多紋理擴(kuò)展合成網(wǎng)絡(luò), 如圖3所示. 該網(wǎng)絡(luò)生成器包含雙流輸入, 分別提供結(jié)構(gòu)控制與紋理模式/風(fēng)格, 從而使訓(xùn)練好的模型能按用戶指定的紋理模式進(jìn)行紋理遷移. 對(duì)于判別器網(wǎng)絡(luò), 本文受ACGAN[19]啟發(fā), 在PatchGAN[20]判別器基礎(chǔ)上增加一個(gè)分類器網(wǎng)絡(luò)分支, 從而改善多重紋理擴(kuò)展的模式崩潰現(xiàn)象.
圖3 多重紋理擴(kuò)展模型架構(gòu)
1.2.1 生成器網(wǎng)絡(luò)
生成器網(wǎng)絡(luò)采用雙流(two-stream)輸入, 一流輸入結(jié)構(gòu)引導(dǎo)圖片, 另一流輸入紋理模式圖片. 首先, 將雙流圖片分別輸入到預(yù)訓(xùn)練的VGG19網(wǎng)絡(luò)模型, 結(jié)構(gòu)引導(dǎo)流使用VGG19模型的relu3_4層提取圖片的特征圖, 提供擴(kuò)展結(jié)果的大尺度結(jié)構(gòu)引導(dǎo); 紋理模式流使用VGG19模型的relu3_1層提取紋理模式特征圖, 計(jì)算其Gram矩陣[21]作為圖片的紋理表征, 控制擴(kuò)展結(jié)果的整體紋理風(fēng)格. 其次, 為生成器網(wǎng)絡(luò)引入啟發(fā)層[22], 對(duì)結(jié)構(gòu)特征圖及紋理特征圖的Gram矩陣進(jìn)行融合, 輸出紋理化的結(jié)構(gòu)特征圖. 為提升生成器網(wǎng)絡(luò)的合成能力, 本文在啟發(fā)層后加入6個(gè)殘差網(wǎng)絡(luò)模塊, 進(jìn)行圖像特征的深度加工. 最后, 解碼器根據(jù)深度特征生成圖片. 解碼器的上采樣層比編碼器的下采樣層多一層, 以實(shí)現(xiàn)紋理圖片由小到大的擴(kuò)展合成. 本文網(wǎng)絡(luò)生成的圖片結(jié)構(gòu)特征明顯, 很好地保留了大尺度結(jié)構(gòu)的完整性, 紋理清晰度高, 保留了紋理的整體風(fēng)格及局部細(xì)節(jié)特征.
1.2.2 判別器網(wǎng)絡(luò)
圖4 分類器網(wǎng)絡(luò)結(jié)構(gòu)
在多重紋理擴(kuò)展訓(xùn)練中, 判別器的主要任務(wù)是對(duì)多張紋理平行進(jìn)行真假紋理塊的判別, 即尋找每個(gè)紋理樣本的真假紋理塊二分類邊界. 如果判別器分類能力不足, 則可能錯(cuò)誤選擇其他紋理樣本類別的二分類邊界, 對(duì)生成器回傳錯(cuò)誤分類的真假判別梯度, 從而導(dǎo)致輸入紋理圖與生成圖像紋理模式不匹配并可能出現(xiàn)模式崩潰問(wèn)題. 基于此, 本文采用一種基于局部判別的判別器網(wǎng)絡(luò), 其基礎(chǔ)結(jié)構(gòu)如圖3中藍(lán)色虛線框內(nèi)所示. 本文判別器網(wǎng)絡(luò)由若干個(gè)卷積模塊和下采樣卷積模塊組成, 與傳統(tǒng)判別器網(wǎng)絡(luò)不同, 輸入該判別器網(wǎng)絡(luò)一張圖片, 輸出為一個(gè)二維矩陣, 因此提高了判別器輸出的信息量及生成對(duì)抗網(wǎng)絡(luò)訓(xùn)練的穩(wěn)定性. 為解決紋理擴(kuò)展的模式崩潰問(wèn)題, 受ACGAN[19]的啟發(fā), 本文在原判別器網(wǎng)絡(luò)最后一個(gè)下采樣卷積模塊后增加一個(gè)分類器網(wǎng)絡(luò)模塊, 如圖4所示, 使得判別器在區(qū)分生成數(shù)據(jù)和真實(shí)數(shù)據(jù)的同時(shí), 還要能進(jìn)一步正確判別輸入紋理來(lái)自哪一張訓(xùn)練圖像, 從而改善多重紋理擴(kuò)展的模式崩潰問(wèn)題.
進(jìn)行分類訓(xùn)練時(shí), 訓(xùn)練開(kāi)始前先對(duì)多張紋理圖片進(jìn)行one-hot標(biāo)簽化處理, 以提供真實(shí)的分類標(biāo)簽. 訓(xùn)練過(guò)程中, 根據(jù)判別器的高層特征, 分類器網(wǎng)絡(luò)對(duì)平行訓(xùn)練的紋理樣本進(jìn)行分類, 輸出預(yù)測(cè)的one-hot分類標(biāo)簽. 在判別器和生成器網(wǎng)絡(luò)訓(xùn)練過(guò)程中, 存在兩種分類誤差: 紋理樣本分類誤差和合成結(jié)果分類誤差.
在判別器訓(xùn)練階段, 紋理樣本誤差負(fù)責(zé)迫使分類器網(wǎng)絡(luò)對(duì)輸入圖片進(jìn)行正確地分類, 其計(jì)算公式為
(1)
其中θC表示分類器網(wǎng)絡(luò)的網(wǎng)絡(luò)參數(shù),n為標(biāo)簽向量p的長(zhǎng)度,p(i)和q(i) 分別為目標(biāo)紋理標(biāo)簽向量的第i位和將目標(biāo)紋理輸入判別器網(wǎng)絡(luò)后分類器網(wǎng)絡(luò)輸出概率向量的第i位. 在生成器訓(xùn)練階段, 合成結(jié)果分類誤差負(fù)責(zé)迫使生成器網(wǎng)絡(luò)合成正確分類的合成結(jié)果, 其計(jì)算公式為
(2)
其中r(i)為將生成器網(wǎng)絡(luò)合成結(jié)果輸入判別器網(wǎng)絡(luò)后分類器網(wǎng)絡(luò)輸出概率向量的第i位.
如圖1(B)所示, 在增加了分類誤差后, 3類相似的紋理可按自身的紋理模式進(jìn)行擴(kuò)展生成. 實(shí)驗(yàn)表明, 通過(guò)添加分類器網(wǎng)絡(luò)模塊和使用分類誤差, 有效解決了模式崩潰問(wèn)題.
1.3.1 紋理擴(kuò)展訓(xùn)練流程
類似于文獻(xiàn)[23]的訓(xùn)練方法, 本文以交替的方式對(duì)判別器和生成器進(jìn)行迭代訓(xùn)練, 訓(xùn)練過(guò)程如下:
1) 對(duì)進(jìn)行擴(kuò)展訓(xùn)練的某張紋理樣本, 先從紋理樣本中隨機(jī)裁剪2K×2K目標(biāo)紋理塊Pt作為真實(shí)樣本, 再?gòu)腜t紋理塊中隨機(jī)裁剪K×K紋理塊Pin作為生成器的結(jié)構(gòu)輸入和紋理輸入, 輸出2K×2K生成紋理塊Pout;
2) 分別以Pt和Pout作為真實(shí)樣本和生成樣本, 交替地對(duì)判別器與生成器進(jìn)行迭代訓(xùn)練. 重復(fù)上述兩步, 直至設(shè)定迭代次數(shù)完畢為止.
1.3.2 損失函數(shù)
在模型訓(xùn)練過(guò)程中, 除使用對(duì)抗訓(xùn)練誤差Ladv[23]及分類誤差LDC,LGC[19]外, 本文還引入Pt和Pout的重建誤差L1及風(fēng)格誤差Lstyle[21], 以加快模型收斂, 提高生成圖片的質(zhì)量. 本文實(shí)驗(yàn)中, 多重紋理擴(kuò)展網(wǎng)絡(luò)的總損失函數(shù)為
Ltotal=Ladv+λ1L1+λ2Lstyle+λ3(LDC+LGC),
(3)
其中λ1=100,λ2=1,λ3=1, 分別為重建誤差、 風(fēng)格誤差及分類誤差的權(quán)重. 實(shí)驗(yàn)表明, 分類誤差的存在能有效解決模式崩潰問(wèn)題, 而其權(quán)重大小對(duì)訓(xùn)練及生成圖片質(zhì)量的影響較小.
1.3.3 訓(xùn)練方法
本文以NVIDIA Titan Xp GPU作為實(shí)驗(yàn)設(shè)備, 使用50張紋理樣圖, 對(duì)網(wǎng)絡(luò)進(jìn)行10萬(wàn)次迭代訓(xùn)練, 單張圖片GPU訓(xùn)練總時(shí)間約為75~80 h, 網(wǎng)絡(luò)訓(xùn)練完成后, 將分辨率為600×400像素的紋理樣圖輸入生成器網(wǎng)絡(luò), 生成器網(wǎng)絡(luò)輸出擴(kuò)展合成結(jié)果僅需約5 ms. 訓(xùn)練過(guò)程中, 使用Adam[24]參數(shù)優(yōu)化方法, 學(xué)習(xí)率被初始化為0.000 2, 在前5萬(wàn)次迭代中保持不變, 在后5萬(wàn)次迭代中線性衰減至零.
使用Pt和Pout的L1損失作為重建誤差. 對(duì)風(fēng)格誤差, 使用ImageNet預(yù)訓(xùn)練的VGG19分類模型, 分別提取Pt和Pout在relu1_1,relu2_1,relu3_1,relu4_1,relu5_1的特征圖輸出, 計(jì)算二者各層特征圖的Gram矩陣的加權(quán)L2損失, 其權(quán)重分別設(shè)為1 000/(64×64),1 000/(128×128),1 000/(256×256),1 000/(512×512)和1 000/(512×512).
與單一紋理擴(kuò)展模型相同, 訓(xùn)練好的網(wǎng)絡(luò)能用于紋理遷移[14]. 本文的多重紋理擴(kuò)展模型可實(shí)現(xiàn)紋理遷移, 且可實(shí)現(xiàn)紋理風(fēng)格的控制. 圖5為訓(xùn)練完成的多重紋理模型遷移過(guò)程, 用戶可將任意圖片作為結(jié)構(gòu)引導(dǎo)圖輸入, 以訓(xùn)練樣圖中任意紋理圖片作為紋理模式圖輸入, 輸出具有相應(yīng)結(jié)構(gòu)特點(diǎn)及紋理風(fēng)格的紋理圖片輸出. 由圖5可見(jiàn), 本文模型有效地實(shí)現(xiàn)了結(jié)構(gòu)流和紋理流的解耦與融合, 生成的紋理輸出結(jié)構(gòu)特征明顯, 紋理清晰度高, 保留了原紋理的整體風(fēng)格及局部細(xì)節(jié)特征.
本文方法深度學(xué)習(xí)網(wǎng)絡(luò)的運(yùn)行環(huán)境設(shè)置如下: CPU為Inter Xeon E5-2630 v3, 內(nèi)存容量為256 GB, GPU為Nvidia Titan Xp, 操作系統(tǒng)為L(zhǎng)inux, Cuda版本為9.0, 使用Python 3.6作為開(kāi)發(fā)語(yǔ)言, Pytorch作為深度學(xué)習(xí)框架.
根據(jù)文獻(xiàn)[14]發(fā)布的數(shù)據(jù), 本文構(gòu)建一個(gè)由50張紋理圖片組成的數(shù)據(jù)集. 圖6和圖7為該訓(xùn)練集上的部分?jǐn)U展合成結(jié)果, 其中每組圖片中左側(cè)小圖為給定的紋理樣圖, 大圖為多重紋理擴(kuò)展合成的結(jié)果. 作為比較, 本文從全部實(shí)驗(yàn)結(jié)果中挑選3張非均勻紋理與目前已有方法的結(jié)果進(jìn)行對(duì)比, 結(jié)果如圖7所示. 本文的所有合成結(jié)果均由一個(gè)訓(xùn)練好的網(wǎng)絡(luò)生成, 而圖7中另外3種方法擴(kuò)展合成結(jié)果需訓(xùn)練3個(gè)不同的網(wǎng)絡(luò). 由圖7可見(jiàn), 本文多重紋理的擴(kuò)展合成結(jié)果相比于InGAN[17]和SinGAN[18]方法的結(jié)果, 在紋理元素的形態(tài)和排列上均與紋理樣圖保持一致, 更好地保留了紋理的整體結(jié)構(gòu), 且合成結(jié)果更真實(shí)自然. 相比于文獻(xiàn)[14]單一紋理的合成方法, 這兩種方法的合成結(jié)果相似且都具有較高的合成質(zhì)量, 僅在細(xì)節(jié)上有差別.
圖6 多重紋理擴(kuò)展合成結(jié)果
圖7 不同方法的紋理擴(kuò)展合成結(jié)果對(duì)比
本文的可控制多重紋理遷移方法實(shí)驗(yàn)結(jié)果如圖8所示, 其中每組圖片最左邊小圖為給定的紋理結(jié)構(gòu)引導(dǎo)圖, 最上邊圖為紋理風(fēng)格圖, 大圖為對(duì)應(yīng)的紋理遷移合成結(jié)果. 由圖8可見(jiàn), 本文方法有效控制了紋理遷移結(jié)果, 紋理遷移結(jié)果保留了結(jié)構(gòu)引導(dǎo)圖的大尺度整體結(jié)構(gòu), 而紋理樣式、 風(fēng)格與對(duì)應(yīng)的風(fēng)格引導(dǎo)圖相似.
圖8 多重紋理遷移結(jié)果
可控制多重紋理遷移方法與原單一紋理遷移方法的實(shí)驗(yàn)結(jié)果對(duì)比如圖9所示, 其中最左邊是給定的紋理結(jié)構(gòu)引導(dǎo)圖, 第一行為紋理風(fēng)格圖, 第二行為多重紋理網(wǎng)絡(luò)遷移所得結(jié)果, 第三行為單一紋理擴(kuò)展合成方法的神經(jīng)網(wǎng)絡(luò)在對(duì)應(yīng)紋理上進(jìn)行訓(xùn)練, 再把結(jié)構(gòu)引導(dǎo)圖輸入到生成器網(wǎng)絡(luò)后所得結(jié)果, 即訓(xùn)練4個(gè)不同網(wǎng)絡(luò)所得結(jié)果. 由圖9可見(jiàn), 與原單一紋理遷移方法的實(shí)驗(yàn)結(jié)果相比, 本文方法的結(jié)果結(jié)構(gòu)更清晰, 風(fēng)格化程度更高, 且圖片色彩連續(xù)均勻.
圖9 多重紋理與單一紋理遷移結(jié)果對(duì)比
考慮到本文方法利用了文獻(xiàn)[22]的風(fēng)格遷移方法中的啟發(fā)層, 因此進(jìn)一步對(duì)比利用本文方法進(jìn)行紋理遷移與利用經(jīng)典的風(fēng)格遷移方法, 如文獻(xiàn)[21]提出的基于優(yōu)化方法, 文獻(xiàn)[25]提出的自適應(yīng)實(shí)例歸一化層(AdaIN)方法, 文獻(xiàn)[22]提出的基于啟發(fā)層(MSG)方法, 文獻(xiàn)[17]提出的自然圖像重定向任務(wù)風(fēng)格遷移方法(InGAN)和文獻(xiàn)[18]提出的從單張自然圖像中學(xué)習(xí)非條件生成模型(SinGAN)方法進(jìn)行紋理遷移. 為客觀比較, 本文首先將紋理進(jìn)行擴(kuò)展, 再利用現(xiàn)有的風(fēng)格遷移方法進(jìn)行紋理遷移, 結(jié)果如圖10所示, 其中結(jié)果圖像的結(jié)構(gòu)引導(dǎo)圖為圖8中最后一排的紋理樣圖.
圖10 不同方法的紋理遷移結(jié)果對(duì)比
由圖10可見(jiàn), 文獻(xiàn)[21]方法能較好地保持局部紋理模式, 但存在較多偽影. 與AdaIN[25]和MSG[22]方法的結(jié)果對(duì)比表明, 本文結(jié)果的紋理風(fēng)格化程度更高, 即在細(xì)節(jié)方面圖片與紋理風(fēng)格樣圖更相似, 同時(shí)本文結(jié)果的紋理細(xì)節(jié)尺度保持較好, 未出現(xiàn)不適當(dāng)?shù)目s放, 圖片色彩連續(xù)均勻, 未出現(xiàn)大面積偽影. 本文方法與基于單張圖像過(guò)擬合的InGAN[17]和SinGAN[18]兩種方法對(duì)比結(jié)果表明: SinGAN方法[18]并不適合紋理遷移, 其結(jié)果幾乎完全丟失了紋理模式; InGAN方法[17]取得了較好的結(jié)果, 其紋理元素保持比較完整, 但在紋理模式細(xì)節(jié)上仍有一定瑕疵.
除定性的視覺(jué)效果對(duì)比外, 還可通過(guò)對(duì)紋理遷移結(jié)果進(jìn)行定量分析評(píng)判這些方法的合成質(zhì)量. 首先, 隨機(jī)選擇10張自然圖片作為結(jié)構(gòu)引導(dǎo)圖, 選擇圖10中第一列的2張紋理圖片作為給定的紋理風(fēng)格樣圖, 利用上述6種方法進(jìn)行紋理遷移, 得到6組結(jié)果, 每組有20張圖片紋理遷移結(jié)果; 然后遍歷所有組, 求每組中所有紋理遷移結(jié)果及其對(duì)應(yīng)紋理樣圖的風(fēng)格誤差[21]; 最后根據(jù)所求風(fēng)格誤差, 計(jì)算每組結(jié)果風(fēng)格誤差的平均值, 結(jié)果列于表1.
表1 風(fēng)格誤差平均值
考慮到紋理遷移與風(fēng)格遷移目標(biāo)并不完全一致, 風(fēng)格誤差平均值只能在一定程度上反映紋理遷移結(jié)果的質(zhì)量. 由表1可見(jiàn), 文獻(xiàn)[21]方法取得了最小風(fēng)格誤差, 原因是其在風(fēng)格遷移過(guò)程中直接最小化風(fēng)格誤差, 因此該組結(jié)果取得最小風(fēng)格誤差符合預(yù)期, 但由圖10視覺(jué)對(duì)比可見(jiàn), 該方法結(jié)果視覺(jué)瑕疵較多, 很可能是陷入了局部最優(yōu). 本文方法結(jié)果的風(fēng)格誤差平均值僅低于文獻(xiàn)[21]方法的結(jié)果. InGAN方法[17]取得了較好的視覺(jué)效果, 但由于存在一定的細(xì)節(jié)瑕疵, 其風(fēng)格誤差也偏大. SinGAN方法[18]紋理遷移失敗, 其風(fēng)格誤差最大. 因此, 綜合該定量分析結(jié)果與圖10中紋理遷移結(jié)果的定性分析結(jié)果可知, 本文方法紋理遷移結(jié)果的質(zhì)量?jī)?yōu)于其他4種方法.
綜上所述, 本文基于單一紋理擴(kuò)展模型的思想, 提出了一種新的適用于多重紋理擴(kuò)展合成與遷移的網(wǎng)絡(luò). 首先, 通過(guò)在判別器中增加分類器網(wǎng)絡(luò)模塊, 使判別器在區(qū)分生成數(shù)據(jù)和真實(shí)數(shù)據(jù)的同時(shí), 還能進(jìn)一步正確判別輸入紋理來(lái)自哪一張訓(xùn)練圖像, 從而改善了多重紋理擴(kuò)展的模式崩潰問(wèn)題. 其次, 為達(dá)到紋理遷移中用戶對(duì)紋理模式的控制, 本文將生成器修改為雙流數(shù)據(jù)輸入, 分別提供結(jié)構(gòu)控制與紋理模式/風(fēng)格, 從而使訓(xùn)練好的模型可實(shí)現(xiàn)用戶可控的合成紋理遷移. 實(shí)驗(yàn)結(jié)果表明, 本文的多重紋理擴(kuò)展模型, 不僅能使用一個(gè)網(wǎng)絡(luò)就能正確學(xué)習(xí)到多張紋理圖像的紋理模式, 而且訓(xùn)練好的模型還具有更好的紋理遷移功能. 相比單一紋理擴(kuò)展模型, 本文方法的紋理擴(kuò)展合成結(jié)果與其質(zhì)量基本相同, 在紋理遷移方面則優(yōu)于單一紋理擴(kuò)展合成方法及其他風(fēng)格遷移方法.