AIGC
文章平均质量分 81
多恩Stone
聚焦时尚设计领域的高可用 AIGC,现于香港理工-人工智能设计研究所搬砖
展开
-
【Domain Generalization(4)】领域泛化与文生图之 -- CDGA 跨域生成式数据增强 Cross Domain Generative Augmentation
Image Classification 上的领域泛化,重点是用 LDM 来做数据增强,关键是补充了 Cross Domain (两种 Domain 之间)的数据。原创 2025-01-14 21:23:33 · 718 阅读 · 0 评论 -
【3DGS (1) 】3D Gaussian Splatting全解 (原理+代码+公式) - 笔记
Splatting 是一种主动的**体渲染**方法,从 3D 物体渲染到 2D 平面主动: 计算出每个发光粒子**如何影响像素点**Ray-casting 是被动的(NerF)计算出每个像素点受到发光粒子的影响来生成图像在这个3D高斯渲染的上下文中,发光粒子指的是3D空间中的点每个点都具有一定的属性(如颜色、不透明度等),可以影响最终渲染图像上的像素。这些"发光粒子"可以理解为**空间中的采样点在Splatting方法中,主动计算每个粒子如何影响2D平面上的像素。原创 2025-01-14 11:01:12 · 1691 阅读 · 0 评论 -
【Domain Generalization(3)】领域泛化与文生图之 -- QUOTA 任意领域中的生成物体的数量可控
任务是文生图,重点在生成图像中物体数量的准确性/可控性。关键是 Any Domain,在两阶段(不同 Domain) 的数据上对新增的 token 优化/训练,实现领域泛化。原创 2025-01-13 16:55:58 · 987 阅读 · 0 评论 -
【Flux 拆解(1)】CLIP 和 T5 的 Tokenizer 异同
本系列将以 Flux-dev 为例,详细拆解各个部分的细节和重点。Flux 整体框架图如下,来源于: 《Stable Diffusion 3「精神续作」FLUX.1 源码深度前瞻解读》原创 2024-10-19 15:53:22 · 1729 阅读 · 0 评论 -
【HuggingFace 如何上传数据集】快速上传图片、文本等各种格式的数据
如果只是为了上传备份、或者迁移数据,可以不用 huggingface dataset,而是直接使用 HfApi()来上传文件夹。原创 2024-10-17 15:54:43 · 1252 阅读 · 0 评论 -
【分布式训练(3)】accelerator + deepspeed debug 报错 “Timed out waiting for debuggee to spawn“ 解决方法✅
用以上 launch.json 对 accelerator + deepspeed 的训练代码进行 debug,结果完全无法连接。灵感来源:https://blog.csdn.net/qq_19716143/article/details/136035839。原创 2024-10-14 21:27:57 · 548 阅读 · 0 评论 -
【扩散模型(十)】IP-Adapter 源码详解 4 - 训练细节、具体训了哪些层?
IP-Adapter 训的就是 image_proj_model(或者对于 plus 来说是 resampler) 和 adapter_modules 两块。在 adapter_modules 中,实际只训了 IPAttnProcessor2_0 的 to_k_ip 和 to_v_ip。adapter_modules 是在每个有含有 cross attention 的 unet block 里进行的替换,如下图所示。原创 2024-09-06 18:25:20 · 1181 阅读 · 2 评论 -
【扩散模型(九)】IP-Adapter 与 IP-Adapter Plus 的具体区别是什么?
从下图中可以很直观地看出有两处不同,第一是使用 image encoder 的方式不同、得到了不同的图像特征,第二是将原有的简单 ImageProjModel 替换成了更加复杂的 Resampler 以提取更多的图像信息。(2) .hidden_states[-2]:这行代码调用self.image_encoder时,通过 output_hidden_states=True 参数指示编码器输出除了。是一个简单的投影模型,可能用于将图像特征投影到一个多维空间以便于与其他类型的数据结合。原创 2024-08-27 22:08:23 · 1700 阅读 · 0 评论 -
【扩散模型(六)】IP-Adapter 是如何训练的?2 源码篇(IP-Adapter Plus)
在 IP-Adapter Plus 中,采用的是 Resampler 作为img embedding 到 ip_tokens 的映射网络,对图像(image prompt)中信息的抽取更加细粒度。从以下代码可以看出,IPAdapter 主要由 unet, image_proj_model, adapter_modules 3 个部分组成,而权重需要被优化的(训练到的)只有 ip_adapter..parameters(), 和 ip_adapter.,本文的重点是后续训练的实现。原创 2024-08-27 17:22:24 · 1519 阅读 · 0 评论 -
【扩散模型(八)】Stable Diffusion 3 diffusers 源码详解2 - DiT 与 MMDiT 相关代码(下)
中的 JointTransformerBlock 类,其中 hidden_states (noisy latent)和 encoder_hidden_states (text prompt) 分别通过 norm1 和 norm1_context 后,进入了第四层。transformer_sd3.py 中的 forward 函数中以下片段进入 for 循环,如果不训练 backbone的话,那么就是从 else 分支进入 block 中。下方画出的图片和对应代码即为文图融合的核心关键,在原论文中。原创 2024-08-26 10:34:27 · 1805 阅读 · 2 评论 -
【炼丹经验积累(一)】梯度消失 学习率自动调节 附代码
(1)先 warm up,在前 1/10 个训练步中,学习率从 0 调节到设定的 1e-5。自动调节学习率的方式很多,本文先从最简单地尝试起来,即“线性调节”(2)再衰减,在后续的训练步中,线性地从 1e-5 逐渐减为 0。原创 2024-08-22 15:03:18 · 758 阅读 · 0 评论 -
【问题解决与原理解释】Attempting to unscale FP16 gradients.
在使用 accelerate 训练模型时遇到以下报错,其实本质是没有理解训练过程中的各种精度设置的原理,本文将从等基础概念进行解释。原创 2024-08-18 18:03:11 · 2648 阅读 · 0 评论 -
【扩散模型(七)】Stable Diffusion 3 diffusers 源码详解2 - DiT 与 MMDiT 相关代码(上)
虽然这些变量来自于同一个线性层的输出,但由于 nn.Linear 层的权重在训练过程中是可学习的,并且是随机初始化的,因此这些权重会在训练过程中被更新为不同的值。原创 2024-08-12 15:52:35 · 1729 阅读 · 0 评论 -
【diffusers极速入门(七)】Classifier-Free Guidance (CFG)直观理解以及对应代码
由于 Classifier-Free Guidance (CFG) 相关的理论解释博客已经很多了,本文不涉及理论推导,而侧重直观理解和对应的 diffusers 代码。原创 2024-08-12 12:38:53 · 2393 阅读 · 0 评论 -
【可控图像生成系列论文(六)】ECCV24-Glyph-ByT5 微软亚研院、清华、北大合作工作(上)
现有 “文字渲染的不准确” 的问题,主要归因于 Text Encoder 的局限。例如,最初的 CLIP 文本编码器是为。层面的广泛视觉语言语义对齐而定制的,而 T5/ByT5 文本编码器则侧重于深度语言理解。然而,尽管最近的研究表明 T5/ByT5 文本编码器有利于视觉文本渲染任务,但两者都。缺乏定制的文本编码器设计可能会导致各种应用中的文本渲染不准确。原创 2024-08-08 17:32:43 · 1020 阅读 · 0 评论 -
【扩散模型思考记录(二)】什么是隐空间?为什么要引入隐空间?
引入隐变量空间(latent space)是生成模型中常用的技术,如变分自编码器(VAE)和生成对抗网络(GAN)。通过这种方法,可以将复杂的高维数据分布映射到一个相对简单的低维隐变量空间,从而简化采样过程。引入隐变量空间的核心思想是通过一个相对简单的低维表示来捕捉数据的复杂分布。这使得我们可以从标准分布中采样,并通过生成函数将其映射回原始数据空间,从而生成符合复杂分布的新样本。这种方法不仅简化了采样过程,还提高了生成数据的质量和多样性。原创 2024-07-31 15:46:25 · 1402 阅读 · 0 评论 -
【扩散模型思考记录(一)】图像生成的本质是什么?什么是适合采样的复杂分布?
适合采样的复杂分布指的是一种能够真实且高效地生成新样本的分布。高保真度生成的样本应与真实数据集中的样本相似度高,能够保留数据集的各种重要特征和模式。高多样性生成的样本应具有足够的多样性,能够涵盖数据集中的不同模式和变异性,而不是仅生成几种重复的样本。平滑性分布应当是平滑的,即在高维空间中没有过多的奇异点或异常值。这样的分布有助于模型在未见过的数据点上进行合理的插值和外推。可采样性分布应该是容易采样的。即我们能够设计有效的算法,从这个分布中高效地生成样本。原创 2024-07-31 15:40:08 · 580 阅读 · 0 评论 -
【diffusers极速入门(六)】缓存梯度和自动放缩学习率以及代码详解
缓存梯度(Gradient Checkpointing): 通过在前向传播过程中存储部分中间激活值,减少显存占用,代价是反向传播速度变慢。适用于需要训练非常深或大的模型的情况。自动放缩学习率(Learning Rate Scaling): 根据训练配置(如 GPU 数量(num_processes)、梯度累积步数和批量大小)自动调整学习率,以适应不同的训练环境和配置,确保训练的稳定性和效果。原创 2024-07-30 11:51:20 · 1097 阅读 · 0 评论 -
【diffusers极速入门(五)】扩散模型中的 Scheduler(noise_scheduler)的作用是什么?
Scheduler 在扩散模型中扮演着重要的角色,它通过控制噪声的添加和去除,影响着模型的训练和生成效果。不同的 Scheduler 有不同的特点和适用场景,研究者可以根据具体任务选择合适的 Scheduler。原创 2024-07-29 22:25:44 · 2523 阅读 · 0 评论 -
【diffusers极速入门(四)】EMA 操作是什么?
EMA模型:让模型更稳定、更泛化EMA(Exponential Moving Average,指数移动平均)模型在深度学习中常用于存储模型可学习参数的局部平均值。可以把它想象成一个“影子模型”,这个影子模型的参数会随着原模型的训练不断更新,但更新的方式不是直接复制,而是以指数衰减的方式逐渐向原模型的参数靠拢。EMA模型是一种简单而有效的技术,可以提高深度学习模型的性能。通过维护模型参数的指数移动平均,EMA模型可以帮助模型找到更好的局部最小值,提高模型的稳定性和泛化能力。原创 2024-07-29 21:34:21 · 1098 阅读 · 0 评论 -
【扩散模型(六)】Stable Diffusion 3 diffusers 源码详解1-推理代码-文本处理部分
下图为《Scaling Rectified Flow Transformers for High-Resolution Image Synthesis》 (ICML 2024 )中的 SD3 架构图。原创 2024-07-19 16:12:11 · 1839 阅读 · 2 评论 -
【手撕代码(1)】Transformer 核心操作之一,nn.LayerNorm 的实现
LN 是对单个数据的指定维度进行 Normalization (归一化)处理,且指定的维度至少得包括最后一个维度。原创 2024-07-19 13:28:58 · 829 阅读 · 0 评论 -
【扩散模型(五)】IP-Adapter 源码详解3-推理代码
这里以中最基础的以图生图(Image Variations)为例:输入处理:对 img prompt 和 txt prompt 分别先得到 embedding 后再送入 SD 的 pipeline;过 Unet:与一般输入 txt prompt 类似,通过 Unet 的各个模块;Unet 中的 CA:对于 img prompt 部分需要拆出来,单独过针对性的 k (to_k_ip)和 v(to_v_ip)。原创 2024-07-17 20:43:56 · 1777 阅读 · 1 评论 -
【扩散模型(四)】IP-Adapter 源码详解2-训练核心(cross-attention)
本文通过详细的结构图和相关代码片段介绍了 IP-Adapter 训练代码的核心部分,下篇则介绍其推理代码。原创 2024-07-17 16:20:59 · 2487 阅读 · 2 评论 -
【扩散模型(三)】IP-Adapter 源码详解1-训练输入(image projection)
本文详解了IP-Adapter 训练源码中的输入部分,下篇则详解核心部分,针对图像输入的 Cross-Attention。↩︎。原创 2024-07-05 14:49:50 · 2143 阅读 · 3 评论 -
【可控图像生成系列论文(五)】ControlNet 和 IP-Adapter 之间的区别有哪些?
在 ControlNet 中,由于通过残差连接(红框的部分)将输入直接添加到 SD Decoder Block 中,以便在训练深度神经网络时防止梯度消失问题。IP-Adapter 通常通过一种适配器模块来实现,该模块能够动态调整生成模型的参数或特征,以适应不同的输入条件。条件输入则大小的限制。下图右边是 ControlNet,条件输入需要和最终输出的大小保持 pixel-level 的一致。下图左边是 IP-Adapter,条件输入可以和基础输入、最终输出的大小不一致。原创 2024-06-27 21:54:55 · 1364 阅读 · 0 评论 -
【可控图像生成系列论文(四)】IP-Adapter 具体是如何训练的?1公式篇
IP-Adapter 的结构和 SD 的差别不是特别大,可以参考【扩散模型(二)】中的结构图进行快速理解,本文则将详细介绍其 IP-Adapter 的训练过程。IP-Adapter 的训练目标和 SD 的原始训练目标一致,但由于仅仅训练投影网络和适配模块(Image prompt 输入的 cross attention),可训练参数量非常轻量化(仅 22M)。↩︎↩︎↩︎↩︎↩︎↩︎↩︎需要注意的是,仅使用图像提示也能很好地指导最终生成,因此也可以在没有文本提示的情况下训练模型。原创 2024-06-25 20:07:21 · 1897 阅读 · 2 评论 -
【扩散模型(二)】IP-Adapter 从条件分支的视角,快速理解相关的可控生成研究
上一篇文章提到可以从两个分支来看 Stable Diffusion1重建分支(reconstruction)负责从噪声中逐步重建出清晰的图像。条件分支(condition)则引入额外的信息或条件,指导图像的生成过程,使得生成结果符合特定的要求。从该视角,可以快速地理解基于 SD 的类似可控生成模型,重点都是在修改 condition 分支的部分,通过修改 corss-attention 中的 QKV 来更好地引入控制条件。原创 2024-06-25 14:38:08 · 1727 阅读 · 1 评论 -
【How2Research(一)】深度学习方向的论文有 idea,如何工程实现?
该系列将收集整理各科研大佬的 Research 方法论。本文为知乎上高赞回答的总结梳理,并制作脑图如下,以便于理解消化。Step1: 选 baseline 论文1.1 有开源代码1.2 发表时间近2-3年1.3 论文公式清晰Step2: 深入 baseline 代码2.1 配置环境Step3: 搭建自己的 pipeline。原创 2024-06-25 11:00:52 · 1088 阅读 · 0 评论 -
【扩散模型(一)】Stable Diffusion中的重建分支(reconstruction branch)和条件分支(condition branch)
重建分支负责从噪声中逐步重建出清晰的图像。条件分支则引入额外的信息或条件,指导图像的生成过程,使得生成结果符合特定的要求。这种结构使得 Stable Diffusion 模型既能够生成高质量的图像,又能够根据特定的条件生成符合要求的图像。原创 2024-06-24 21:35:25 · 1504 阅读 · 0 评论 -
【可控图像生成系列论文(三)】北大 Context-Aware Unsupervised Text Stylization论文解读1
本篇将介绍来自 ACM MM 2018 的一篇字体风格化的可控生成工作《Context-Aware Unsupervised Text Stylization》,主要功能是无监督的文字风格化,输入为(a)。原创 2024-06-24 21:23:50 · 1087 阅读 · 0 评论 -
【AIGC 概念理解】Zero-Shot,One-Shot,Few-Shot,In-Context Learning,Tuning-Free/Training-Free/Inference-Only
Zero-shot learning是一种极端的少样本学习()方法,它使得模型能够在完全没有见过目标类样本的情况下进行预测。模型通过在训练阶段学习到的特征和类描述之间的关系来实现这一点。原创 2024-06-23 17:13:18 · 4770 阅读 · 0 评论 -
【可控图像生成系列论文(二)】MimicBrush 港大、阿里、蚂蚁集团合作论文解读2
上篇简要介绍了论文的整体流程和方法,本文则将就整体方法、模型结构、训练数据和纹理迁移进行详细介绍。原创 2024-06-20 22:59:08 · 1477 阅读 · 2 评论 -
【diffusers极速入门(三)】生成的图像尺寸与 UNet 和 VAE 之间的关系
UNet 是一种卷积神经网络架构,最初设计用于生物医学图像分割。其结构类似于一个对称的 U 字形,由编码器(下采样)和解码器(上采样)组成。编码器逐步提取图像特征并缩小空间维度,解码器则将这些特征还原到原始的空间维度,同时逐步增加分辨率。对称结构:编码器和解码器对称分布。跳跃连接:直接将编码器的中间层输出传递到解码器的对应层,保留了高分辨率特征。多尺度特征提取:在不同尺度上提取特征,提升了网络对细节的捕捉能力。VAE 变分自编码器是一种生成模型,通过学习输入数据的潜在表示来生成新数据。编码器。原创 2024-06-20 16:57:01 · 2731 阅读 · 0 评论 -
【diffusers 极速入门(二)】如何得到扩散去噪的中间结果?Pipeline callbacks 管道回调函数
动态无分类器引导(classifier-free guidance,CFG)允许在一定步数后禁用 CFG,从而节省计算成本。该回调函数在每一步结束时执行,并修改管道属性和变量,以供下一步使用。这在动态调整某些管道属性或修改张量变量时非常有用。通过访问并转换潜在空间,可以在每步生成后显示图像。以下函数将 SDXL 的潜在空间(4 通道)转换为 RGB 张量(3 通道)。,如果你有其他执行点的回调需求,可以在 github 上提出功能请求。在管道的去噪循环中,可以使用。要设置回调函数,可以指定。原创 2024-06-19 20:24:04 · 1279 阅读 · 0 评论 -
【diffusers 极速入门(一)】pipeline 实际调用的是什么? __call__ 方法!
_call__通过这篇文章,我们了解了diffusers库中的管道对象是如何通过实现__call__方法来处理图像生成任务的。我们还通过简单的案例代码,展示了如何创建和使用一个自定义的管道对象。希望这篇文章能够帮助你更好地理解diffusers库的工作原理,并激发你在图像生成领域的探索和创作。如果你对diffusers感兴趣,不妨试着实现自己的管道对象,体验其中的乐趣吧!原创 2024-06-19 19:53:10 · 708 阅读 · 0 评论 -
为什么直接用 cv2.imwrite 保存 PIL 的图片会导致奇怪的颜色?
PIL 是一个处理图像的强大库,主要用于图像的打开、操作和保存。在 PIL 中,常用的图像对象是PIL.Image对象。OpenCV 是一个用于计算机视觉和图像处理的开源库,提供了丰富的功能。OpenCV 处理图像时使用numpy数组作为图像数据结构。PIL 和 OpenCV 处理图像的通道顺序不同PIL 使用 RGB 顺序。OpenCV 使用 BGR 顺序。颜色差异的原因直接使用相同的numpy数组保存图像时,由于通道顺序不同,颜色会有差异。解决方案。原创 2024-06-18 20:24:38 · 793 阅读 · 0 评论 -
【gradio 极速入门(二)】gr.Image 是如何得到 Mask 的?
Gradio 是一个用于构建和部署交互式机器学习应用的Python库。它的设计目的是让开发者能够轻松地将训练好的机器学习模型封装成一个用户友好的界面,使得非技术人员也能够使用和理解模型的预测结果。(官方链接:https://www.gradio.app/)在 Gradio 中,当设置和时,这些参数影响了用户在交互式界面上使用绘图工具(如笔刷工具)时生成的遮罩mask。原创 2024-06-18 16:43:33 · 1600 阅读 · 1 评论 -
【可控图像生成系列论文(一)】MimicBrush 港大、阿里、蚂蚁集团合作论文解读
背景:考虑到用户的不同需求,图像编辑是一项实用而富有挑战性的任务,其中最困难的部分之一是准确描述编辑后的图像应该是什么样子。创新点:在本文作者提出了一种新的编辑形式,称为模仿编辑,以帮助用户更方便地发挥他们的创造力。原创 2024-06-17 12:03:53 · 1201 阅读 · 0 评论 -
【diffusers 本地下载问题】from_pretrained 找不到本地文件?OSError: Error no file named model.bin found in directory
软链接的颜色取决于它指向的实际文件或目录的类型和属性。:表示文件或目录有特殊的权限或者属性。特别是,如果文件或目录的权限设置了不寻常的位或者它被标记为具有特殊的SELinux安全上下文等,它可能会显示为红色。如果软链接指向的文件或目录具有特殊权限或属性,例如设置了不寻常的权限位或者具有特殊的SELinux上下文,那么软链接可能会显示为红色。综上所述,软链接的颜色取决于其所指向的实际文件或目录的类型和属性,而不是软链接本身的属性。如果软链接指向的是一个目录,它会显示为蓝色,表示这是一个指向目录的软链接。原创 2024-06-14 15:08:10 · 1073 阅读 · 0 评论
分享