- 博客(50)
- 收藏
- 关注
原创 DiT、 U-Net 与自回归模型的优势
DiT 将 Transformer 的全局自注意力与扩散模型紧密结合,突破了 U-Net 局部卷积的固有限制,使得模型在捕捉远程依赖、条件信息融合、可扩展性和预训练转移上具备显著优势,也为更高分辨率下的高质量图像生成提供了更优的架构选择。
2025-05-26 00:23:59
2249
原创 一文读懂 LBM:用桥匹配搞定图像修复、重照明、目标消除
本方法在潜在空间构建布朗桥插值,注入桥噪声,并通过去噪网络学习随机扩散漂移,重建多样而逼真的目标图像。
2025-05-25 20:37:58
777
原创 使用 Hugging Face 镜像站快速下载大模型
默认情况下,Hugging Face 会将所有模型缓存到,这可能会迅速占满主盘空间。我们可以通过设置环境变量HF_HOME。
2025-05-04 17:58:48
1099
原创 使用 MediaPipe 和 OpenCV 快速生成人脸掩膜(Face Mask)
在实际项目中,尤其是涉及人脸识别、换脸、图像修复等任务时,我们经常需要生成。这篇文章分享一个的小工具,利用 MediaPipe 和 OpenCV,快速提取人脸轮廓并生成二值掩膜图像。下面是完整代码,配合详细讲解,适合初学者和需要快速上手的小伙伴!
2025-04-27 14:31:27
873
原创 Batch Normalization 训练与推理期间统计量的区别与累积方法
阶段统计量来源是否更新全局统计量输出稳定性要求训练当前 mini-batch(μₘ, σ²ₘ)是(EMA)允许波动推理全局累积(μ_global, σ²_global)否必须稳定在训练过程中,BN 层会利用每个 mini-batch 计算实时均值和方差,并通过指数加权移动平均方法不断更新全局统计量,以反映整个训练数据集的分布;而在推理阶段,为保证归一化的一致性和稳定性,直接使用累积的全局均值和全局方差进行数据归一化。
2025-04-08 12:38:07
676
原创 PyTorch DataLoader 参数详解
使用DataLoaderbatch_size:控制每个批次的样本数;shuffle:决定数据顺序是否随机打乱;:通过多进程加速数据加载;pin_memory:用于加快 GPU 数据传输;drop_last:确保批次样本数一致;collate_fn:自定义 batch 拼接逻辑。在训练 Stable Diffusion(SD)模型时,通过自定义Dataset类整合图片和 JSON 数据,并合理设置DataLoader的参数,可以显著提升数据加载效率和训练稳定性。
2025-04-08 12:12:40
1063
原创 PyTorch 与 Python 装饰器及迭代器的比较与应用
概念Python 装饰器是一种语法糖,用于在不修改原函数代码的前提下动态地增强或改变函数的行为。日志记录性能计时缓存优化权限验证异常处理常见用法:用于保持被装饰函数的元数据(如函数名、文档字符串)。自定义装饰器:例如记录函数调用时间、重试机制等。作用:在训练或调试过程中,可利用装饰器来封装日志记录、异常捕获、性能监控等功能。示例代码。
2025-04-08 11:39:41
1281
原创 Flow Matching, Rectified Flow, DDPM, DDIM 的区别与联系
方法理论基础训练目标采样方式速度核心优势DDPM随机扩散(SDE)变分下界(ELBO)多步去噪(百-千步)慢生成质量高,理论严谨DDIM确定性扩散(ODE)同DDPM,改变采样方式灵活步数(数十步)较快加速采样,兼容DDPM模型最优传输(ODE)匹配目标概率路径ODE求解(少步)快路径高效,理论简洁修正流(ODE)迭代优化轨迹直线化极简步数(1-2步)极快超快速采样,通用性强。
2025-04-08 01:03:21
1224
原创 层归一化详解及在 Stable Diffusion 中的应用分析
Stable Diffusion 主要采用GroupNorm和LayerNorm,分别用于图像(U-Net、VAE)和文本(CLIP)处理模块;避免使用BatchNorm和,主要因为对 batch size 敏感或表达能力受限;归一化策略是 SD 成功的稳定性关键之一,合理选择不同模块的归一化方式有助于模型更高效、更稳定地训练和推理;如果你在构建自己的扩散模型或进行微调(如 LoRA、ControlNet),建议保留原有归一化配置,避免误用 BN 或 IN 导致生成质量下降。
2025-04-07 23:57:49
930
原创 【PyTorch】矩阵乘法操作大全(dot、*、mm、bmm、@、matmul)详细讲解与对比
需求推荐用法向量点积普通二维矩阵乘法torch.mm()或批量矩阵乘法或matmul()任意维度乘法(推荐)按元素相乘。
2025-04-07 00:37:55
521
原创 PyTorch 实现图像版多头注意力(Multi-Head Attention)和自注意力(Self-Attention)
本文提供一个适用于图像输入的多头注意力机制(Multi-Head Attention)PyTorch 实现,适用于 ViT、MAE 等视觉 Transformer 中的注意力计算。
2025-04-06 23:54:27
848
1
原创 常见优化器介绍大全(含 AdamW、Lion、8bit 优化器、DAdaptation 等)
优化器名称是否8bit是否自适应LR内存效率是否需调学习率应用场景AdamW否是中是通用大模型训练AdamW8bit✅是高是多卡训练、节省显存✅✅是极高是单卡大模型微调Lion否否(仅动量)中是图像生成 / Transformer否否高是图像分类、传统 CNN✅否高是轻量部署否✅(动态)中否 ✅快速实验、免调参任务AdaFactor否是✅可选超大模型(如 T5、Switch)训练。
2025-04-06 12:35:53
622
原创 Stable Diffusion XL、SD3 与 Flux 模型常用优化器总结
模型常用优化器调度策略适配场景SDXL全量训练 & 微调SD3多卡大模型训练Flux.1微调 & 显存优化任务。
2025-04-06 12:28:01
750
原创 常见优化器总结(附原理、公式与优缺点)
优化器学习率自适应动量机制收敛速度参数调节适用场景SGD✘✘慢简单通用基础✘✔中中收敛困难时可用Adagrad✔✘前快后慢简单稀疏数据(NLP)RMSprop✔✘快需调γ\gammaγ非平稳目标Adam✔✔快稳定大多数深度模型AdamW✔✔快稳定。
2025-04-06 12:13:10
739
原创 Stable Diffusion 中 Cross Attention 实现原理解析(含代码讲解)
在 Stable Diffusion 的 U-Net 中,是将文本提示与图像特征对齐融合的关键模块,本文将结合一段 Python 实现代码,逐行解释其原理。
2025-04-06 11:43:29
828
1
原创 手把手带你理解 Non-Maximum Suppression(NMS)与 IOU 算法(Python实现)
非极大值抑制(NMS,Non-Maximum Suppression)就是:从多个候选框中,优先选择得分最高的框,并将与它重叠过大的其他框全部去除,重复此操作,直到只剩下相互独立的框。
2025-04-05 18:53:44
1011
原创 LeetCode :86. 分隔链表(Python)
给你一个链表的头节点 head 和一个特定值 x ,请你对链表进行分隔,使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。输入:head = [1,4,3,2,5,2], x = 3。你应当 保留 两个分区中每个节点的初始相对位置。输入:head = [2,1], x = 2。链表中节点的数目在范围 [0, 200] 内。输出:[1,2,2,4,3,5]
2025-03-18 09:43:33
320
原创 Vision Transformer (ViT) 详细描述及 PyTorch 代码全解析
输入图像被分割成多个固定大小的patch,每个patch经过线性投影变成嵌入向量,然后加上位置编码。接着,这些嵌入向量会和类别标签(class token)拼接在一起,输入到多个Transformer块中。每个Transformer块包含多头自注意力机制和前馈网络,最后用类别标签对应的输出来进行分类。
2025-03-09 23:55:53
1063
1
原创 Flow Matching 和 Rectified Flow的区别
是通过匹配目标向量场来训练CNF,比如通过最小化目标向量场和模型预测之间的差异。的核心思想是学习一个确定性轨迹,将数据分布转换为噪声分布,比如通过线性插值或者更复杂的路径。
2025-03-08 22:45:10
1436
原创 扩散模型中三种加入条件的方式:Vanilla Guidance,Classifier Guidance 以及 Classifier-Free Guidance
在生成过程中,模型从一个随机噪声开始,通过多次迭代去噪,最终生成有意义的数据,比如图像。这时候,如果需要生成特定类别的数据,比如生成猫的图像而不是狗的,就需要加入条件引导,控制生成的方向。这就是条件扩散模型的作用。而Classifier-Free Guidance则是在训练时,有时告诉模型生成猫,有时不告诉任何条件,然后在推理时通过调整条件和非条件的权重来加强条件的影响,比如让条件预测的权重更大,从而生成更符合要求的猫的图像。通过理解这三种方法的差异,可根据具体任务需求选择最适合的条件引导策略。
2025-03-08 22:18:22
1565
原创 torch 中 model.eval() 和 model.train() 的作用
在 PyTorch 中,的作用是将模型切换到(training mode),主要影响模型中某些特定层(如 Dropout 和 BatchNorm)的行为,使其在训练时启用随机性和动态统计量。
2025-03-08 21:51:03
490
原创 Triplet Loss原理及 Python实现
Triplet Loss 是一种用于训练特征嵌入(feature embedding)的损失函数,广泛应用于人脸识别、图像检索等需要度量相似性的任务。其核心思想是通过学习将同类样本的嵌入距离拉近,不同类样本的嵌入距离推远。优化的目标是让loss越小越好,使得 d ( d(a,p)−d(a,n)+margin 越小越好,直到d(a,p)−d(a,n)+margin小于等于0,就不优化了。当 d(a,p)+margin<d(a,n) 时,损失为 0,无需优化。margin:超参数,控制正负样本的最小间隔。
2025-03-08 11:30:17
1257
原创 LeetCode 102. 二叉树的层序遍历,BFS(广度优先搜索)(Python)
给你二叉树的根节点 root ,返回其节点值的 层序遍历。(即逐层地,从左到右访问所有节点)。输入:root = [3,9,20,null,null,15,7]输出:[[3],[9,20],[15,7]]输入:root = [] 输出:[]
2025-03-07 23:56:26
335
原创 理解BatchNorm和LayerNorm的区别和共同点,以及代码解释
BatchNorm:通过跨样本归一化稳定训练,适合图像等静态数据。LayerNorm:通过单样本归一化处理动态数据,适合序列模型。共同目标:加速收敛,减少对初始化的敏感度。【深度学习】BatchNorm、LayerNorm。
2025-03-06 21:52:06
1838
原创 LeetCode 718.最长重复子数组(动态规划,Python)
给两个整数数组 nums1 和 nums2 ,返回 两个数组中 公共的 、长度最长的子数组的长度。输入:nums1 = [1,2,3,2,1], nums2 = [3,2,1,4,7]输入:nums1 = [0,0,0,0,0], nums2 = [0,0,0,0,0]解释:长度最长的公共子数组是。
2025-03-05 17:03:06
360
原创 LeetCode 152.乘积最大子数组(Python)
给你一个整数数组 nums ,请你找出数组中乘积最大的子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。测试用例的答案是一个 32-位 整数。示例 1:输入: nums = [2,3,-2,4] 输出: 6 解释: 子数组 [2,3] 有最大乘积 6。示例 2:输入: nums = [-2,0,-1] 输出: 0 解释: 结果不能为 2, 因为 [-2,-1] 不是子数组。
2025-03-05 00:18:42
441
原创 除了DeepSpeed,在训练和推理的时候,显存不足还有什么优化方法吗?FlashAttention 具体是怎么做的
显存优化需结合算法、系统、硬件多层面策略,而FlashAttention通过算法创新显著降低了注意力机制的显存需求,是Transformer模型长序列训练的突破性优化。实际应用中,可混合使用多种方法(如混合精度+梯度累积+FlashAttention)实现最佳效果。
2025-03-04 23:53:30
1550
原创 LeetCode 200. 岛屿数量(Python)
下面是一种使用深度优先搜索(DFS)的解决方案。思路是:对于每个格子,如果是陆地(‘1’),则启动一次 DFS,将与该陆地相连的所有陆地都“淹没”(即改为 ‘0’),这样就保证不重复计数。每启动一次 DFS,岛屿数量加 1。
2025-03-04 00:19:45
738
原创 LeetCode 125. 验证回文串(python)
如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后,短语正着读和反着读都一样。给你一个字符串 s,如果它是 回文串 ,返回 true;输入: s = “A man, a plan, a canal: Panama”输出:true 解释:在移除非字母数字字符之后,s 是一个空字符串 “”。解释:“amanaplanacanalpanama” 是回文串。由于空字符串正着反着读都一样,所以是回文串。解释:“raceacar” 不是回文串。输入:s = “race a car”
2025-03-04 00:07:12
382
原创 LeetCode 21. 合并两个有序链表(Python)
比较 l1 与 l2 当前节点的值,将较小的节点接到新链表的尾部,并移动对应链表的指针。来遍历两个链表,比较各自的节点值,将较小值的节点连接到新链表上,直至其中一个链表为空,最后将剩余部分直接接到新链表后面。• 如果 l1.val 小于等于 l2.val,则将 l1 作为当前节点,并将 l1.next 指向递归合并后的结果。的核心思想是:比较两个链表的头节点,较小的那个作为合并后链表的头,然后递归合并剩下的部分。递归完成后,每一层调用都会返回合并后的链表头,最终返回整个合并后的链表。
2025-03-03 22:55:29
410
原创 torch.einsum 的 10 个常见用法详解以及多头注意力实现
torch.einsum 是 PyTorch 提供的一个高效的张量运算函数,能够用紧凑的 Einstein Summation 约定(Einstein Summation Convention, Einsum)描述复杂的张量操作,例如矩阵乘法、转置、内积、外积、批量矩阵乘法等。
2025-03-02 11:31:27
1588
原创 Q-Former 的设计与应用
Q-Former 是 BLIP2 框架中用于实现视觉语义与大规模语言模型(LLM)语义高效融合的关键模块。其主要思想在于利用一组可学习的“软提示”(Learnable Queries),直接将经过预训练的视觉编码器提取到的视觉特征,通过交叉注意力(Cross Attention)的机制转化为更适合后续 LLM 理解的视觉语义表示,从而有效地减少信息转换过程中可能产生的细粒度信息损失。
2025-03-01 23:56:13
1119
原创 Diffusion Transformers (DiT) 原理总结
Diffusion Transformers (DiT) 是一种基于Transformer架构的扩散模型,旨在替代传统的U-Net结构,解决其计算冗余、参数效率低和长程依赖建模不足的问题。DiT通过将VAE输出的潜在特征分块并展平成序列,结合ViT的标准架构来处理这些序列,从而提升了生成质量和计算效率。此外,DiT引入了自适应条件注入机制,通过改进的adaLN-Zero块有效融合时间步和类别信息,使得模型能更好地处理不同条件下的生成任务。实验结果表明,DiT在图像生成任务中展现了强大的性能,尤其在Image
2025-02-28 23:41:13
907
原创 ZeRO分布式训练策略
ZeRO(Zero Redundancy Optimizer)是微软提出的分布式训练优化框架,与传统数据并行方法不同,ZeRO通过将模型的参数、梯度和优化器状态分散到多个设备上,从而实现内存和计算资源的高效利用。
2025-02-28 00:54:09
1802
原创 为什么深度学习选择Tensor而非NumPy数组?核心优势深度解析
支持 GPU 加速:Tensor 提供对 GPU 的原生支持,能够有效加速计算,而 NumPy 则通常只能在 CPU 上运行。支持自动求导:深度学习模型的训练依赖于参数的优化,而 Tensor 提供了自动求导功能,避免了手动实现梯度计算的繁琐,NumPy 则不具备该功能。内存管理:Tensor 具有高效的内存管理机制,优化内存使用,而 NumPy 在大规模数据处理时可能存在内存开销较大的问题。分布式训练支持。
2025-02-27 23:25:00
1032
原创 LeetCode 20. 有效的括号
左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。每个右括号都有一个对应的相同类型的左括号。给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串 s ,判断字符串是否有效。1 <= s.length <= 104 s 仅由括号 ‘()[]{}’ 组成。解法 3:这是一个减少内存占用,增快速度的写法。输入:s = “()[]{}”输入:s = “([])”输入:s = “()”输入:s = “(]”
2025-02-25 23:47:52
476
原创 Leetcode : LCR 174. 寻找二叉搜索树中的目标节点(中序遍历,清晰图解)
1. 合并判断:我们首先检查 if not root or self.cnt == 0,这样可以避免在后续的递归中重复检查 self.cnt == 0。这种优化方式通过合并判断和提前终止递归,使得代码更加简洁,并且避免了重复的 if self.cnt == 0 检查,同时提升了执行效率。2. 早期返回:在 if self.cnt == 0 的地方,我们可以直接返回,避免继续递归其他子树,提升效率。记录结果: 若cnt=0,代表当前节点为第cnt大的节点,因此记录res=root.val;
2025-02-24 17:54:55
751
原创 Flux 结构解读
文本和图片模态的结合:Flux 利用预训练的文本编码器(如T5-XXL 和CLIP-L)提取文本的粗粒度和细粒度特征,将这些文本特征与 图片特征结合。粗粒度的文本信息用于调制生成过程,细粒度的文本特征与图片补丁序列一起作为输入,用于图片生成。潜在空间的噪声预测:模型在潜在的VAE空间中进行噪声预测,通过训练模型在从噪声到数据的转换路径中进行预测。双流和单流结构:模型首先将文本和图片数据输入双流模块,在此阶段,文本和图片作为独立的模态进行处理,并通过注意力机制在两者之间交换信息。
2025-02-24 16:07:44
410
原创 视频模型生成架构
给定输入视频序列和参考肖像图像,从视频中提取表情感知的面部标志点,这些标志点作为运动描述符,用于将表情传递到肖像上。本文的方法基于DiT(扩散Transformer)的条件视频生成框架,将这些表情感知的面部标志点直接集成到输入潜在空间中。该组件将表情感知的面部标志点编码为DiT框架的条件输入,从而使模型能够捕捉关键的低维视觉属性,同时保持面部特征的语义完整性。文本提示通过一个大语言模型编码后作为条件输入模型,引导模型通过对高斯噪声的多步去噪,输出一个视频的隐空间表示。1、HunyuanVideo 的架构。
2025-02-24 11:19:10
261
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人