闲来没事,找点近一年的论文看看

1. DiC: Rethinking Conv3x3 Designs in Diffusion Models

✨ 一句话总结:DiC用沙漏架构+稀疏跳跃+条件门控重构纯Conv3x3扩散模型,在速度碾压Transformer的同时性能反超,为实时生成任务开辟新路径。

背景

扩散模型现状:

  • 主流架构从CNN-注意力混合(如U-Net)转向纯Transformer(如DiT、U-ViT),生成质量优异但推理速度慢(自注意力计算开销大)。
  • 加速尝试(如高效注意力、SSM架构)效果有限,难以满足实时需求。

卷积的潜力:

  • Conv3x3是硬件友好的极速操作(支持Winograd加速),但传统设计在扩散模型中性能不足(感受野有限,扩展性差)。

可以看出,这篇论文就是要重新设计CNN的合适结构去解决Diffusion推理慢的问题。

核心问题

如何设计纯Conv3x3架构,使其在扩散模型中同时实现:

✅ 高生成质量(对标Transformer)
✅ 极快推理速度
✅ 强可扩展性(模型增大时性能持续提升)

Motivation

  • 卷积的硬件效率远超自注意力,但现有纯Conv3x3扩散模型性能落后。
  • 需系统性改进架构与条件机制,释放Conv3x3在生成任务中的潜力。

架构设计

(1)作者死磕conv3x3

选择3x3卷积作为基础操作单元,是因为它速度极快,硬件(GPU)和算法(如Winograd)对其进行了极好的优化,计算量远低于其他卷积类型(如深度可分离卷积),并行度高且内存访问开销小,简单说就是“性价比”最高的基础模块;我们的目标正是仅用这个最简单的积木块来搭建高性能模型。在设计中,我们借鉴了老牌扩散模型(如DDPM的U-Net)中的卷积块结构,但进行了关键简化:直接移除自注意力模块,只保留纯卷积操作。具体而言,每个基本块由GroupNorm、SiLU激活、3x3卷积、GroupNorm、SiLU激活和3x3卷积顺序组成,并采用残差连接(输入直接加到输出上)且通道数保持不变,这构成了纯卷积扩散模型的起点,既保持了结构的简洁高效,又确保了高吞吐量和硬件友好性。

在这里插入图片描述
(2)模型结构

现在基础Block设计好了,那么整体的网络应该怎么处理呢?

作者探讨了几种网络结构。

(a) 直筒型 (Isotropic): 像 DiT/Transformer 那样,从头到尾特征图大小不变(不上下采样),就是一层层堆叠基本块。结果:最差。 因为 Conv3x3 感受野太小,堆很深才能看到全局,效率低效果差。
(b) 带跳跃的直筒型 (Isotropic + Skip): 还是特征图大小不变,但在堆叠的块之间加长距离跳跃连接(像 U-ViT)。结果:比纯直筒好点,但还不够。
(c)沙漏型/U-Net (U-Net Hourglass): 经典编码器-解码器结构。编码器一路下采样(缩小图,增大感受野),解码器一路上采样(放大图),中间还有密集的跳跃连接(把编码器信息直接传给解码器对应层)。结果:明显最好!

但作者发现,当模型变大变深时,传统 U-Net 这种每层都跳的密集跳跃太“奢侈”了,解码器要处理太多跳过来的信息,又费算力又占内存,很多跳跃其实没多大用,反而拖累模型变大。于是作者想了个新招:稀疏跳跃连接。意思就是别每层都跳,改成隔几层跳一次(比如只跳第一层到第一层、第四层到第四层,中间的二三层不跳)。这样好处很大:跳的连接少了,计算和内存开销大减;去掉没用的跳跃,信息传递更高效;

在这里插入图片描述

(3) 剩下的一些小改进

  1. 个性化条件嵌入 (针对沙漏式网络有效)

