所有語言
分享
原文來源:量子位
圖片來源:由無界 AI生成
能準確寫漢字的AI繪圖工具,終於登場了!
包括中文在內一共支持四種語言,而且還能文字的位置還能任意指定。
從此,人們終於可以和AI繪圖模型的“鬼畫符”說再見了。
這款名為AnyText的繪圖工具來自阿里巴巴,可以按照指定位置精準地向圖中加入文字。
此前的繪圖模型普遍無法準確地向圖中添加文字,即便有也很難支持像中文這樣結構複雜的文字。
而目前Anytext支持中英日韓四種語言,不僅字形準確,風格也可以與圖片完美融合。
除了可以在繪製時加入文字,修改圖片中已有的文字,甚至向其中加字也都不是問題。
究竟AnyText效果如何,我們也實際體驗了一番。
官方在GitHub文檔中提供了AnyText的部署教程,也可以在魔搭社區中體驗。
此外還有網友製作了PyTorch筆記,可以在本地或Colab中一鍵部署,我們採用的也是這種方式。
AnyText支持中英文Prompt,不過從程序日誌來看,中文提示詞會被自動翻譯成英文。
比如我們想讓AnyText給馬斯克換上一件白色T恤,讓他來給量子位(QbitAI)打個call。
只需要輸入提示詞,然後設定文本的位置,然後直接運行就可以了。
如果需要調整尺寸等參數,可以將上方的菜單展開;如果不會操作,頁面中還附有中英雙語教程。
最終,在搭載V100的Colab上,AnyText用了10多秒繪製出了四張圖片。
效果還是不錯的,不論是圖本身還是文字,看上去都沒有什麼破綻。
而且各種文字材質AnyText都能準確模仿,比如黑板上的粉筆字,甚至是傳統書法……
街景中的文字,甚至是電商促銷海報,都難不倒AnyText。
而且不僅是平面上各式各樣的文字,立體風格同樣也不在話下。
而其中的文本編輯功能,還可以修改已有圖片中的文字,幾乎不會留下破綻。
在測試當中,AnyText也是取得了不錯的成績——無論是中英文,準確度都顯著高於ControlNet,FID誤差也大幅減少。
此外,如果自行部署,還可以對字體進行自定義,只需準備好字體文件並對代碼簡單修改就可以了。
那麼,研究人員是怎樣讓AnyText學會寫字的呢?
AnyText是基於擴散模型開發的,主要分為兩個模塊,文字生成的過程是相對獨立的。
這兩個模塊分別是隱空間輔助模塊和文本嵌入模塊。
其中,輔助模塊對字形、文字位置和掩碼這三種信息進行編碼並構建隱空間特徵圖像,用來輔助視覺文字的生成;
文本嵌入模塊則將描述詞中的語義部分與待生成文本部分解耦,使用圖像編碼模塊單獨提取字形信息后,再與語義信息做融合。
在實際工作過程中,嵌入的文本輸送給繪圖模塊時被用星號代替,在嵌入空間預留位置並用符號填充。
然後文本嵌入模塊得到的字形圖像被輸入預訓練OCR模型,提取出字形特徵,然後調整其維度並替換預留位置中的符號,得到新的序列。
最後,這個序列表示被輸入到CLIP的文本編碼器中,形成最終指導圖像生成的指令。
這種“分而治之”的方式,既有助於文字的書寫精度,也有利於提升文字與背景的一致性。
此外,AnyText還支持嵌入其他擴散模型,為之提供文本生成支持。
論文地址:
https://arxiv.org/abs/2311.03054