左圖:已有的一張電影海報;右圖:使用 MC-GAN 生成的新電影名稱。
文字是二維設計中的一個顯著視覺元素。藝術家投入了大量時間設計在視覺上與其他元素的形狀和紋理相相容的字形。這個過程需要大量勞動,藝術家們通常只設計標題或註釋所必需的字形子集,這使得設計完成後文字很難更改,或者很難把看到的字型例項遷移到自己的專案中。
早期字形合成研究集中在輪廓的幾何建模上,侷限於特定的字形拓撲上(例如,不能應用到裝飾字型或者手寫體),並且不能與影像輸入一起使用。隨著深度神經網路的興起,研究者研究了從影像進行字形建模的問題。另一方面,合成與區域性觀察相一致的資料在計算機視覺和圖形學中是一個有趣的問題,例如,多視角影像生成、補全影像中的缺失區域,以及三維形狀的生成。字型資料是一個典型的例子,它提供了文字樣式和內容的清晰分解。
條件生成對抗網路(cGANS)[1] 的最新進展在許多生成應用中取得了成功。然而,它們只有在相當特定的領域中才能發揮最佳效果,無法適應通用領域或多領域遷移。類似地,當被直接用來生成字型時,cGAN 模型會生成嚴重的失真。例如,給定下面五個字母:
條件生成對抗網路模型無法以同一種風格生成 26 個字母:
用於 Few Shot 字型風格遷移的多內容生成對抗網路
我們設計了多內容 GAN 架構 [2] 來為每個觀察到的字符集(只具備少量觀察到的字形)重新訓練定製的魔法網路,而不是為所有可能的字型裝飾訓練單個網路。該模型考慮沿著通道的內容(即 A-Z 字形)和沿著網路層的樣式(即字形裝飾),將給定字形的樣式遷移到模型未見過的字形的內容。
多內容 GAN 模型包括用於預測粗糙字形形狀的堆疊 cGAN 架構和用於預測最終字形顏色和紋理的裝飾網路(ornamentation network)。第一個網路稱為 GlyphNet,用於預測字形掩碼;第二個網路稱為 OrnaNet,用於微調從第一個網路生成字形的顏色和裝飾。每個子網路遵循條件生成對抗網路(cGAN)的結構,並修改該結構以達到使字形風格化或裝飾預測的特定目的。
網路架構
下面是 GlyphNet 示意圖,它從一組訓練字型中學習字型流形的一般形狀。GlyphNet 的輸入和輸出是字形的堆疊,其中每個字母分配有一個通道。在每個訓練迭代中,x_1 包含一個由 y_1 字形組成的隨機子集,剩餘輸入通道被清零。
透過這種新穎的字形堆疊設計,跨網路通道學習不同字形之間的相關性得以實現,並實現風格自動遷移。下圖透過結構類似性(SSIM)指標在包含 1500 個字型樣例的隨機集合上展示了這種相關性。計算每個生成字形與其真實字形之間的結構相似性時,當一次觀察到一個字母時,共發現了 25 種分佈。這些曲線圖顯示了當觀察到字母 β(藍色)時生成字母 α 的分佈 α|β 與當給出除 β 以外的任何其它字母(紅色)時生成字母 α 的分佈 α|β。在生成 26 個字母中的每一個字母時,兩個資訊量最大的給定字母和兩個資訊量最少的給定字母的分佈如圖所示。例如,從圖的第五行來看,與其他字母相比,字母 F 和 B 在生成字母 E 方面是最有資訊貢獻的,而 I 和 W 是資訊最少的。其他例子中,O 和 C 是構造 G 的最具指導性的字母,R 和 B 是生成 P 的最具指導性的字母。
因此,對於任何僅有幾個觀察字母的期望字型,預訓練的 GlyphNet 要生成全部的 26 個 A-Z 字形。但是我們應該如何遷移裝飾呢?第二個網路 OrnaNet 採用這些生成的字形,在簡單的整形變換(reshape transformation)和灰度通道重複之後(在下圖中用 T 表示),使用條件 GAN 架構生成具備期望顏色和裝飾的輸出。OrnaNet 的輸入和輸出是批次的 RGB 影像,而不是堆疊(其中每個字母的 RGB 通道是其對應的灰度字形的重複)。OrnaNet 中的多個正則化器會懲罰風格化字母掩膜與其對應字形形狀的偏差。
結果
下面,我們將使用單個單詞給出的字型樣式演示例句。
此外,以下是 OrnaNet 預測的逐步改進:
參考資料
[1] Phillip Isola, Jun-Yan Zhu, Tinghui Zhou, and Alexei A. Efros. "Image-to-Image Translation with Conditional Adversarial Networks." CVPR 2017.
[2] Samaneh Azadi, Matthew Fisher, Vladimir Kim, Zhaowen Wang, Eli Shechtman, and Trevor Darrell. "Multi-Content GAN for Few-Shot Font Style Transfer." CVPR 2018.
相關論文:https://arxiv.org/abs/1712.00516
GitHub 地址:https://github.com/azadis/MC-GAN