Pre
title: Learning to Write Stylized Chinese Characters by Reading a Handful of Examples
accepted: IJCAI 2018
paper: https://arxiv.org/abs/1712.06424
code: None
ref: https://www.jiqizhixin.com/articles/2018-01-01-4
關鍵詞: 字型生成
閱讀理由: 風格內容解耦先行者
Idea
選用兩張字形,一張提供內容,一張提供風格,內容特徵加入了漢字的結構和偏旁資訊,以風格內容解耦的方式生成字形。
Motivation
早期方法(Zi2Zi等)沒有泛化能力,要生成的字型必須是訓練時見過的
Background
風格感知變分自編碼器(Style-Aware Auto-Encoder, SA-VAE)
主要貢獻:
- 我們提出了一個新型的交叉逐對(intercross pair-wise)最佳化的方法用於風格特徵提取,是以監督形式解決解雙因素耦合問題的一個通用技術。
- 我們將漢字的領域知識以先驗知識的形式引入模型中,並提出了一種資訊編碼方法來指導漢字生成。
- 我們提出的模型(SA-VAE)可以實現準確的風格推理,並以單樣本/少樣本的方式生成中文字型。
Method(Model)
Overview
圖1 本文漢字生成過程描述。給定少量特定字型的樣本,推理不同風格的隱藏向量。然後,我們透過識別它們的內容在少量樣本的基礎上生成中文字型(「生存還是毀滅,這是個問題」),可以看到,用來訓練的樣本中,每個風格只有四個漢字(「莎士比亞」)。
假定漢字能由內容因子和風格因子決定:
表示風格i和內容j結合生成漢字\(x_{i,j}\)
Model Architecture
圖2 我們提出的 SA-VAE 框架主要包含三個子網路,包括內容識別網路 C、風格推理網路 S,以及漢字生成網路 G。S 和 C 分別提取風格特徵和內容特徵,G 結合這兩個特徵生成漢字。另外,我們引入了漢字的域知識 K 以得到更多的內容表徵資訊。訓練過程是以交叉逐對的方式進行的。
總體分兩個階段——推理和生成,推理時先把隱特徵解耦為內容相關和風格相關,生成時以二者作為輸入過反摺積層。訓練時的解耦以交叉並行方式(intercross pair-wise way)進行
Content Recognition Network. 根據字形圖片得到內容標籤
圖3 本文的漢字編碼方式
Character Structure Knowledge. 並非one-hot而是透過特殊的編碼來表示一個漢字,如圖3所示,編碼由結構IDC、偏旁、索引碼組成,能夠共享漢字間相同的配置和偏旁資訊。索引表\(\mathcal{K}: c=T[y]\)允許使用漢字的one-hot編碼查詢對應的內容雜湊碼,唯一確定一個漢字。這玩意說白了是個分段的one-hot編碼,前面兩部分儲存了一些可共享的資訊,最後一個雜湊用於確定漢字,生硬。
Style Inference Network. 輸入字形圖片x和相應的內容雜湊c(並非整個內容編碼),輸出對應風格,也透過約束相同字型不同字形抽取的特徵分佈一致來保證抽取的準確性
Character Generation Network. 以內容雜湊c和風格特徵s作為輸入,感覺是不是寫錯了,總得用上整個內容編碼了吧
Intercross Pairwise Optimization
圖4 普通VAE與本文的交叉並行訓練的比較,虛線和實線分別代表風格和內容提供者
隱變數生成模型(latent variable generative models)通常最大化邊緣對數似然來訓練,但難以直接最佳化,為此變分推斷(variational inference)被提出
在本文的生成中內容編碼c可以從充分訓練的\(\mathcal{C}\)得到
但是直接用VAE不能保證相同的風格有相似的風格嵌入,因為普通的變分推斷會獨立看待每個漢字,不同漢字間沒有強相關性,尤其是那些風格一樣的。因此如圖4所示,風格資訊由另一個相同字型的漢字提供。經典,但其實也很直接,如果用同一個漢字去分解內容風格再生成不就是重建,不符合推理時沒有目標字形的場景。
演算法1:訓練演算法
作者也提到這個演算法不僅用於字型生成,還能用於其他雙因素解耦問題(twofactor disentanglement problems)上
One-shot/Few-shot Character Generation
一張圖片直接提取風格,多張就取平均
Experiment
Dataset
200字型,82劃分,300漢字
Results
圖5 1,3行是本文模型,2,4行是gt 最左邊是參考字形
表1 生成結果比較。新風格僅10參考字形時SA-VAE顯示出泛化能力
圖6 a插值 b左邊是一個參考字形,第二列是生成結果,最後兩列是訓練集裡該字形的最近鄰,表明模型並非照搬訓練集資訊
圖7 不使用交叉並行最佳化的one-shot生成結果,不使用會導致風格嵌入包含太多內容資訊,從而導致結果的模糊
表2 使用風格嵌入的分類準確度
圖8 三種編碼方式(本文的code,整數id形式的dense,one-hot) y軸是負下界,x軸是epoch數量,dense形式很難收斂,onehot開銷大,500個字時測不出曲線。code的優勢應該來自於前兩部分的結構和偏旁,否則第三部分hash應該不含有用資訊
圖9 沒給出gt,圖一樂 由於沒有結構資訊,這些都用了one-hot編碼
Conclusion
略
Critique
以現在來看效能孱弱,圖畫粗糙,但設計思想先進。跟同期的EMD差不多,但對方對比的baseline更多,實現細節更具體