技术文章«bang'sblog

首先说明下为什么图片生成文字容易乱码?

接下来看优化文字生成能力的大致流程:

第二步,使用数据训练模型,跟第一步是反着的过程。先训练一个布局模型,可以通过输入prompt→输出文本布局+内容。再把prompt和文本布局输入生图模型,最终生成带文字的图片。

大流程就是这样,再稍微把其中布局模型展开一下:

输入prompt输出文字内容+布局,用的是一个大语言模型(LLM),定义了一个输出的文本格式,包含文本内容和这些文本的坐标。同时还会根据文本和坐标数据,用文字渲染工具画张图片出来。

这张渲染出来的文字布局图会作为生图时的参考,用类似ControlNet的方式作用在生图过程中,最终生成图上的文字。

训练阶段:找一批带文字的图片,用OCR识别文字内容和位置,再渲染出一张白底黑字的图片,将图片描述和这张白底黑字图片一起进入GlyphControlNet网络训练。这个白底黑字的图片就是参考图,跟边缘轮廓/姿态等其他ControlNet的参考图作用和流程都一样。

推理阶段:分两部分输入,生图的Prompt和白底黑字参考图,这张参考图看起来是要用户自己另外准备的,可以直接画一张白底黑字的图,或者描述文字内容、行信息、大小位置布局,用工具生成白底黑字参考图,再和prompt一起去生成相应的带图的文字。

效果:文字能较准确生成,但没有控制字体样式和文本颜色的能力,泛化性会比较差。布局和位置需要额外输入,产品化实用性低一些。

疑问:controlNet23年2月出现,为什么11月才有人用于改进图片文字渲染,ControlNet作者自己不试试呢?

相对未针对性训练的生图模型,能生成合理清晰的文字,在给定图像补充文字上效果也不错,也能做到控制文本颜色了,但字体多样性差一些。

TextDiffuser有个问题,它第一阶段产生的文字mask是用单一字体渲染的结果,用这个mask引导生图,结果是生成的结果字形的多样性比较差,生成的文字倾向于规整,手写或艺术字很难出现,GlyphControl也有同样的问题。另外TextDiffuser布局转换器对用户输入prompt的理解能力也有限。

布局模型:

生图模型:

TextDiffuser2的多样性会好一些,字体形态多样。

AI图片生成文字主要有以下几种方案:

这些方案的核心思路都是:

目前TextDiffuser2的效果最好,既保证了文字的准确性,又能生成多样化的字体样式。Recraft借鉴了TextDiffuser2和GlyphControl。

为什么雷声大雨点小?

一个模型能同时理解和处理多种模态的数据输入。

先来看看人像视频,常见有两类:

基于扩散模型的方案,大体思路看起来是在原网络插入pose/人脸点位控制,跟ControlNet原理差不多,扩散模型本身除了SDUnet那套外,基本都会加入视频生成常见的spatial-attention和temporal-attention。

这是Transformer架构图,左边是encoder,右边是decoder,实际LLM大模型是只由右边decoder构成,这里面大部分是常用的FeedForward(前馈网络)/Add(残差连接)/Norm(层归一化),核心还是Multi-HeadAttention模块,我们来具体看看Multi-HeadAttention模块里做了什么。

假设一个字是一个token,输入是”我有一个玩”(用于推测下一个字”具“),5个字,每个字用一个向量表示,每个向量假设是9维(GPT3是12288维),也就是用9个数值表示这个字,那每个词顺序排下来,就组成了5行9列的输入矩阵,称他为X,每一行代表一个词。

这个输入矩阵经过Multi-HeadAttention模块运算,输出另一个同宽高的矩阵,接下来详细看看这个运算过程。

Multi-HeadAttention是由多个SelfAttention模块拼接而成,如果它只有一个head,就是一个SelfAttension模块。

在客户端上跑大模型,一定是未来的趋势。

那当前手机设备硬件条件如何?我们可以通过一些指标对手机和服务端的算力差距有个大概认识。

显存:一个模型能不能跑,取决于显存够不够,显存不够模型无法加载。

性能:而模型跑得快不快,取决于芯片性能怎样。

来看看上篇里的最后一个case:

黏土风格效果还可以,但人物动作总会跟原图不一致,一会双手放地板,一会侧身。图生图一般希望整体轮廓、人物姿态与原图一致,有没有办法控制?

我们可以给它加上ControlNet节点,用canny边缘检测,试试控制画面主体的轮廓结构:

这下就比较准确地还原了原图的姿势了。

通过这套架构,可以训练出每种控制方式对应的模型,生图过程中应用这个模型,输入对应的引导图,就能生成对应的图。

以下是ControlNet作者训练好的几种模型,以及用这些引导图生成的图片效果:sketch草稿、map法线贴图、depth深度图、canny边缘、line线、edge边缘、场景、Pose人物姿势

这里的canny可以替换成sketch、depth、pose等算法,搭配上对应的ControlNet模型,就能实现不同的控制方式。

扩散生图模型出现后,就有很多人探索怎样更好控制它的生成,显然如果只能用文字生图,可控性太差,最直观的还是能通过草图指引控制它画什么。

