扩散模型(Diffusio Models)目前无法在图像中绘制准确清晰的文字内容,而TextDiffuser专注于解决该问题,可以生成与背景融合的带文字的图像。TextDiffuser有三种使用方式,既可以通过输入提示词,在自动预测的位置上渲染文本,也可以通过输入模板图像在指定位置上渲染文本,还可以输入一张图像后对文本内容进行编辑。 本模型共有两个阶段,首先是布局生成(Layout Geeratio)阶段,通过对输入的提示词做分词后将待绘制的文本内容输入给一个Trasformer模型,经过布局预测并生成字符级的分割掩码;然后是图像生成(Image Geeratio)阶段,采用Stable Diffusio v1.5模型并将输入通道数由4扩充到17,分别包含了加噪后的图像、字符分割掩码、编辑区域掩码、非编辑区域图像,通过开关切换文字生成或编辑修复两个分支的训练,并在损失函数中使用一个Uet分割模型对生成文字做字符级别的监督,提升文字准确率。 本模型使用范围较广,能基于输入的提示词生成包含英文字符的图像,或对图像中的文本进行编辑或修复。 请参照如下示例代码,以三种方式使用TextDiffuser生成带文字的图像。(首次执行需要下载多个模型文件至缓存,如遇报错请重启ipytho环境再次执行) 本模型的训练数据集采用MARIO-10M,主要来源于LAION-400M,TMDB,Ope Library三个互联网开源数据集,包含1000万高质量的图文对,涵盖自然图像、电影海报、书籍封面等各类场景。 与现有方法相比,TextDiffuser在CLIPScore和OCR的性能指标SOTA,FID方面指标也具有相当的竞争力:文本绘制扩散模型TextDiffuser
模型介绍
期望模型使用方式以及使用范围
环境配置
# 安装git(如有请跳过)
coda istall -c aacoda git
# 克隆textdiffuser仓库
git cloe https://github.com/microsoft/uilm.git
cd uilm/textdiffuser/
# 创建环境
coda create - textdiffuser pytho=3.8
coda activate textdiffuser
pip istall -r requiremets.txt
pip istall Pillow==9.5.0
# 安装diffusers并替换部分文件
git cloe https://github.com/JigyeChe/diffusers
cp ./assets/files/schedulig_ddpm.py ./diffusers/src/diffusers/schedulers/schedulig_ddpm.py
cp ./assets/files/uet_2d_coditio.py ./diffusers/src/diffusers/models/uet_2d_coditio.py
cp ./assets/files/modelig_utils.py ./diffusers/src/diffusers/models/modelig_utils.py
cd diffusers && pip istall -e . && cd ..
示例代码
from modelscope.pipelies import pipelie
pipe = pipelie('my-textdiffuser-task', model='damo/TextDiffuser_e', model_revisio='v1.0.0')
params = {
"sample_um": 4,
"sample_steps": 50,
"classifier_free_scale": 7.5,
"use_pillow_segmetatio_mask": True,
"biarizatio": False,
}
# 1. text-to-image
iput_data_t2i = {
"prompt": "'test if textdiffuser works' writte i autum leaves floatig o a lake"
}
mode = 'text-to-image'
output = pipe(iput_data_t2i, mode=mode, **params)
for idx, img i eumerate(output):
img.save(f'{mode}_{idx}.jpg')
# 2. text-to-image-with-template
iput_data_t2it = {
"prompt": "a poster of mokey music festival",
"template_image": "assets/examples/text-to-image-with-template/case2.jpg",
}
mode = 'text-to-image-with-template'
output = pipe(iput_data_t2it, mode=mode, **params)
for idx, img i eumerate(output):
img.save(f'{mode}_{idx}.jpg')
# 3. text-ipaitig
iput_data_ti = {
"prompt": "a boy draws good morig o a board",
"origial_image": "assets/examples/text-ipaitig/case2.jpg",
"text_mask": "assets/examples/text-ipaitig/case2_mask.jpg"
}
mode = 'text-ipaitig'
output = pipe(iput_data_ti, mode=mode, **params)
for idx, img i eumerate(output):
img.save(f'{mode}_{idx}.jpg')
模型局限性以及可能得偏差
训练数据介绍
模型评测指标
相关论文及引用信息
@article{che2023textdiffuser,
title={TextDiffuser: Diffusio Models as Text Paiters},
author={Che, Jigye ad Huag, Yupa ad Lv, Tegchao ad Cui, Lei ad Che, Qifeg ad Wei, Furu},
joural={arXiv preprit arXiv:2305.10855},
year={2023}
}
点击空白处退出提示
评论