老模型(如DDPM)采用单一条件嵌入表(即“一个词表通吃”)为整个U-Net结构提供提示语,但这忽略了U-Net的层级特性:编码器早期层处理高分辨率细节特征(如边缘和纹理),而解码器后期层处理低分辨率整体特征(如物体形状和场景),二者任务迥异,如同让小学生和大学生共用同一本教材,必然导致效果打折;为此,DiC引入分阶段专属词表(Stage-Specific Embeddings)的改进方案,即为U-Net中每个分辨率相同阶段(一组基本块)配置独立的条件嵌入表,使编码器底层能获取适配细节理解的提示、解码器高层能获取适配整体把握的提示,从而显著提升性能(FID指标从11.49降至10.07),而代价仅增加少量参数(14M,占模型总量2%)和计算量(12M FLOPs),相对于整体收益几乎可忽略不计,性价比极高。

  1. 在哪里设置条件输入?(借助DiT的成功经验)

有两种选择:(1)在模型第一个conv3x3的前面输入(2)在模型第二个conv3x3的前面输入
作者发现在第二个前面会好一点点 (就是图哪里scale and shift的地方)

那么选好了输入的地方,该怎么输入呢?

  • 为增强条件响应的灵活性,DiC直接借鉴了Diffusion Transformer (DiT) 中的AdaLN机制,引入条件门控(Conditional Gating),其核心不仅对特征图进行常规的缩放(scale)和平移(shift),还额外学习一个通道维度的门控向量,如同为每个特征通道配置可动态调节的“小开关”,实现更精细的特征调控,使模型能自适应不同条件(如图像类别),进一步将FID降至6.54;尽管该设计非原创,但因其高效易集成且收益显著,成为提升模型性能的关键补充。
  1. 采用GELU而不是SiLU (借助ConvNeXt的成功经验)

作为一项次要但有效的优化,DiC 模型将原先广泛用于 CNN 的 SiLU(Swish)激活函数统一替换为 Transformer 领域标配的 GELU;这一改动直接借鉴了 ConvNeXt 的成功经验(该工作通过引入 Transformer 风格组件显著提升了 CNN 性能),在 DiC 的纯卷积结构中验证有效——尽管提升幅度有限,却能稳定优化生成质量(FID 指标从 6.54 降至 6.26);作者虽知存在更新的激活函数候选,但为兼顾实现简单性与训练稳定性,最终选择了经过大规模实践验证的 GELU,以最小代价换取可靠收益。

2. DropKey

最近在小红书刷到一个特别有意思的帖子,为什么自己写的多头自注意力机制不够torch自带的MultiheadAttention好呢?

贴主给出了需要注意的点:

  • 多头注意力的Dropout并不是drop掉输出,而是drop掉attn_weight

这个Trick是cvpr2023 DropKey这篇论文提出的,讲了ViT通过Drop掉权重(也就是drop掉Key,为什么不叫DropWeight,我不懂)而不是softmax之后的值。

在这里插入图片描述

具体的实现是很简单的几行代码:

在这里插入图片描述

我看了一下torch实现的代码,现在的drop确实是drop掉weight,而不是softmax之后的值。

这篇论文还讲了蒙特卡洛算法来bridge因为drop导致的train和test之间的代沟,我看一下这部分的内容,额外学习一下。

同时作者还论证了随着层数的增加,dropout的概率应该降低,这让模型学习得更好:

在这里插入图片描述
小的熵值表示模型更聚焦于sparse patches,由于class token对于聚合整张图的信息有帮助,这里计算它的熵作为模型提取全局信息能力的度量。从这个图可以看出,当Dropout变小的时候,模型提取全局信息能力更强,因此后续的层dropout应该小一些。

  • 这里实验的具体实现应该就是:计算 cls-token 和其他image patch token的attention weight,因为weight是0-1的一个概率,我们可以把它输入进去这个熵的公式,然后得到这个token的熵,最后所有token的熵求一个平均。如果是多头注意力,那么就每个头再求一次平均。
    • 低熵值:意味着向量中只有少数几个权重值很大,其他都很小。这表示该注意力头高度聚焦在少数几个关键的图像块上(sparse patches)。
    • 高熵值:意味着向量中所有权重值都比较平均。这表示该注意力头将注意力平滑地分散在更多的图像块上,关注的是更全局的特征。

