用通俗易懂的方式讲解:基于扩散模型(Diffusion),文生图 AnyText 的效果太棒了

近年来,随着AIGC的爆火,图片生成技术得到飞速发展,当前AI生成的图片已达到真假难辨的高保真度。不过,当合成图片中出现文字内容时,仍能够使AI露出马脚,因为当前主流方法尚无法在图片中生成准确可读的字符。

最近半年来已有学者开始研究文本生成的问题,但这些方法大多以英文为主,无法解决中文这种字形繁杂、字符数以万计的文字生成。

本文分享一种新颖的文字生成方法AnyText,通过创新性的算法设计,可以支持中文、英语、日语、韩语等多语言的文字生成,还支持对输入图片中的文字内容进行编辑。AnyText模型所涉及的文字生成技术为电商海报、Logo设计、创意涂鸦、表情包等新型AIGC应用提供了可能性。

代码链接:

https://github.com/tyxsspa/AnyText

论文链接:

https://arxiv.org/abs/2311.03054

模型链接:

https://modelscope.cn/models/damo/cv_anytext_text_generation_editing

图片

AnyText 主要基于扩散(Diffusion)模型,包含两个核心模块:隐空间辅助模块(Auxiliary Latent Module)和文本嵌入模块(Text Embedding Module)。

其中,隐空间辅助模块对三类辅助信息(字形、文字位置和掩码图像)进行编码并构建隐空间特征图像,用来辅助视觉文字的生成;文本嵌入模块则将描述词中的语义部分与待生成文本的字形部分解耦,使用图像编码模块单独提取字形信息后再与语义信息做融合,既有助于文字的书写精度,也有利于提升文字与背景的一致性。

训练阶段,除了使用扩散模型常用的噪声预测损失,AnyText还增加了文本感知损失,在图像空间对每个生成文本区域进行像素级的监督,以进一步提升文字书写精度。

图片

技术交流

建了AIGC大模型技术交流群! 想要学习、技术交流、获取如下原版资料的同学,可以直接加微信号:mlc2060。加的时候备注一下:研究方向 +学校/公司+CSDN,即可。然后就可以拉你进群了。

方式①、微信搜索公众号:机器学习社区,后台回复:加群
方式②、添加微信号:mlc2060,备注:来自CSDN + 技术交流

在这里插入图片描述

模型体验

魔搭创空间地址:

https://modelscope.cn/studios/damo/AnyDoor-online

新年做个春联吧!

prompt:一条金色的中国龙,在门框中间,中国风,剪纸风,上面写着“龙年大吉”“心想事成”

图片

环境准备

环境配置与安装

  1. python 3.8及以上版本

  2. pytorch 1.12及以上版本,推荐2.0及以上版本

  3. 建议使用CUDA 11.4及以上

本文主要演示的模型推理代码可在魔搭社区免费实例PAI-DSW的配置下运行(显存24G) :

第一步:点击模型右侧Notebook快速开发按钮,选择GPU环境

图片

第二步:新建Notebook

图片

第三步:克隆AnyText仓库,安装依赖,准备字库文件(https://modelscope.cn/studios/damo/studio_anytext/file/view/master/font%2FArial_Unicode.ttf?status=2)

# 克隆anytext仓库
!git clone https://github.com/tyxsspa/AnyText.git
%cd 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.0

===

模型推理

参照如下示例代码,对anytext进行模型推理,实现文字生成或文字编辑:

from modelscope.pipelines import pipeline
from util import save_images
pipe = pipeline('my-anytext-task', model='damo/cv_anytext_text_generation_editing', model_revision='v1.1.0')
img_save_folder = "SaveImages"
params = {
    "show_debug": True,
    "image_count": 2,
    "ddim_steps": 20,
}

# 1. text generation
mode = '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 editing
mode = '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}')

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/290763.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

YOLOv8融合改进 更换检测头为Detect_DyHead同时添加C2f-EMSC和C2f-EMSCP模块

