1. 程式人生 > >字型風格遷移之Multi-Content GAN

字型風格遷移之Multi-Content GAN

論文為cvpr2018,伯克利的BAIR實驗室和adobe合作的論文。

整體框架:

Multi-Content GAN是由兩個條件gan堆疊而成。如上圖所示,整個Multi-Content GAN包含GlyphNet和 OrnaNet 兩個部分。GlyphNet主要負責字型輪廓的生成,OrnaNet 負責字型顏色和裝飾紋理的生成。

其中,T 表示灰度化和reshape操作。σ 表示sigmoid操作。

GlyphNet模組:

該模組的輸入為B*26*64*64,輸出為1*26*64*64。

假設我們的輸入的單詞為”TOWER”,這樣實際的輸入為6*26*64*64。這個6是如何得到的呢?這裡採用了leave-one-out 的訓練方法。如上圖所示。首先輸入為一個1*26*64*64的影象。只是對應的有單詞的位置為該單詞的畫素,其餘部分為0。然後,每一個單詞分別去掉作為輸入,這樣一共就產生了6個這樣的輸入。這6個這樣的輸入當成6個batch進行處理。最終會得到6個輸出,也就是6*26*64*64的輸出。但是最終需要的輸出是1*26*64*64,這是如何處理的呢?首先,假設只有”TOWE”的輸入會得到所有26個字母的輸出,但是隻取輸出”R”。依次類似,”ORTW”的輸出只取”E”,”ERTW”的輸出只取”O”,”EORW”的輸出只取”T”,”EORT”的輸出只取”W”。這樣就會生成5個輸出。然後”TOWER”取剩餘的21個生成的字母。最終生成1*26*64*64的輸出。

該模組的loss為正常的cgan的loss。包括生成器的L1 loss和判別器的LSGAN loss。其中LSGAN loss分別包括區域性local和整體global的損失。區域性的只有21*21的感受野。

OrnaNet 模組:

該模組的輸入為26*3*64*64,輸出也是26*3*64*64。

首先需要對GlyphNet的輸出,進行通道的疊加,也就是RGB三個通道都是相同的堆疊,這樣將GlyphNet輸出的灰度圖轉化為偽彩色圖。然後通過生成器,生成出26*3*64*64的輸出。

該模組的loss包含生成器的輸入和輸出之間的λ2*MSE loss, 輸入和label之間的的λ4*MSE loss,輸出和label之間的的λ1*L1 loss。以及判別器的LSGAN loss。其中LSGAN loss同樣分別包括區域性local和整體global的損失。

訓練單詞的字元數量:

這裡使用結構化相似性度量structural similarity (SSIM) metric 來進行網路預測效果的評價。分數越高表明預測的效果與真實label越接近。

上圖的曲線表面隨著單詞長度的增加,SSIM值也越高,說明了本文的這種leave-one-out 訓練方法的有效性。

實驗結果:

總結:

  1. 有別於傳統的cgan,本文提出了leave-one-out 訓練方法。只使用其中一小部分字母就生成出大部分未見過的字母。
  2. 本文的Multi-Content GAN對於大量中文的也許很難適應。主要可以用在一些藝術字的生成方面,就是那些關注整體而較少關注細節的方面。從論文中的圖中可以看出生成的字和真實的字還是有很大區別,如果想使用該方法制造訓練資料,也許不是好的選擇。