zi2zi:用條件生成對抗網絡玩轉中文書法,絕妙漢字字體自動生成

2021-02-23 新智元

來源: kaonashi-tyc.github.io

作者:文強

新智元啟動 2017 最新一輪大招聘: COO、總編、主筆、運營總監、視覺總監等8大職位全面開放


新智元為COO和執行總編提供最高超百萬的年薪激勵;為骨幹員工提供最完整的培訓體系、高於業界平均水平的工資和獎金。加盟新智元,與人工智慧業界領袖攜手改變世界。

簡歷投遞:jobs@aiera.com.cn    HR 微信:13552313024

【新智元導讀】Github 用戶 kaonashi-tyc 將字體設計的過程轉化為一個「風格遷移」(style transfer)的問題,使用條件 GAN,訓練神經網絡自動將輸入的漢字轉化為另一種字體(風格)的漢字,效果相當不錯。

今天為大家介紹一個使用 GAN 自動生成中文字體的項目。

創造字體是件很困難的事情,創造中文字體就更難了。

要創造一套符合 GBK(中國政府規定的字符集)的字體,設計師需要為超過 26000 個漢字做設計,有時候需要花好幾年的時間才能完成。

為了解決了這個問題,Github 用戶 kaonashi-tyc 想到,先手工設計一部分漢字,其餘的漢字讓計算機自動生成不就行了?——畢竟,漢字是由偏旁部首組合而成的,「任」這個字裡的單人旁,在「仁」這個字裡看起來也一樣。

於是,作者將字體設計的過程轉化為一個「風格遷移」(style transfer)的問題。他用兩種不同字體作為訓練數據,訓練了一個神經網絡,訓練好的神經網絡自動將輸入的漢字轉化為另一種字體(風格)的漢字,概念如下圖所示。

kaonashi-tyc 將他的首次嘗試命名為「Rewrite:中文字體風格遷移」(Rewrite: Neural Style Transfer For Chinese Fonts)。

但是,這個初步的嘗試還有一些缺陷(見下圖),作者自己總結認為:

為了解決上述問題,作者進行了新的嘗試,也就是我們這次重點介紹的 zi2zi 這個項目。

這一次,作者還是使用風格遷移解決中文字體生成的問題,不過他使用了條件生成對抗網絡(GAN)的力量。

zi2zi是基於以下3篇論文的研究成果:

Image-to-Image Translation with Conditional Adversarial Networks

Conditional Image Synthesis With Auxiliary Classifier GANs

Unsupervised Cross-Domain Image Generation


第一篇論文是加州大學伯克利視覺組的研究,也是前段時間很火的「pix2pix」的研究基礎。作者也表示,zi2zi 是從 pix2pix 的工作直接衍生而來。

zi2zi 的網絡結構如下圖所示:

zi2zi 的網絡結構由編碼器、解碼器和判別器組成(直接把 pix2pix 的拿過來用了)。

作者指出,根據人類設計師設計字體的經驗,讓神經網絡同時學會多種字體風格是至關重要的。

同時建模多種風格有兩大優點:

編碼器能夠接觸到更多的漢字,不僅限於一個目標字體,還包括所有字體的組合

解碼器可以從其他字體中學會同一種偏旁的不同寫法

同時訓練多種字體,迫使模型從每種字體中學習,然後使用學到的經驗改善同一種字體的其他漢字。

現在有一個問題,那就是同一個漢字可以出現在多種字體當中。

Vanilla pix2pix 模型並沒有解決這種一對多的關係。作者受「谷歌零數據機器翻譯」論文(Zero-shot GNMT)的啟發,想出來了「類別嵌入」(category embedding)的方法,將不可訓練的高斯噪聲作為風格嵌入(style embedding)與漢字嵌入(character embedding)串聯起來,之後再一併進入解碼器。

這樣,解碼器仍舊將同一個漢字映射為同一個向量,但是,解碼器會同時考慮漢字和風格兩個嵌入來生成目標漢字(target character)。

有了類別嵌入,現在就有了一個能夠同時處理多種風格的 GAN

但是,作者發現,這樣做之後又出現了一個新的問題:模型開始將各種風格弄混淆並且混合在一起,生成的漢字什麼也不像了。

於是,他又借鑑了 AC-GAN 模型中的 multi-class category loss,把這個 loss 加到判別器上面,一旦出現混淆或者風格混合,就「懲罰」判別器。

作者介紹,模型當中還有一大要素是  constant loss,這個是 DTN 網絡中的概念。這個方法的思路很簡單——源漢字和生成的漢字按理說應該十分類似,所以它們在嵌入空間(embedded space)裡出現的位置也應該十分接近。作者將這個 loss 命名為「GREATLY」,GREATLY 這個 loss 迫使解碼器保留生成漢字的 identity,收窄了可搜索的範圍,因而加快了收斂速度。

