AnyText是什麼
AnyText是阿里巴巴智能計算研究院的團隊推出的一個基於擴散的多語言視覺文本生成和編輯模型,專注於在圖像中渲染準確和連貫的文本。AnyText包括兩個主要元素的擴散管線:輔助潛在模塊和文本嵌入模塊。前者使用文本字形、位置和蒙版圖像等輸入來生成文本生成或編輯的潛在特徵。後者採用OCR模型對筆劃數據進行編碼,這些編碼與來自分詞器的圖像標題嵌入結合,生成與背景無縫融合的文本。該技術解決了在生成圖像中的文本區域時合成文本模糊、不可讀或錯誤的挑戰,提高了圖像中文本書寫的準確性。
GitHub項目:https://github.com/tyxsspa/AnyText
論文地址:https://arxiv.org/abs/2311.03054
ModelScope:https://modelscope.cn/studios/damo/studio_anytext
Hugging Face:https://huggingface.co/spaces/modelscope/AnyText
AnyText的功能特色
- 多語言支持:AnyText能夠生成多種語言的文本,包括中文、英文、日文、韓文等。
- 多行文本生成:用戶可以指定在圖像的多個位置生成文本。
- 變形區域書寫:AnyText能夠生成水平、垂直甚至曲線或不規則區域內的文本。
- 文本編輯能力:AnyText提供了修改圖像中指定位置文本內容的功能,同時保持與周圍文本風格的一致性。
- 即插即用:AnyText可以無縫集成到現有的擴散模型中,提供生成文本的能力。
AnyText的工作原理
AnyText通過以下模塊的協同工作,AnyText能夠在圖像中準確地生成和編輯多語言文本,同時保持與背景的無縫融合,具體如下:
- 文本控制擴散管道:
- AnyText使用變分自編碼器(VAE)對輸入圖像進行編碼,生成一個潛在表示。
- 然後,通過擴散算法逐步向這個潛在表示中添加噪聲,生成一系列時間步驟的噪聲潛在圖像。
- 在每個時間步驟,AnyText應用一個網絡(TextControlNet)來預測應該添加到噪聲潛在圖像上的噪聲,以控制文本的生成。
- 輔助潛在模塊:
- 該模塊接收文本字形(glyph)、位置(position)和蒙版圖像(masked image)作爲輸入,生成一個輔助潛在特徵圖。
- 字形信息通過渲染文本到圖像上生成,位置信息標記文本在圖像中的位置,掩膜圖像指示在擴散過程中應保留的圖像區域。
- 文本嵌入模塊:
- 該模塊使用預訓練的OCR模型(如PP-OCRv3)來提取文本的筆畫信息,並將其編碼爲嵌入。
- 這些嵌入與來自分詞器的圖像標題嵌入結合,生成一個融合的中間表示,然後通過交叉注意力機制映射到UNet的中間層。
- 文本感知損失:
- 在訓練過程中,AnyText使用文本感知損失來進一步提高文本生成的準確性。
- 這種損失通過比較生成圖像和原始圖像中的文本區域來實現,只關注文本本身的正確性,排除背景、字符位置偏差、顏色或字體樣式等因素。
- 訓練和優化:
- AnyText的訓練目標是最小化文本控制擴散損失和文本感知損失的加權和。
- 在訓練過程中,模型通過調整權重比(λ)來平衡這兩種損失。
如何使用AnyText生成文字
- 訪問AnyText的ModelScope空間或Hugging Face demo
- 輸入Prompt提示詞,然後選擇指定文字位置
- 最後點擊Run運行,等待圖片和文字生成即可
© 版權聲明
文章版权归作者所有,未经允许请勿转载。
相關文章
暫無評論...