随着AIGC的爆火,图片天生技能得到飞速发展,当前AI天生的图片已达到真假难辨的高保真度。
例如stable diffusion与midjourney为代表的文生图大模型。
不过,当合成图片中涌现笔墨内容时,现存的AI技能依然无法驾驭笔墨内容。
因此,modescope提出了一种新型的笔墨天生方法,此方法称之为AnyTex。
AnyTex可以支持中文、英语、日语、韩语等多措辞的笔墨天生,还支持对输入图片中的笔墨内容进行编辑。

AnyText紧张基于扩散(Diffusion)模型,包含两个核心模块:

隐空间赞助模块(Auxiliary Latent Module):隐空间赞助模块对三类赞助信息(字形、笔墨位置和掩码图像)进行编码并构建隐空间特色图像,用来赞助视觉笔墨的天生;

文本嵌入模块(Text Embedding Module):文本嵌入模块则将描述词中的语义部分与待天生文本的字形部分解耦,利用图像编码模块单独提取字形信息后再与语义信息做领悟,既有助于笔墨的书写精度,也有利于提升笔墨与背景的同等性。

AnyText多措辞文字生成与编辑模型让AI绘图自由添加精致文字

演习阶段,除了利用扩散模型常用的噪声预测丢失,还增加了文本感知丢失,在图像空间对每个天生文本区域进行像素级的监督,以进一步提升笔墨书写精度。

此模型我们可以直接在modelscope社区进行在线demo的利用,其在浏览器中输入如下地址:

https://modelscope.cn/studios/damo/studio_anytext/summary

便可以看到体验demo了,其模型供应了几个实例,我们可以直接运行与修正prompt的笔墨,当然也可以自行写自己的prompt。

模型支持文本天生与文本编辑

文本天生:在【提示】输入框中输入要天生的图片的笔墨描述(中文或英文)。
须要天生的每个文本行都该当用双引号引起来。
然后,手动绘制每个文本行的指定位置以天生图像。
笔墨位置的绘制对付终极图像的质量至关主要,请勿绘制得太随意或太小。
位置的数量应与文本行的数量相匹配,并且每个位置的大小应尽可能与相应文本行的长度或宽度匹配。
如果【手动绘制】未便利,可以考试测验拖动矩形【手动矩形】或随机位置【自动绘制】。

天生多行时,每个位置按照一定的规则与文本行进行匹配。
[排序位置]选项用于确定是否优先从上到下或从左到右排序。
也可以打开参数设置中的【Show Debug】选项来不雅观察结果中的文当地位和字形图像。
还可以选择[修正位置],利用渲染文本的边界框作为修正位置。

文本编辑:

[Ref]中的图像作为参考图像,然后调度画笔大小,并标记要编辑的区域。
在【提示】中输入笔墨描述以及要修正的新笔墨,然后天生图像。

这里输入2张图片,一张原始图片,一张须要把笔墨进行mask的图片。
然后在prompt中输入须要须要修正的笔墨即可。

除了在线进行demo的利用外,也可以利用代码进行利用。

# 安装git(如有请跳过)conda install -c anaconda git# 克隆anytext仓库git clone https://github.com/tyxsspa/AnyText.gitcd AnyText# 准备字库文件(推举Arial Unicode MS,需自行下载)mv your/path/to/arialuni.ttf ./font/Arial_Unicode.ttf# 办法一:如果利用modelscope notebook最新镜像(ubuntu22.04-cuda11.8.0-py310-torch2.1.0-tf2.14.0-1.10.0),直接安装如下包即可pip install Pillow==9.5.0pip install gradio==3.50.0# 办法二:重新创建一个独立虚拟环境(耗时较长)conda env create -f environment.yamlconda activate anytext

利用前须要进行干系库的安装以及干系利用环境的搭建。
然后输入如下代码就可以利用了。

from modelscope.pipelines import pipelinefrom util import save_imagespipe = pipeline('my-anytext-task', model='damo/cv_anytext_text_generation_editing', model_revision='v1.1.1', use_fp16=True, use_translator=False)img_save_folder = "SaveImages"params = { "show_debug": True, "image_count": 2, "ddim_steps": 20,}# 1. text generationmode = 'text-generation'input_data = { "prompt": 'photo of caramel macchiato coffee on the table, top-down perspective, with "Any" "Text" written on it using cream', "seed": 66273235, "draw_pos": 'example_images/gen9.png'}results, rtn_code, rtn_warning, debug_info = pipe(input_data, mode=mode, params)if rtn_code >= 0: save_images(results, img_save_folder)# 2. text editingmode = 'text-editing'input_data = { "prompt": 'A cake with colorful characters that reads "EVERYDAY"', "seed": 8943410, "draw_pos": 'example_images/edit7.png', "ori_image": 'example_images/ref7.jpg'}results, rtn_code, rtn_warning, debug_info = pipe(input_data, mode=mode, params)if rtn_code >= 0: save_images(results, img_save_folder)print(f'Done, result images are saved in: {img_save_folder}')

更多内容可以参考modescope社区干系模型,也可自行在线demo利用。

https://modelscope.cn/studios/damo/studio_anytext/summaryttps://github.com/tyxsspa/AnyTexthttps://arxiv.org/abs/2311.03054https://modelscope.cn/models/damo/cv_anytext_text_generation_editing/summary