最後,還有一個 total variation loss(tv loss)。不過作者表示,根據實際經驗,這個 loss 對生成圖像的質量提升作用並不明顯。而且,對於毛筆書法來說,這個 tv loss 反而還有損生成圖像的質量。因此,作者將 tv loss 列出作為備選項使用。

下面我們就來看看,zi2zi 生成中文字體的實際效果。下面的圖中,一共有5列,左邊是源字符,右邊是系統自動生成的。

不得不說,效果很不錯。首先,生成的漢字不會「花」了,其次,zi2zi 相比 Rewrite 也能處理更多樣、更複雜的字體風格。

下面這張圖展示了連續的嵌入空間字體的轉換,我們可以見證字體是如何從一種風格轉換為另一種風格的:

下面這張動圖展現了多種字體之間的轉換:

接下來,作者還介紹了如何訓練 GAN,還公開了代碼。不僅如此,還有漢字轉化為韓語的案例。此外,作者還分析了訓練過程中的一些失誤,總結了經驗。

這些具體的內容,你就看原文了解更多吧。

相關焦點

  • 「zi2zi」:用AI生成自己的手寫字體
    但是最低的國標字體數量近7000個,若採用傳統的方法則需要手寫相同數量的漢字,這個過程費時耗力。本文將介紹開源項目zi2zi,只需要你的部分手寫字體樣本便可生成完整字庫。教你用深度學習的方式打開製作手寫字體的大門。zi2zi是作者Rewrite項目的後續工作,其為處理類似中文字體轉化的問題。Rewrite項目獲得了相當多的關注和興趣,但是項目結果不佳。
  • 用C#生成隨機中文漢字驗證碼的基本原理
    ^_^ 我不得不佩服騰訊為了防止目前網絡上橫行的QQ號碼自動註冊機而採取中文驗證碼的手段。仔細想了想感覺用程序生成隨機的中文驗證碼並不是很難,下面就來介紹一下使用C#生成隨機的中文漢字的原理。 1、漢字編碼原理 到底怎麼辦到隨機生成漢字的呢?漢字從哪裡來的呢?是不是有個後臺數據表,其中存放了所需要的所有漢字,使用程序隨機取出幾個漢字組合就行了呢?
  • 輕鬆構建 PyTorch 生成對抗網絡(GAN)
    主要內容課題及方案概覽模型的開發環境生成對抗網絡模型模型的訓練和驗證結論與總結課題及方案概覽下面顯示的兩組手寫體數字圖片,您是否能從中夠辨認出由計算機生成的『手寫』字體是其中哪一組?本文的課題是用機器學習方法『模仿手寫字體』,為了完成這個課題,您將親手體驗生成對抗網絡的設計和實現。
  • 不會字體設計?有這6個在線字體生成網站就夠了
    各種設計好的字體樣式,非常適用各種活動海報設計與商品促銷場景,藝術字體生成器是一個自動生成字體的網站,直接選字體,以及字體大小,還有背景https://www.qt86.com/米藝字是一個免費在線生成藝術字體的網站,支持一鍵生成,提供下載png格式​http://www.miyizi.com
  • 香港中文大學博士沈宇軍:生成對抗網絡的可解釋性研究及其應用
    神經網絡由於網絡特徵或決策邏輯在語義層面難以理解,同時也缺少數學工具去診斷與評測網絡的特徵表達能力,進而解釋目前不同神經網絡模型的信息處理特點,一直被大家稱為是一種「黑箱」。而如何對神經網絡進行「解釋」,稱為近年來的熱門研究方向。生成對抗網絡近年來隨著其不斷的發展,生成圖片的質量以及模型的訓練穩定性不斷提高。
  • 史上最強大的書法生成軟體--時光書法
    這個軟體可以生成各種書法,功能非常實用和強大,沒有任何廣告,沒有任何後臺,甚至沒有植入更新。
  • 雲計算必備知識-基於PyTorch機器學習構建生成對抗網絡
    主要內容 課題及方案概覽 模型的開發環境 生成對抗網絡模型 模型的訓練和驗證 結論與總結 課題及方案概覽下面顯示的兩組手寫體數字圖片,您是否能從中夠辨認出由計算機生成的『手寫』字體是其中哪一組?    本文的課題是用機器學習方法『模仿手寫字體』,為了完成這個課題,您將親手體驗生成對抗網絡的設計和實現。
  • 原創對抗樣本與生成式對抗網絡
    對抗樣本與生成式對抗網絡對抗樣本和對抗性網絡,從最開始YannLeCun在Quora上直播時表示生成對抗性網絡近期人工智慧最值得期待的算法之一
  • CVPR 2020線上分享 | 港中文博士:對抗生成網絡的可解釋性及其應用
    CVPR 2020線上分享 | 港中文博士:對抗生成網絡的可解釋性及其應用 2020-06-08 19:39 來源:澎湃新聞·澎湃號·湃客
  • 要讓GAN生成想要的樣本,可控生成對抗網絡可能會成為你的好幫手
    韓國大學電子工程學院Minhyeok Lee和Junhee Seok近期發表論文,就生成對抗網絡的控制問題給出了自己的辦法,雷鋒網(公眾號:雷鋒網) AI 科技評論根據原文進行如下編輯,原文連結簡介生成對抗網絡(GANs)是最近幾年提出的新方法,在其問世之後的短短時間內,生成對抗網絡已經在生成真實的樣本上表現出很多有前途的結果了
  • 【專知薈萃11】GAN生成式對抗網絡知識資料全集(理論/報告/教程/綜述/代碼等)
    生成對抗網絡(GAN)專知薈萃一、理論學習二、報告三、教程四、綜述五、中文博客資料:[https://arxiv.org/pdf/1701.00160.pdf]訓練GANs的技巧和竅門參考連結:[https://github.com/soumith/ganhacks]OpenAI生成模型參考連結:[https://blog.openai.com/generative-models/]用Keras實現MNIST生成對抗模型
  • 譯文 | 讓深度卷積網絡對抗:DCGAN——深度卷積生成對抗網絡
    我們提出了一種叫做深度卷積生成對抗網絡的CNN,它具有一定的結構約束,展示了其在非監督學習方向上強有力的候選方案。通過在各種各樣的圖像數據集的訓練,我們展示了令人信服的證據,我們的深度卷積對抗對(adversarial pair)從對象到場景在生成模型和判別模型上都能夠學習到層級的表示。此外,我們在一些的新的任務上使用學習到的特徵表明它們一般的圖像表示上具有通用性。
  • 一文讀懂生成對抗網絡GANs(附學習資源)
    例如,我們的任務可能是生成給定文章的段落摘要,那麼這種惡化源於少量的樣本無法代表在所有可能的正確答案中觀察到的變化範圍。生成對抗網絡GAN針對上面問題的回答是:用另外一個神經網絡---記分神經網絡(稱為判別器 Discriminator),它將評估生成神經網絡輸出的圖像的真實性。
  • 生成對抗網絡的最新研究進展
    生成對抗網絡的工作原理給定一組目標樣本,生成器試圖生成一些能夠欺騙判別器、使判別器相信它們是真實的樣本。判別器試圖從假(生成)樣本中解析真實(目標)樣本。它們不同於最小值和最大值,因為上確界和下確界不一定屬於集合。2.散度度量散度度量表示兩個分布之間的距離。傳統的 GAN 神經網絡基本上最大限度地減少了真實數據分布和生成數據分布之間的 Jensen Shannon 分歧。
  • 科普 | ​生成對抗網絡(GAN)的發展史
    Ian Goodfellow等人在「Generative Adversarial Networks」中提出了生成對抗網絡。學術界和工業界都開始接受並歡迎GAN的到來。GAN的崛起不可避免。首先,GAN最厲害的地方是它的學習性質是無監督的。GAN也不需要標記數據,這使GAN功能強大,因為數據標記的工作非常枯燥。其次,GAN的潛在用例使它成為交談的中心。
  • 一文詳解生成對抗網絡(GAN)的原理,通俗易懂
    生成網絡就不服了,說我也很強,我生成一個假樣本,雖然我生成網絡知道是假的,但是你判別網絡不知道呀,我包裝的非常逼真,以至於判別網絡無法判斷真假,那麼用輸出數值來解釋就是,生成網絡生成的假樣本進去了判別網絡以後,判別網絡給出的結果是一個接近0.5的值,極限情況就是0.5,也就是說判別不出來了,這就是納什平衡了。
  • GAN(生成對抗網絡)萬字長文綜述
    GAN的基本介紹生成對抗網絡(GAN,Generative Adversarial Networks)作為一種優秀的生成式模型,引爆了許多圖像生成的有趣應用。GAN的基本概念GAN(Generative Adversarial Networks)從其名字可以看出,是一種生成式的,對抗網絡。再具體一點,就是通過對抗的方式,去學習數據分布的生成式模型。所謂的對抗,指的是生成網絡和判別網絡的互相對抗。生成網絡儘可能生成逼真樣本,判別網絡則儘可能去判別該樣本是真實樣本,還是生成的假樣本。示意圖如下:
  • 生成對抗網絡GAN系列之二:基礎模型DCGAN、cGAN、WGAN
    上一篇生成對抗網絡GAN系列之一:基本原理和結構細講我們分解了GAN的基本原理和結構
  • 深度卷積對抗生成網絡(DCGAN)
    卷積神經網絡在有監督學習中的各項任務上都有很好的表現,但在無監督學習領域,卻比較少。本文介紹的算法將有監督學習中的CNN和無監督學習中的GAN結合到了一起。在非CNN條件下,LAPGAN在圖像解析度提升領域也取得了好的效果。與其將本文看成是CNN的擴展,不如將其看成GAN的擴展到CNN領域。而GAN的基本算法,可以參考對抗神經網絡。