論文閱讀 2025-8-9 [DiC, DropKey]

閑來沒事,找點近一年的論文看看

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中創建和管理的、最小的可部署的計算單元。它由一組、一…