在这里插入图片描述

但是作者页论证了dropkey的一些不足:

  • 未对齐的期望 [推理阶段没有 Dropout] 会对模型产生一定的负面影响,因此作者使用两种方法来对齐期望。
    • 第一种,用蒙特卡罗法估算,通过执行多次随机下降,并在每次下降操作后计算注意力权重矩阵。 最后,将计算出的多重权重矩阵的平均值用作下一步的输入。
    • 第二个,在没有 DropKey 的情况下微调模型,作为 DropKey 训练后的额外阶段。作者通过实验验证第二种策略的性能更好。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/93666.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/93666.shtml
英文地址,请注明出处:http://en.pswp.cn/web/93666.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

16进制pcm数据转py波形脚本

将16bit的单声道或者双声道的16进制的pcm数据转成波形图片出来分析数据,python脚本如下:import numpy as np import matplotlib.pyplot as plt# 1: 单声道,2:双声道 PCM_CHANNELS 2# 你提供的十六进制数据 hex_str ""…

MySQL的锁:

目录 锁的介绍: 并发事务访问相同数据可以分为以下几种情况: 都是进行读操作: 都是进行写操作: 有读操作也有写操作: 读锁、写锁: 读锁: 写锁: 按照锁粒度分类:…

一道同分排名的SQL题

1 概述遇到这样一道题:(1) 有一张学生课程分数表,字段有:ID、名称、性别、科目、分数。(名称换为学号更能标识唯一学生,但名称好阅读,故这里先认为名称可以唯一标识学生。)(2) 用一个SQL&#x…

ICCV 2025 | Reverse Convolution and Its Applications to Image Restoration

标题:Reverse Convolution and Its Applications to Image Restoration作者:Xuhong Huang, Shiqi Liu, Kai Zhang, Ying Tai, Jian Yang, Hui Zeng, Lei Zhang单位:Nanjing University, The Hong Kong Polytechnic University, OPPO Research…

mysql启动超时

mysql启动超时: 管理员打开CMD后允许net start MySQL57, 启动超时检查错误日志 MySQL 启动失败的具体原因通常记录在错误日志中。 日志路径(根据你的安装方式可能不同): 默认位置:C:\ProgramData\MySQL\MyS…

Flink Stream API 源码走读 - window 和 sum

本文核心观点 核心观点:WindowedStream 是一个"假流",它比 KeyedStream 更虚,只是一个 API 的过渡器,不是真正意义上的 DataStream,需要调用函数回归。 虚拟化时刻:从真实流到虚拟流 KeyedStream…

蓝牙 GFSK RX Core 架构解析

GFSK RX Core分为以下几个模块: 1.Frequency offset compensation CORDIC 2.A low pass filter 3.A power estimator for packet detection,RSSI and digital gaion computation for DPSK path 4.A demodulator implemented as Phase Shift Discriminator 5.A drequ…

微电网管控系统中python多线程缓存与SQLite多数据库文件连接池实践总结(含源码)

1. 引言 在分散的微电网能源管理场景中,系统采用集中式云平台模式,为100个独立微电网用户提供高并发数据写入服务面临三大挑战:用户数据隔离、I/O性能瓶颈、多线程安全性。本文揭示一种新式的分片锁+三级缓存+sqlite多数据库文件连接池架构,在保持SQLite轻量级优势的同时,…

InfluxDB 开发工具链:IDE 插件与调试技巧(一)

引言 ** 在当今数字化时代,时间序列数据的处理与分析在众多领域中都扮演着至关重要的角色。无论是物联网设备产生的海量传感器数据,还是金融市场中实时波动的交易数据,又或是服务器运维过程中不断产生的性能指标数据,这些都属于…

