1.腾讯T2I-adapter源码分析(3)-训练源码分析
2.腾讯T2I-adapter源码分析(1)-运行源码跑训练
3.适合计算机专业学生的论坛论坛论坛有哪些?
腾讯T2I-adapter源码分析(3)-训练源码分析
随着stable-diffusion和midjourney等AI技术展现令人惊叹的艺术创作,人们对AI可控绘图的源码源码追求日益高涨。为提升AI图像生成的腾讯腾讯可控性,Controlnet和T2I-adapter等解决方案应运而生。可用系列文章将从T2I-adapter的论坛论坛源码出发,深入剖析其训练部分的源码源码真机调试ts源码实现原理。
本篇我们将聚焦于训练源码的腾讯腾讯解析,通过代码结构的可用梳理,了解T2I-Adapter的论坛论坛训练流程。
训练代码的源码源码运行涉及数据处理、模型加载、腾讯腾讯优化器设置以及实际训练过程。可用在第一部分,论坛论坛我们首先设置参数并加载数据,源码源码如DepthDataset,腾讯腾讯它从txt文件中读取、对应的深度图和文本描述。
在模型加载阶段,我们区分了stable-diffusion模型和adapter。stable-diffusion模型加载时,其配置与推理阶段有所差异,如增加调度器参数、提高精度、调整分辨率和训练相关参数。adapter模型的加载则遵循推理过程中的初始化方法,通过构建不同模块来实现。
训练过程中,adapter模型的关键结构包括下采样、卷积和ResnetBlock的使用,相比controlnet,standard.jar 源码T2I-adapter的参数更少,没有注意力层,这使得训练更为高效。模型放入GPU后,使用adamW优化器进行训练,同时设置学习率和数据保存路径。
状态恢复部分,程序会判断是否从头开始或恢复训练,设置log信息。接下来,代码进入实际的训练循环,包括条件编码、隐藏状态生成、adapter结果附加至sd模型以及adapter梯度计算。
loss函数定义在模型配置中,采用L2损失来衡量生成图像与给定时间点加噪ground truth的接近程度。训练过程中,loss计算和模型保存都在代码中明确体现。
总的来说,T2I-adapter的训练源码展示了精细的结构和参数设置,确保了AI绘画的可控性和性能。在AI艺术的探索中,每一行代码都承载着技术进步的点滴痕迹。
腾讯T2I-adapter源码分析(1)-运行源码跑训练
稳定扩散、midjourney等AI绘图技术,为人们带来了令人惊叹的效果,不禁让人感叹技术发展的日新月异。然而,AI绘图的拍拍客网站源码可控性一直不是很好,通过prompt描述词来操控图像很难做到随心所欲。为了使AI绘制的图像更具可控性,Controlnet、T2I-adapter等技术应运而生。本系列文章将从T2I-adapter的源码出发,分析其实现方法。
本篇是第一篇,主要介绍源码的运行方法,后续两篇将以深度图为例,分别分析推理部分和训练部分的代码。分析T2I-Adapter,也是为了继续研究我一直在研究的课题:“AI生成同一人物不同动作”,例如:罗培羽:stable-diffusion生成同一人物不同动作的尝试(多姿势图),Controlnet、T2I-adapter给了我一些灵感,后续将进行尝试。
T2I-Adapter论文地址如下,它与controlnet类似,都是在原模型增加一个旁路,然后对推理结果求和。
T2I-Adapter和controlnet有两个主要的不同点,从图中可见,其一是在unet的编码阶段增加参数,而controlnet主要是解码阶段;其二是controlnet复制unit的上半部结构,而T2I-Adapter使用不同的模型结构。由于采用较小的模型,因此T2I-Adapter的模型较小,默认下占用M左右,而controlnet模型一般要5G空间。酷卡网源码
首先确保机器上装有3.6版本以上python,然后把代码clone下来。随后安装依赖项,打开requirements.txt,可以看到依赖项的内容。然后下载示例,下载的会放到examples目录下。接着下载sd模型到model目录下,再下载T2I-Adapter的模型到目录下,模型可以按需到huggingface.co/TencentA...下载。这里我下载了depth和openpose。sd模型除了上述的v1-5,也还下载了sd-v1-4.ckpt。
根据文档,尝试运行一个由深度图生成的例子,下图的左侧是深度图,提示语是"desk, best quality, extremely detailed",右侧是生成出来的。运行过程比较艰辛,一开始在一台8G显存的服务器上跑,显存不够;重新搭环境在一台G显存的服务器上跑,还是不够;最后用一台G显存的服务器,终于运行起来了。
接下来尝试跑openpose的例子,下图左侧是骨架图,提示词为"Iron man, high-quality, high-res",右侧是生成的图像。
既然能跑推理,那么尝试跑训练。模特天使网源码为了后续修改代码运行,目标是准备一点点数据把训练代码跑起来,至于训练的效果不是当前关注的。程序中也有训练的脚步,我们以训练深度图条件为例,来运行train_depth.py。
显然,习惯了,会有一些问题没法直接运行,需要先做两步工作。准备训练数据,分析代码,定位到ldm/data/dataset_depth.py,反推它的数据集结构,然后准备对应数据。先创建文件datasets/laion_depth_meta_v1.txt,用于存放数据文件的地址,由于只是测试,我就只添加两行。然后准备,图中的.png和.png是结果图,.depth.png和.depth.png是深度图,.txt和.txt是对应的文本描述。
文本描述如下,都只是为了把代码跑起来而做的简单设置。设置环境变量,由于T2I-Adapter使用多卡训练,显然我也没这个环境,因此要让它在单机上跑。而代码中也会获取一些环境变量,因此做简单的设置。
做好准备工作,可以运行程序了,出于硬件条件限制,只能把batch size设置为1。在A显卡跑了约8小时,完成,按默认的配置,模型保存experiments/train_depth/models/model_ad_.pth。那么,使用训练出来的模型试试效果,能生成如下(此处只是为了跑起来代码,用训练集来测试),验证了可以跑起来。
运行起来,但这还不够,我们还得看看代码是怎么写法,下一篇见。
PS:《直观理解AI博弈原理》是笔者写的一篇长文,从五子棋、象棋、围棋的AI演进讲起,从深度遍历、MAX-MIN剪枝再到蒙特卡罗树搜索,一步步介绍AI博弈的原理,而后引出强化学习方法,通俗易懂地介绍AlphaGo围棋、星际争霸强化学习AI、王者荣耀AI的一些强化学习要点,值得推荐。
AUTOMATIC的webui是近期很流行的stable-diffusion应用,它集合stable-diffusion各项常用功能,还通过扩展的形式支持controlnet、lora等技术,我们也分析了它的源码实现,写了一系列文章。
适合计算机专业学生的论坛有哪些?
硬核推荐!技术社区、开源项目及经典书籍,三大领域,为计算机专业学生量身打造学习资源,助你技术之路更上一层楼。
一、技术社区推荐
1、Github
网址:github.com
Github,程序员的天堂,国内知名大厂如阿里、腾讯、字节跳动、美团、Google、Microsoft等均在这里分享其宝贵的开源项目。这里不仅是一个代码仓库,更是学习交流的宝地。通过参与阅读优秀开源项目的代码和文档,甚至主动提出代码贡献,能极大提升你的编程技能和团队协作能力。
2、Stack Overflow
网址:stackoverflow.com
Stack Overflow,程序员的问答社区。区别于知乎等平台,它专注于问题解决,而非讨论。对于遇到的开发问题,只需具备一定的搜索能力,几乎都能在这里找到答案。参与回答问题,不仅能帮助他人,还能提升个人影响力,增强社区贡献感。
二、开源项目推荐
1、Redis
Redis,性能卓越、数据类型丰富、支持原子操作,具备发布/订阅、通知、键过期等特色功能。简洁的代码风格使其易于阅读与理解,是提升编程技能与代码风格的绝佳资源。
2、Apache RocketMQ
阿里开源的消息中间件,经过双大促的考验,稳定性与性能得到充分验证。适用于构建高效、可扩展的消息系统。
3、Apache Flink
Flink,流处理框架,支持批处理与流处理程序的执行,提供高吞吐量、低延迟的数据处理能力。适用于实时数据处理与分析场景。
4、Google guava
Google提供的Java库,包含丰富的函数与功能,如缓存与限流实现,是深入理解Java库与设计模式的宝贵资源。
5、sharding-jdbc
数据库分库分表、读写分离的中间件,适用于复杂数据库架构的设计与优化。
6、RxJava
Java平台上的响应式扩展,提供异步编程的强大工具,适用于构建响应式UI与复杂事件驱动系统。
7、Spring
无需多言,Spring框架是Java开发的基石,掌握Spring有助于构建高效、可维护的应用程序。
三、多阅读经典书籍
阅读经典书籍是构建坚实知识基础的关键。博客虽能提供学习思路,但真正的知识来源于经典书籍的阅读。推荐纸质版书籍,尊重作者劳动成果,提升阅读体验。电子书也应充分利用,避免遗忘,有条件时购买实体书。
四、总结与资源推荐
掌握经典编程语言的学习路径,如C语言、C++、Java等。阅读计算机必读经典书籍,系统性地提升专业能力。利用资源平台如GitHub、Stack Overflow等参与开源项目,提升实战技能。关注计算机专业书籍推荐,规划个人学习路径。学习计算机之路,需耐心与毅力,经典书籍、源码阅读与实践是通往成功的必经之路。