有很多人做过不同的研究,提出过多种方法,ControlNet的方法相对前人有很大优势,能稳定用在各种场景上,效果最佳,应用广泛。

整个生图的核心网络就是UNet。UNet最初是用于医学图像分割任务而提出来的,但它的特性展现了在图像其他领域的应用潜力,后续经过扩散模型的改进,很好应用在了图像生成上,所以StableDiffusion的UNet实际上在原UNet网络架构上做了一些改造。

我们先来看看原UNet网络架构:

先看ComfyUI这个默认的最简单的workflow:

为什么叫模型checkpoint?模型在微调训练过程中,会在关键节点保存模型参数的状态,这个保存点被称为checkpoint,SD有大量基于基座模型微调训练的模型,包括官方出的,比如SDv1.5是从v1.2的基础上调整得到的,SDXLTurbo也是基于SDXL1.0基础上训练的,这些模型都被称为checkpoint,这些checkpoint包含了生成图所需要的全部核心组件,包括VAE、CLIP、UNet的模型数据,可以直接使用。

在看图片生成这个逆天能力的时候,很好奇它是怎么做到的。要完全理解这里面的算法细节门槛挺高,但要了解基础原理概念还是简单的。

目前市面上文字生成图片基本上都基于Diffusion扩散模型,StableDiffusion自然也是,它最基本的原理是:根据文字指示,把一张随机生成的全是噪点的图片,一步步去掉噪点生成跟文字描述匹配的图片。

具体是怎样做到的?这里可以分步看两个问题:

先看第一个问题,从随机噪点图生成一张正常图片,通过训练和组合UNet模型可以做到。

UNet是个深度学习网络模型,模型细节不说,个人可以非常粗略地理解为,这个UNet模型里面的参数,记录了训练的图片的内容,但它不是精确存储,而是有一些映射和数学运算,做到可以识别提取图片特征,模糊地记忆图片的关键信息,混合存储。

这个模型训练出来后,如果你是用一张图片玩命训练它,那它最终恢复出来的就是这张图片(maybe)。如果你用1万张图片训练这个模型,那它恢复出来的会是这一万张图片内容随机组合的一张图片。

