综合介绍
AnyText是一个革命性的多语言视觉文本生成和编辑工具,基于扩散模型开发。它能够在图像中生成自然、高质量的多语种文本,并支持灵活的文本编辑功能。该项目由研究团队开发,并在ICLR 2024会议上获得Spotlight荣誉。AnyText的核心优势在于其独特的双模块架构:辅助潜在模块负责编码文本字形、位置和蒙版图像信息,文本嵌入模块则利用OCR模型处理笔画数据。项目还提供了AnyWord-3M数据集,这是首个包含300万对带有OCR标注的多语言文本图像数据集,为视觉文本生成领域提供了重要的评估基准。
备用地址:https://huggingface.co/spaces/modelscope/AnyText
功能列表
- 多语言文本生成:支持在图像中生成多种语言的文本
- 文本编辑:可以编辑和修改已有图像中的文本内容
- 样式控制:支持通过基础模型或LoRA模型更改生成文本的样式
- FP16推理加速:支持快速推理,可在8GB以上显存的GPU上运行
- 中英文翻译:内置中英文翻译模型,支持直接输入中文提示词
- 自定义字体:允许用户使用自己的字体文件
- 批量处理:支持批量生成和编辑图像文本
- 模型合并:支持合并社区模型和LoRA模型的权重
使用帮助
1. 环境安装
- 首先确保系统已安装Git:
conda install -c anaconda git
- 克隆项目代码:
git clone https://github.com/tyxsspa/AnyText.git
cd AnyText
- 准备字体文件(推荐使用Arial Unicode MS):
mv your/path/to/arialuni.ttf ./font/Arial_Unicode.ttf
- 创建并激活环境:
conda env create -f environment.yaml
conda activate anytext
2. 使用方法
2.1 快速开始
最简单的验证方式是运行以下命令:
python inference.py
2.2 启动交互式演示
对于配置较好的GPU(8GB以上显存),推荐使用演示界面:
export CUDA_VISIBLE_DEVICES=0 && python demo.py
2.3 高级配置
- 使用FP32精度和禁用翻译器:
export CUDA_VISIBLE_DEVICES=0 && python demo.py --use_fp32 --no_translator
- 使用自定义字体:
export CUDA_VISIBLE_DEVICES=0 && python demo.py --font_path your/path/to/font/file.ttf
- 加载特定的检查点:
export CUDA_VISIBLE_DEVICES=0 && python demo.py --model_path your/path/to/your/own/anytext.ckpt
3. 样式调整
在演示界面中,可以通过两种方式调整生成文本的样式:
- 更改基础模型:在[Base Model Path]中填入本地基础模型的路径
- 加载LoRA模型:在[LoRA Path and Ratio]中输入LoRA模型路径和权重比例,例如:
/path/of/lora1.pth 0.3 /path/of/lora2.safetensors 0.6
4. 性能优化
- 默认使用FP16推理,同时加载中英文翻译模型(占用约4GB显存)
- 如果使用FP16且不使用翻译模型,生成单张512x512图像仅需约7.5GB显存
- 首次运行时,模型文件会下载到
~/.cache/modelscope/hub
目录 - 可以通过设置环境变量
MODELSCOPE_CACHE
修改下载目录
5. 注意事项
- 确保安装了正确版本的依赖包
- 使用自定义字体可能会影响生成效果
- 模型首次运行需要下载相关文件
- 建议使用8GB及以上显存的GPU运行
AnyText生成图片操作说明
运行示例
AnyText有两种运行模式:文字生成和文字编辑,每种模式下提供了丰富的示例,选择一个,点击[Run!]即可。
请注意,运行示例前确保手绘位置区域是空的,防止影响示例结果,另外不同示例使用不同的参数(如分辨率,种子数等),如果要自行生成时,请留意参数变化,或刷新页面恢复到默认参数。
文字生成
在Prompt中输入描述提示词(支持中英文),需要生成的每一行文字用双引号包裹,然后依次手绘指定每行文字的位置,生成图片。 文字位置的绘制对成图质量很关键, 请不要画的太随意或太小,位置的数量要与文字行数量一致,每个位置的尺寸要与对应的文字行的长短或宽高尽量匹配。如果手绘(Manual-draw)不方便, 可以尝试拖框矩形(Manual-rect)或随机生成(Auto-rand)。
多行生成时,每个位置按照一定规则排序后与文字行做对应,Sort Position选项用于确定排序时优先从上到下还是从左到右。 可以在参数设置中打开Show Debug选项,在结果图像中观察文字位置和字形图。也可以勾选Revise Position选项,这样会用渲染文字的外接矩形作为修正后的位置,不过偶尔发现这样生成的文字创造性略低。
文字编辑
请上传一张待编辑的图片作为参考图(Ref),然后调整笔触大小后,在参考图上涂抹要编辑的位置,在Prompt中输入描述提示词和要修改的文字内容,生成图片。
参考图可以为任意分辨率,但内部处理时会限制长边不能超过768,并且宽高都被缩放为64的整数倍。