计算机网络-IPv6

1、IPv6基础IPv4与IPv6的对比:问题IPv4的缺陷IPv6的优势地址空间IPv4地址采用32比特标识,能提供的地址数量是43亿,分配很不均衡。针对IPv4的地址短缺问题,有几种解决方案:无类别域间路由CIDR(Classless Int…

整体设计 之“凝聚式中心点”原型 --整除:智能合约和DBMS的深层融合 之2

摘要(CSDN的AI助手自动生成的)本文提出了一种基于"整除"数学原型的智能合约与DBMS融合架构设计,将SQL查询语句的四个关键段(SELECT、FROM、WHERE、BY)分别映射到整除运算的四个要素(商、被除数、…

【赵渝强老师】TiDB表数据与键值对的映射关系

TiDB实例将表中的每一行数据映射成RocksDB中的键值对,则需要考虑如何构造Key和Value。首先,OLTP场景下有大量针对单行或者多行的增、删、改、查等操作,要求数据库具备快速读取一行数据的能力。因此,对应的Key最好有一个唯一ID&…

带操作系统的延时函数

delay.c:#include "delay.h"/*** brief 微秒级延时* param nus 延时时长,范围:0~233015* retval 无*/ void delay_us(uint32_t nus) {uint32_t ticks;uint32_t tcnt 0, told, tnow;uint32_t reload SysTick->LOAD; //重…

ES Module 和 CommonJS的区别

ES Module(ESM,ES6 模块系统)和 CommonJS 是 JavaScript 中两种主流的模块规范,分别用于现代前端和 Node.js 环境(早期),它们在语法、加载机制、特性等方面有显著区别。以下是详细对比&#xff…

猫头虎AI分享|一款智能量化交易系统:QuantCell,从数据收集到策略执行全流程自动化

猫头虎AI分享|一款智能量化交易系统:QuantCell,从数据收集到策略执行全流程自动化 在当今金融市场中,量化交易系统已经成为越来越多投资者和机构的重要选择。无论是股票、期货还是加密货币,自动化交易与人工智能的结合…

直播美颜SDK架构揭秘:动态贴纸功能的实现原理与性能优化

如今,美颜SDK 已经不再只是“磨皮、美白”的基础工具,而是逐渐进化为一个涵盖 人脸识别、实时特效、动态贴纸交互 的复杂技术体系。尤其是 动态贴纸功能 的加入,让主播与观众之间的互动更加生动有趣,也成为提升用户粘性与平台差异…

Docker安装CDC

Docker安装CDC拉取镜像离线形式安装上传文件并创建docker-compose.yml把镜像加载到docker中启动容器连接数据库创建账号,并给账号授权设置wal_level确认wal_level的值创建链接查询连接状态使用kafdrop消息中看不到修改之前的信息怎么办补充拉取镜像 docker pull co…

如何在win服务器中部署若依项目

一、安装jdk的环境: 这一步很简单,直接拿到安装包双击安装即可。 二、配置jdk的环境变量默认安装的路径为:C:\Program Files (x86)\Java\jdk1.7.0_51安装完成之后进行环境变量配置右击计算机(此电脑)点击属性点击高级系…

CSS从入门到精通完整指南

第一部分:CSS基础入门1.1 什么是CSSCSS(层叠样式表,Cascading Style Sheets)是用于描述HTML文档外观和格式的样式语言。CSS将内容与表现分离,让HTML专注于内容结构,CSS专注于视觉效果。1.2 CSS语法结构选择…

重温k8s基础概念知识系列二(Pod)

文章目录1、Pod概念2、K8s 中的 Pod 的两种用法3、定义Pod4、Pod的创建资源5、Pod 模板6、容器探针7、总结干货8、 K8s Pod 经典面试题速查表Pod是Kubernetes中最小的单元: 1、Pod概念 Pod 是可以在 Kubernetes中创建和管理的、最小的可部署的计算单元。它由一组、一…