THE END
1.算法入门算法入门 网易公开课(32.5万)立即下载 课程目录(39)全部课程 11:43 算法入门 10:06 数据结构 13:04 阿兰·图灵 10:35 软件工程 13:49 集成电路&摩尔定律 10:35 操作系统为你推荐(16) 13:02 抖音窥视你的思想?带你了解抖音算法3.7万次播放 13:35 4.5.2 应用递归算法解决问题的经典例子(上)1375次播放 http://m.open.163.com/mobile/free/gb/video?mid=MDGETD4DC&plid=MDGEPAQ4K
2.一份较为详细的深度学习资料汇总500608百万论坛文字A Few Useful Things to Know about Machine Learning:这是一篇很好的论文,因为它以详细的算法为基础,又提出了一些很重要的问题,比如:选择特征的一般化,模型简化等。 我只是列出了两篇重要的论文,因为阅读论文会让你陷入困境。 Beginner Machine Learning Books给机器学习初学者的书 https://blog.csdn.net/edward_zcl/article/details/80003284
3.我学编程全靠B站了,真香(第二期)技术阅读哪知最后时也命也,选了数据库方向,所以最后又跟爬虫搭上线了。不过我爬虫也都是自学的,基本都是在B站和Youtube上看的一些教学视频。 1、Python基础 可能是B站唯一一个过千万播放的Python视频 如果要说哪个B站的Python视频最火的话,那肯定是黑马的这个视频了。 https://www.eetopic.com/article/71322.html
4.鱼C工作室鱼C工作室为大家提供最有趣的编程视频教学。https://ilovefishc.com/
5.抗疫期间线上学习资料包第六期:技能提升推荐理由:本课程不是简单的摄影的操作教学,而是从光学原理出发,剖析镜头结构、解答技术难题,从而掌握摄影技术所必备的光学知识,培养摄影内功。 简介:课程共包含七个单元,分别为光学常识、摄影光学基础、镜头关键参数、镜头像差与校正、镜头素质评价、摄影技术等七个方面,结合摄影实战解答摄影中的热点问题。 https://xgb.uestc.edu.cn/article/detail/5edf324e293c63511123a0e4
6.全网知识付费网课资源:IT会员社群教程目录持续更新(2024)009.acwing算法基础课+提高课完结无秘 008.2022升级新版Scrapy打造搜索引擎畅销4年的Python分布式爬虫课完结无秘 007.百战程序员AI算法工程师就业班2022年价值18980元重磅首发冲击百万年薪完结无秘 006.千峰HTML5大前端面授2022年9月完结版价值14999元Vue3.0重磅首发完结无秘 https://www.dklx.com/15271.html
7.Java基础视频教程推荐优质Java入门教程下载【JavaEE】小白入门课程 最新最热 初级 20天Java入门基础视频教程(含Java项目和Java真题) 为了帮助广大对Java有兴趣和立志进入本行业的零基础学员,本套课程由此而生,本套课程是Java零基础学员极好的入门视频,课程从Java语言的简介到程序开发执行的原理、集成开发工具IDEA的使用,再到Java技术的应用都一应俱全。 7200http://yun.itheima.com/course/c26.html
8.泾阳县人民政府本专业培养与我国现代化建设要求相适应,德、智、体、美全面发展的,具有与本专业相适应的文化水平、良好的职业道德与产业文化素养,掌握本专业的专业知识和技能,能够从事办公自动化应用、网页设计与制作、网络维护、计算机组装与维护、IT产品销售及售前售后服务工作,具有良好职业道德和职业发展基础的高素质劳动https://www.snjingyang.gov.cn/zfxxgk/fdzdgknr/jgsz/jgsz_20377/xzfgzbm2022/xjyj/bmgk_20415/202306/t20230613_1643809.html
9.《算法竞赛入门到进阶ACM算法竞赛入门经典(第2版)智能算法与MATLAB算法竞赛入门经典算法竞赛入门经典(第2版)算法竞赛入门经典算法设计与分析基础(第3版)计算机动画算法与技术(第3版)Swift常用算法算法竞赛入门到进阶算法竞赛入门经典算法实现算法竞赛入门经典训练指南升级智能聊天机器人核心技术与算法算法竞赛(清华科技大讲堂)信息学奥赛一本通关数http://product.dangdang.com/27901578.html
10.大数据培训视频教程全套下载Java数据结构及算法 Scala数据结构和算法 Oracle DataX StreamX SeaTunnel Doris Azkaban Telegraf InfluxDB Airflow Filebeat CDH6.3.2 Hive on Spark调优 NiFi 数据接口发布与接收案例 Dinky Paimon 核心基础 尚硅谷_Java基础 B站1500万+的播放量见证经典,尚硅谷宋红康老师的Java入门视频堪称神作,如今,经典再次超级进化https://www.atguigu.com/bigdata_video.shtml
11.库+算法库+游戏库+开源框架+自然语言处理nlp库+网络库+视频库+(mysql,mq,es,redis等)+机器学习库+算法库+游戏库+开源框架+自然语言处理nlp库+网络库+视频库+微服务框架+视频教程+音频音乐库+图形图片库+物联网库+地理位置信息+嵌入式脚本库+编译器库+数据库+金融库+电子邮件库+电子书籍+分词+数据结构+设计模式+去html tag标签等+go学习+go面试+计算机网络基础+图解网络+https://github.com/r14152/golangFamily
12.C++入门视频课程共32课时C/C++课程算法基础之 每周算法 视频课程(二) 7267人学习 ¥9.00 更多2 门课程 适合人群: C++基础入门的学员; 你将会学到: 本专题主要讲解C++基础入门学习,所以不会涉及很深入的语法和机制。但会让你整体多面的了解和学习C++的核心内容,快速学习使用C++,我们的目标是先宏观整体把握,在深入各个击破!!! https://edu.51cto.com/course/4940.html
13.魔贝课凡:SEO系列VIP视频教程合集(含第5至12期)无密完整版适合0基础小白:学习搜索引擎原理及开始建站和优化网; 适合入门级的菜鸟:学习通过优化网站带来订单; 适合入门菜鸟以上腰部站长:学习SEO新算法和新策略,实现流量变。 SEO遇到的问题 一个网站从0到1需要哪些? 1.域名 2.空间或者服务器 3.模板 4.基础优化(内链,发布时间,作者等等,3大标签规范) 5.深入优化 6.内容https://www.vipc6.com/2310.html
14.音视频开发入门视频制作基础知识腾讯云开发者社区音视频开发入门_视频制作基础知识 大家好,又见面了,我是你们的朋友全栈君。 音视频涉及语音信号处理、数字图像处理、信息论、封装格式、编解码、流媒体协议、网络传输、渲染、算法等。在现实生活中,音视频扮演着越来越重要的角色,比如视频会议、直播、短视频、播放器、语音聊天等。因此,从事音视频是一件比较有意义https://cloud.tencent.com/developer/article/2132203
15.2024Java入门视频教程下载Java知识分享网2024 Java入门视频教程 下载 转载自:http://download.java1234.com/article/2503 相关截图: 资料目录: ├─上 │ 01.教程简介.mp4 │ 50.位运算_左移算法.avi │ 51.位运算_右移算法.avi │ 52.位运算_异或非异或算法以及运算符优先级.avi │ 53.模块二总结.avi http://www.java1234.com/a/javaziliao/javabase/2024/0911/25895.html
16.专注于区块链技术培训,中国区块链工程师的摇篮,零基础入学教学目标明确 针对高中/大学毕业生,没有编程基础也不用怕,我们有对IT或区块链零基础的人群设计的专项入门课程。 课程科学合理 从语言介绍到区块链高并发服务器、前端、后端、密码学安全理论与开发、智能合约等技术及面试技巧分阶段设计授课内容。 项目实战式教学 http://www.firelinks.cn/assets/img/page-pm.html