一、Detect_DyHead检测头和C2f-EMSC,C2f-EMSCP模块 详细介绍和代码在往期的博客里: Detect_DyHead: (YOLOv8改进检测头Detect为Detect_Dyhead-CSDN博客) C2f-EMSC和C2f-EMSCP: (YOLOv8改进…

Unity中Shader雾效在场景中的调节技巧

文章目录 前言一、修改棋盘格Shader的Cull可以在属性面板控制1、在属性面板定义CullMode2、在SubShader中,使用CullMode3、这样就可以在不同剔除情况下使用棋盘格场景了 二、调节天际线颜色和雾融为一体1、在摄像机设置不渲染天空盒,渲染单一颜色2、采样…

我开发了一个聚合网盘资源搜索引擎-支持阿里云盘与夸克网盘资源

还在为找不到电子书资源而发愁?还在愁没有高清影视剧观看? 来试试我开发的云盘资源搜索引擎吧! 公众号回复关键词: 搜索 ! 就可以获取到网站网址。 这里还有资源分享微信群,不定期分享资源。 关于界面 怎么使用这个引擎&#x…

实验笔记之——下载数据到服务器

开发过程中经常需要把数据传到服务器上,太麻烦了,为此本博文记录采用百度云来传输数据 百度云 使用bypy包。 安装:pip install bypy 配置bypy连接百度网盘: 终端输入bypy info将命令行提示的链接复制到浏览器,并复制…

Github 2024-01-04 开源项目日报 Top10

根据Github Trendings的统计,今日(2024-01-04统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目3C项目2TypeScript项目2Java项目2Jupyter Notebook项目1Go项目1 系统设计指南 创建周期&#xff…

Flutter用GridView实现网格功能(1、item设置一个外边框,2、item背景点击变色,松开恢复原色)

GridView接收如下可选参数属性: scrollDirection:滚动方法padding:内边距resolve:组件反向排序crossAxisSpacing:水平子Widget之间间距mainAxisSpacing:垂直子Widget之间间距crossAxisCount:一…

C#/.NET/.NET Core优秀项目和框架2023年12月简报

前言 公众号每月定期推广和分享的C#/.NET/.NET Core优秀项目和框架(公众号每周至少推荐两个优秀的项目和框架当然节假日除外),公众号推文有项目和框架的介绍、功能特点以及部分功能截图等(打不开或者打开GitHub很慢的同学可以优先…

Wireshark本地回环网络抓包

背景 因为发往本机的数据包是通过回环地址的,即:数据包不会通过真实的网络接口发送,因此我们需要通过设置路由规则来让本来发到虚拟网络接口的数据包发送到真实网络接口即可。 场景描述:在网络程序开发的过程中,有时…

SQL中 Group by Grouping Sets 分组的用法

文章目录 1. 用法2. 语法3. 实际应用3.1 求总和与小计3.2 按多个维度分组3.3 标记小计和总计 1. 用法 将Grouping Sets 运算符添加到Group by 子句中,使用Grouping Set 可以在一个查询中指定数据的多个分组,其结果与针对指定的组执行union all 运算等效…

k8s中的容器探针

pod的容器健康检查---探针 probe:k8s对容器执行的定期检查,诊断。 探针的三种规则 所有的探针都是针对容器不是针对pod 1、 存活探针---livenessProbe:探测容器是否正常运行。如果发现探测失败,会杀掉容器。容器会根据重启策略…

ensp vlan连接(详细)

1.将需要的设备放置好 2.将设备连接起来 3.启动所有设备 4.备注好每台PC机的信息 5.配置好每台PC机 6.配置交换机1 进入配置视图,关闭信息提示 重命名设备 批量创建VLAN 开始配置接口 更改接口类型为ACCESS 将接口划分到对应的VLANN 配置下一个接口,步…

windows server 2012 安装telnet

系统版本 安装telnet 勾选telnet客户端 点击安装 等待安装完成 打开cmd,输入telnet,出现下图,说明安装成功 telnet.exe路径

hAdmin漂亮的后台html模板免费下载

hAdmin漂亮的后台html模板免费下载-遇见你与你分享

STGAN:用于交通数据插补的时空生成对抗网络

文章地址: STGAN: Spatio-temporal generative adversarial network for traffic data imputation 主要研究问题: 由于硬件故障或数据传输,观测到的交通数据中产生了噪声和缺失条目。这些质量差的数据无疑会降低ITS的性能; 本文贡献: 为交通数据插补任务提出了一种改进…

华芯微特MCU之TIMER触发ADC

01 TIMER定时器之脉冲发送功能 我们今天详细讲解一下TIMER的ADC触发功能。 SWM190的TIMER2/3支持SAR ADC触发功能,此功能配置为定时器或脉冲发送均有效,可通过配置相应寄存器实现。 将SAR ADC CTRL寄存器中TRIG设置为TIMER2触发或TIMER3触发。TIMER可作…

手机视频监控客户端APP,实时视频分享,享受免密看直播

目 录 一、媒体分享功能随处可见 二、手机视频监控客户端App分享功能 (一)手机APP安装 (二)手机APP功能描述 (三)实时视频分享介绍 三、实时监控视频分享的应用场景 1、搜救现场 2、指…

教育场景数字化中音视频小程序的发展

教育场景数字化逐步成为刚需 2018年以来,国家对在线教育行业的监管收紧,以及受益于 5G 技术的发展,教育科技逐步走向成熟化和规范化。 教育行业的本质是人与人(老师与学生、老师与家长,以及更多角色直接的沟通与互动…

java基于SSM的校内信息服务发布系统的设计与实现+vue论文

校内信息服务发布系统的设计与实现 摘要 近年来,信息化管理行业的不断兴起,使得人们的日常生活越来越离不开计算机和互联网技术。首先,根据收集到的用户需求分析,对设计系统有一个初步的认识与了解,确定校内信息服务发…

GPT-Pilot:AI开发者的伴侣

GPT Pilot 一个真正的AI程序员,它可以从零开始构建整个应用程序,它能自己编写代码、配置开发环境、管理开发任务、调试代码,你还可以随时和它聊天提问帮助你解决开发难题。你只需要在一旁监督开发过程即可... 主要功能 自动化编码&#xff…

【栈越界】变量未赋值前提下,值却发生改变??

首先,提出2个问题: 数组越界 和 栈越界是一回事吗?以上两种越界若有发生,程序一定会跑飞吗? 目录 1. 一个栈越界的例子2. 程序的内存分部3. RAM 空间示意图 1. 一个栈越界的例子 创建 STM32 工程并写了一段测试代码 …