腾讯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使用不同的模型结构。由于采用较小的php写json源码模型,因此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",右侧是生成的图像。
既然能跑推理,360自动采集源码那么尝试跑训练。为了后续修改代码运行,目标是准备一点点数据把训练代码跑起来,至于训练的效果不是当前关注的。程序中也有训练的脚步,我们以训练深度图条件为例,来运行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的如何修改tenforflow源码webui是近期很流行的stable-diffusion应用,它集合stable-diffusion各项常用功能,还通过扩展的形式支持controlnet、lora等技术,我们也分析了它的源码实现,写了一系列文章。
怎么查看腾讯视频网的视频代码
查看腾讯视频网的视频代码操作步骤如下:
1、将视频内容用浏览器打开;
2、在空白处点击右键查看源代码;
3、内页查找ctrlF或者在浏览器的工具找到选项;
4、输入v.qq即可查到视频的代码;
5、如此即可将视频的网址截取。
腾讯T2I-adapter源码分析(3)-训练源码分析
随着stable-diffusion和midjourney等AI技术展现令人惊叹的艺术创作,人们对AI可控绘图的追求日益高涨。为提升AI图像生成的可控性,Controlnet和T2I-adapter等解决方案应运而生。系列文章将从T2I-adapter的源码出发,深入剖析其训练部分的实现原理。
本篇我们将聚焦于训练源码的解析,通过代码结构的梳理,了解T2I-Adapter的训练流程。
训练代码的运行涉及数据处理、模型加载、优化器设置以及实际训练过程。在第一部分,我们首先设置参数并加载数据,如DepthDataset,它从txt文件中读取、对应的深度图和文本描述。
在模型加载阶段,我们区分了stable-diffusion模型和adapter。stable-diffusion模型加载时,其配置与推理阶段有所差异,如增加调度器参数、提高精度、调整分辨率和训练相关参数。adapter模型的加载则遵循推理过程中的初始化方法,通过构建不同模块来实现。
训练过程中,adapter模型的关键结构包括下采样、卷积和ResnetBlock的使用,相比controlnet,T2I-adapter的参数更少,没有注意力层,这使得训练更为高效。模型放入GPU后,使用adamW优化器进行训练,同时设置学习率和数据保存路径。
状态恢复部分,程序会判断是否从头开始或恢复训练,设置log信息。接下来,代码进入实际的训练循环,包括条件编码、隐藏状态生成、adapter结果附加至sd模型以及adapter梯度计算。
loss函数定义在模型配置中,采用L2损失来衡量生成图像与给定时间点加噪ground truth的接近程度。训练过程中,loss计算和模型保存都在代码中明确体现。
总的来说,T2I-adapter的训练源码展示了精细的结构和参数设置,确保了AI绘画的可控性和性能。在AI艺术的探索中,每一行代码都承载着技术进步的点滴痕迹。
tencent://message/?uin=&Site=&Menu=yes
ç¸ä¿¡å¾å¤æåå¨è®¿é®å«äººçå客ãç½ä¸ååæ¶å¯è½ä¼åç°ä¸é½æè¿æ ·çå°ç©æï¼ ç¹å»ä¸å°±å¯ä»¥å¼¹åºå¯¹è¯æ¡å主人è¿è¡å¯¹è¯ï¼èä¸æ éå 对æ¹ä¸ºå¥½åãä¸ãè ¾è®¯æä¾ç代ç 为ï¼
<a href="tencent://message/?uin=&Site=JooIT.com&Menu=yes">
<img border="0" SRC='blogs.com/phinecos/HelloWorldProtocal.rar)
ç»éä½ çQQ空é´åç¹èªå®ä¹ï¼å¿«æ·é®Ctrl+jï¼Alt+jï¼ç¹æ°å»ºæ¨¡åâ大å¾æ¨¡åâè¾å ¥æè ç²è´´åå¤å¶çå°åãç¶åç¹âæ´å¤è®¾ç½®âï¼ç¹å¼ä¹åä¸é¢æ个æ¾ç¤ºè¾¹æ¡ï¼ç¹âä¸æ¾ç¤ºâãä¸é¢æ个å¾çè¿æ¥å°åè¾å ¥ï¼
tencent://message/?uin=*****&Site=www.qqkj.cn&Menu=yes
æä¸é¢å°åä¸ç*****æ¹æä½ çqqå·ç ï¼æåæ交就å¯ä»¥äºï¼
å ãåèèµæï¼
1ãRegistering an Application to a URL Protocol
2ãRegister protocol
3ãä»¿è ¾è®¯ QQ å Skype éè¿URL触åèªå·±çç¨åºã
4ãç±Tencent://Messageåè®®æ³å°çä¸ä¸ªè§£å³æ¹æ¡ã
腾讯T2I-adapter源码分析(2)-推理源码分析
随着stable-diffusion和midjourney展示出AI绘图的惊人潜力,人们对技术进步的惊叹不已。然而,AI绘图的可控性一直是痛点,仅凭描述词控制图像并不尽如人意。为增强AI图像的可控性,Controlnet和T2I-adapter等技术应运而生。本文将通过解析T2I-adapter的推理源码,揭示其工作原理。
本文将深入剖析推理部分的代码,以便理解T2I-Adapter的实际操作。使用如下的命令行指令进行推理,如test_adapter.py,它需要指定条件类型、深度图路径、前置处理器类型、提示语、模型和缩放尺寸等参数。
在test_adapter.py中,主要分为参数读取、模型加载和推理运算三个步骤。参数读取部分包括检查支持的条件、构建提示语,以及根据输入选择前置处理。模型加载涉及stable-diffusion和adapter模型,前者通过配置加载,后者根据输入条件构造Adapter模型。
加载stable-diffusion模型时,代码引用了来自github的CompVis/stable-diffusion库,其中关键部分包括加载参数、模型配置以及UNetModel的改动。Adapter模型的构造与论文中的结构图一致,通过ResnetBlock的组合实现。
在推理过程中,先对输入进行预处理,如深度图的处理。随后,get_adapter_feature和diffusion_inference两个核心函数调用adapter模型,与stable-diffusion模型结合进行特征融合和采样。最后,DDIM采样器接收并处理adapter特征,最终生成图像。
通过以上分析,我们逐步揭示了T2I-adapter的推理机制。后续文章将探讨训练代码。在游戏开发中,AI生成游戏角色动作的应用,如AUTOMATIC,展示了这种技术的实际应用,以解决美术资源匮乏的问题。
腾讯插件化—Shadow源码
腾讯插件化框架Shadow介绍及源码解析 Shadow是一个由腾讯自主研发的Android插件框架,经过线上亿级用户量的检验,其在插件技术领域展现出不俗的实力。Shadow不仅开源分享了关键代码,还全面分享了上线部署所需的设计方案。 与市面上其他插件框架相比,Shadow在技术特点上主要体现在:支持特性编译与开发环境准备:建议使用最新稳定版本的Android Studio,推荐打开工程并选择sample-app或sample-host模块直接运行,体验不同安装情况下的运行效果。
代码结构清晰:所有代码集中在projects目录下的三个子目录中,sample目录为体验Shadow的最佳环境,详细信息可参考README文档。
插件加载与启动流程解析 插件加载是Shadow框架的核心,从loadPlugin作为起点,通过一系列步骤实现插件的动态加载与启动。包括但不限于:本地启动顺序:重点关注启动流程的第一、二步,回溯整个过程最终调用Plugin Manager的DynamicPluginManager.enter方法。
跨进程调用与Activity加载:调用mDynamicPluginLoader.callApplicationOnCreate方法执行插件加载,之后通过FastPluginManager.convertActivityIntent方法启动Activity。
Activity与Service加载机制 在Activity与Service加载机制上,Shadow采用与Android系统自身一致的实现方式:通过修改ClassLoader的parent属性,插入DexClassLoader实现插件apk的加载与Activity的实例化。具体步骤包括:new一个DexClassLoader加载插件apk,从插件ClassLoader中load指定的插件Activity名字,newInstance之后强转为Activity类型使用。 Shell Activity复用与资源管理 为了解决资源复用与访问问题,Shadow通过代理Activity的方式,通过Intent的参数确定构造哪个Activity,令壳子Activity能够复用,实现资源的隔离管理。此外,对同名View与资源的处理也非常关键,通过自定义类加载器与AOP技术,解决此类问题。 组件调用与优化 对于Service、Content Provider与Broadcast Receiver的调用,Shadow提供了优化方案,如通过ShadowContext启动Service、使用ShadowAcpplication注册静态广播等。 总结与学习建议 本文详细解析了插件化框架Shadow的源码与实现机制,深入探讨了其解决插件加载、Activity启动、资源管理等问题的策略。对于深入理解Android插件化技术,实现高效、稳定的插件化解决方案具有重要参考价值。建议对Android核心技术感兴趣的开发者深入阅读《Android核心技术手册》,了解更多关于插件化、热修复等技术的详细内容。怎么查看腾讯视频网的视频代码?
告诉你个简单的方法不用这么辛苦.有的网站、为了不让人用常常给地址加密、或用相对地址.甚至动态分配地址.等有的看下网页源代码可以找的到、有的则不然.怎么样可以轻松找到地址、或者可以直接下载到本地呢.如果你装有maxthon浏览器就更方便了.在\====查看====菜单下的=====工具栏=====下的插件栏勾上.会看到插件栏上有个f的按钮FLASH然后打开你需要的网页、上面有你要的flash点下f按钮、真是地址就显示了.在左栏有preview显示地址、选择到save然后右键地址另存为..就可以下载到本地拉.非常好用.现在的版本、甚至可以挖视频拉.答案补充只要你能登录那个网页、看的到、能显示出你要的FLASH就能保存、且弄到它的地址.光你给的那段html、有什么用呢、它只是解析过的.看不出原文件的地址.如你说的盗链网、人家也是有技术的.他盗了链然后又再次隐藏.如开头说的地址加密、或用相对地址.甚至动态分配地址.等又或者他复制一分、挂在他的网上、已经不是引用了.而是直接有副本.前提:这个网站只是引用了别人的flash、没有建副本建议.用maxthon打开有你要的flash的那个页面(就是你给的这段代码的那页、)然后点F按钮、就会把页面上所有的flash和它的真实地址列出来.要想下载只需要选到save然后右键另存即可.
2024-11-29 22:59
2024-11-29 22:53
2024-11-29 22:07
2024-11-29 21:31
2024-11-29 21:21