【論文閱讀】DETR+Deformable DETR

可變形注意力是目前transformer結構中經常使用的一種注意力機制,最近補了一下這類注意力的論文,提出可變形注意力的論文叫Deformable DETR,是在DETR的基礎上進行的改進,所以順帶著把原本的DETR也看了一下。

一、DETR

DETR本身是一個使用transformer結構進行目標檢測的模型,在相關工作這一節作者提到使用了一種叫做集合預測的方法,集合預測不同于傳統的目標檢測方法,這類方法是直接輸出固定大小的包圍框的集合,而傳統的方法是不固定的包圍框再使用極大值抑制進行后處理。使用這一結構之后,設計DETR需要解決兩個關鍵問題,如何建立一個基于集合的損失函數以及集合內部的對應關系應該如何構建。

匹配關系的建立

DETR首先約定了自己能夠檢測到的目標的數量的最大值N,如果圖像中的物體超過了這個數量也沒用,只能檢測出N個物體。對于檢測出的N個物體,如何與groundtruth建立聯系是DETR需要解決的第一個問題,這里作者使用了匈牙利算法進行解決。簡單來說,匈牙利算法就是從全局角度找出一個讓整體效果最優的一對一匹配關系。傳統的目標檢測構建的實際上是一個多對多的關系,利用正負樣本來指導模型預測的包圍框應該屬于哪個真值。使用匈牙利算法,我們需要構建一個真值與預測之間的一對一關系,讓這個關系組的誤差最小化。對于預測的N個物體,我們一般假設N要大于實際存在的物體數量,超過的部分將包圍框的類別標記為空,即無物體。之后利用下面的式子進行優化:
在這里插入圖片描述
其中Lmatch可以理解為一個損失值,用于描述當我們將第i個物體與第б(i)個物體匹配時錯誤帶來的影響。這個誤差包括兩部分:類別的差異和包圍框的差異。類別的差異直接使用最簡單粗暴的負對數似然損失,我們希望預測的類別的可信度盡可能接近當前匹配的真值中的類別。而包圍框差異的部分,我們同時考慮交并比差異和包圍框邊界差異。交并比差異采用的是GIOU進行計算,它在原始 IoU 基礎上,再減去預測框與真實框在最小閉包矩形中未覆蓋區域的比重。而包圍框邊界差異指的則是包圍框的四個端點與真實值之間的差異。最終包圍框差異的計算公式為:
在這里插入圖片描述
在此基礎上得到的匈牙利算法的計算公式為:
在這里插入圖片描述

DETR模型設計

模型設計的部分,DETR首先采用一個CNN進行特征提取,提取好的特征圖送入transformer的編碼器部分進行處理,送入編碼器之前首先使用1×1卷積進行維度調整,假設原來的特征圖維度是C×H×W,調整的過程使用1×1卷積進行,從而將新的特征圖維度調整為d×H×W,之后這d張特征圖被調整為HW個d維的向量,這些向量會被作為token再加入2d位置編碼后送入編碼器。encoder的部分首先是這d個token自己之間計算自注意力,在多個編碼器塊之后得到提取結果。

解碼器的部分則是使用N個可學習query進行提取,這里的N對應的就是前面的N個物體。這N個查詢首先進行自注意力產生相互關系,之后再與encoder的輸出計算交叉注意力進行提取,這N個查詢的結果最終經過一個前饋神經網絡調整為N個預測結果。

在這里插入圖片描述

二、Deformable DETR

Deformable DETR是對DETR的改進,針對收斂慢、小物體識別不好的問題,但是從結果來看,其提出的可變形注意力貌似比本身模型更出名。簡單來說,可變形注意力是借鑒了CNN中可變形卷積的思想,讓transformer不是平等地關注所有像素,有些像素更加重要那我就只關注那一部分就完事了。
在這里插入圖片描述

可變形注意力機制

采用與DETR相同的結構,圖像的輸入首先會經過CNN進行特征的提取,在得到的特征圖的基礎上,可變形注意力會選取一部分點,這部分點的坐標是query自己學習得來的,在推理過程是固定的,除此之外,query還會提供一個偏移值,基于選擇的點的坐標,加上這個偏移值,就可以計算出采樣點周圍的幾個點,特征圖中這幾個點的特征向量被提取出來進行加權求和,從而得到可變形注意力的輸出。
在這里插入圖片描述
這一可變形注意力機制可以很好地與多尺度卷積結合起來,多尺度卷積中特征圖的大小是不同的,所以我們不能采用固定的坐標大小來表示采樣點的位置,這里作者設計了一個歸一化機制,通過歸一化讓位置和偏移量轉換為0-1的一個比例,這樣再在每一層根據大小得到一個可能是浮點數的坐標,這個坐標可能沒有直接對應的點,需要利用臨近點插值得到這個坐標對應的值,這樣將尺度引入,我們就得到了多尺度的可變形注意力。
在這里插入圖片描述

Deformable transformer 結構

使用了可變形注意力機制之后,DETR的整個輸入輸出都變了,變成了多尺度卷積產生的多尺度特征圖。在encoder的部分,編碼器的輸入和輸出都是多尺度的特征圖,并且編碼器輸出的大小和編碼器輸入的大小是一樣的,這部分使用可變形自注意力機制每個像素都會作為一個query參與到計算中,在添加尺度編碼之后參與可變形注意力的計算,也就是說這部分是對特征圖中的每個點,都計算一遍多尺度可變形注意力,最后疊加出來一個等大小的特征圖。在decoder的部分,作者使用了可變形自注意力和可變形交叉注意力。對于N個query,首先使用可變形自注意力機制進行交互,這個交互也是可變形的,主要體現在交互的過程不是一一對應的,每個query只和一部分query進行交互。雖然都叫做可變形自注意力,但是decoder部分使用的和encoder部分使用的還不一樣,decoder的部分的Deformable Self-Attention并不能很好地體現出采樣點這一概念,只保留了非全部交互這一概念。
在這里插入圖片描述

而可變形交叉注意力則是將每個query與encoder的輸出進行交互,得到交叉注意力結果,最終得到N個query查詢的結果。

整體理順一下可變形注意力在DETR中的機制。首先模型利用多尺度卷積得到不同尺度下的特征圖P3P4P5,之后這些特征圖會被先送入encoder的部分,編碼器中使用多尺度可變形自注意力機制,對于每一個尺度,每個點都是一個query與周圍的小部分點進行加權求和,同時不同尺度之間也會相互參與計算,比如說P3尺度下,同尺度采樣點直接參與計算,不同尺度的采樣點則是使用歸一化進行處理然后參與計算,由于加權求和并不改變向量長度,所以自注意力計算過程完全不改變輸入輸出的大小。經過處理,encoder部分使用多尺度可變形自注意力機制將特征圖進行了處理,輸出的是一個等大小但是特征更加豐富的特征圖。之后decoder的部分輸入是N個可學習的object query,這部分query首先進行可變形自注意力機制,每個query和小部分query進行加權求和,之后所有的object query都作為query與encoder輸出的多尺度特征圖進行可變形多尺度交叉注意力計算,每個query會得到一個向量,這個向量的長度等于特征圖的深度,最后所有的query都掃一遍,就可以拼成一個二維矩陣,這個二維矩陣再經過后續計算送入不同的head完成不同的下游任務。

可以看到,雖然打著可變形注意力的幌子,但是扣細節的話可以發現,可變形注意力幾乎是重寫了傳統transformer中qkv的結構,我們很難找到真正意義上的qkv三個內容,可變形這個詞,主要針對的就是讓點不是和全部剩余點進行交互,而是讓點和小部分點進行交互,圖像中并不是所有的內容都是完全有意義的,我只需要關注真正有價值的東西即可,剩余的是在徒增開銷。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/904381.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/904381.shtml
英文地址,請注明出處:http://en.pswp.cn/news/904381.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

大模型在宮頸癌診療全流程預測與應用研究報告

目錄 一、引言 1.1 研究背景與意義 1.2 研究目的與創新點 二、大模型預測宮頸癌術前風險 2.1 術前數據收集與預處理 2.2 預測模型構建與算法選擇 2.3 術前風險預測指標與案例分析 三、大模型輔助制定術中方案 3.1 術中風險動態監測與預測 3.2 基于預測的手術方案優化…

【Python 文件I/O】

Python 的文件 I/O 操作是數據處理的基礎技能,涉及文件的讀寫、路徑管理、異常處理等核心功能。以下是文件 I/O 的核心知識點: 一、基礎文件操作 1. 打開文件 # 通用模式:r(讀)/w(寫)/a(追加) b(二進制)/t(文本,默認) f open(…

Twin Builder 中的電池等效電路模型仿真

電池單元熱設計挑戰 電池熱管理的主要挑戰之一是確保溫度低于最大工作限值。較高的溫度會導致效率降低、加速老化和潛在的安全隱患。工程師必須了解電池產生的熱量,才能充分設計冷卻系統。 了解和預測電池模塊的熱行為需要將電池的熱損耗與電池單元的電氣機械特性…

一種基于條件生成對抗網絡(cGAN)的CT重建算法

簡介 簡介:該文提出了一種基于條件生成對抗網絡(cGAN)的CT重建算法,通過引入CBAM注意力機制增強網絡對關鍵特征的提取能力,有效解決了CT成像中因噪聲干擾導致的重建精度下降問題。實驗采用固體火箭發動機模擬件數據集,將正弦圖分為五組并添加不同程度的噪聲進行訓練。結…

【Redis篇】linux 7.6安裝單機Redis7.0(參數優化詳解)

💫《博主主頁》: 🔎 CSDN主頁 🔎 IF Club社區主頁 🔥《擅長領域》:擅長阿里云AnalyticDB for MySQL(分布式數據倉庫)、Oracle、MySQL、Linux、prometheus監控;并對SQLserver、NoSQL(MongoDB)有了…

【BUG】‘DetDataSample‘ object has no attribute ‘_gt_sem_seg‘

問題: 使用mmdetection框架使用COCO格式訓練自定義數據集時,其中模型使用HTC模型時出現如下問題: AttributeError: ‘DetDataSample’ object has no attribute ‘_gt_sem_seg’. Did you mean: ‘gt_sem_seg’? results self(**data, mode…

Java日期格式化方法總結

在Java中,日期格式化主要涉及將 Date、LocalDate、LocalDateTime 等日期時間對象轉換為指定格式的字符串,或將字符串解析為日期對象。以下是兩種常用的日期格式化方式: 一、使用 SimpleDateFormat(舊版API,Java 8之前&…

【NLP】27. 語言模型訓練以及模型選擇:從預訓練到下游任務

語言模型訓練:從預訓練到下游任務 本文詳細講解大型語言模型(LLMs)是如何訓練的,包括不同的模型類型(Encoder、Decoder、Encoder-Decoder),以及各類預訓練任務的原理、對比、適用場景&#xff0…

通過 ModernBERT 實現零樣本分類的性能提升

文本分類 是機器學習中最基礎的任務之一,擁有悠久的研究歷史和深遠的實用價值。更重要的是,它是許多實際項目中不可或缺的組成部分,從搜索引擎到生物醫學研究都離不開它。文本分類方法被廣泛應用于科學論文分類、用戶工單分類、社交媒體情感分…

基于SpringBoot網上書店的設計與實現

pom.xml配置文件 1. 項目基本信息(沒什么作用) <groupId>com.spring</groupId> <!--項目組織標識&#xff0c;通常對應包結構--> <artifactId>boot</artifactId> <!--項目唯一標識--> <version>0.0.1-SNAPSHOT</ve…

STM32H743單片機實現ADC+DMA多通道檢測+事件組

在上個文章基礎上改用事件組進行處理&#xff0c;以便實時任務。 stm32cubeMX自動生成代碼 osEventFlagsId_t adctestEventHandle; const osEventFlagsAttr_t adctestEvent_attributes {.name "adctestEvent" };adctestEventHandle osEventFlagsNew(&adctest…

AI Agent開發第57課-AI用在銷售歸因分析場景中-用隨機森林從0構建自己的“小模型”

開篇 在前一篇《機器學習的基礎-線性回歸如何應用在商業場景中》里,我們說到了如果我們只是簡單的分析和預測一下投入廣告費用和銷售額增長是否存在必然關系,我們用了線性回歸法得到了分析,得到的分析結果極其精準,以及提到了:如果當銷售因素是非線性的并且有著額外一些如…

Linux運維——Vim技巧三

Vim技巧 一、按 按模 模式 式匹 匹配 配及 及按 按原 原義 義匹 匹配1.1、調整查找模式的大小寫敏感性1.2、按正則表達式查找時&#xff0c;使用 \v 模式開關1.3、按原義查找文本時&#xff0c;使用 \V 原義開關1.4、使用圓括號捕獲子匹配1.5、界定單詞的邊界1.6、界定匹配的邊…

NLTK庫(1): 數據集-語料庫(Corpus)

1.簡介 NLTK &#xff08;Natural Language Toolkit&#xff09; 是自然語言處理&#xff08;NLP&#xff09;任務的 Python 庫&#xff0c;內置大量NLP數據集與計算包。 NLP數據集也叫語料庫 (Corpus), 若無特殊格式或標記&#xff0c;數據集通常來自txt等文本文件。 本教程…

spring詳解-循環依賴的解決

Spring循環依賴 重點提示&#xff1a; 本文都快寫完了&#xff0c;發現“丈夫” 的英文是husband… 在“②有AOP循環依賴” 改過來了&#xff0c;前面用到的位置太多了就沒改。我是說怎么idea的hansband英文下面怎么有波浪線。各位能夠理解意思就行&#xff0c;英文拼寫不要過…

隨機快速排序算法

一、隨機化原理 經典快速排序 選取固定的“樞軸”&#xff08;通常取第一個或最后一個元素&#xff09;&#xff0c;在最壞情況下&#xff08;如已經有序&#xff09;會退化為 。 隨機快速排序 在每次分區前隨機地從當前區間 [p..r] 中等概率選取一個樞軸&#xff0c;將它與末…

數據可視化與分析

數據可視化的目的是為了數據分析&#xff0c;而非僅僅是數據的圖形化展示。 項目介紹 項目案例為電商雙11美妝數據分析&#xff0c;分析品牌銷售量、性價比等。 數據集包括更新日期、ID、title、品牌名、克數容量、價格、銷售數量、評論數量、店名等信息。 1、數據初步了解…

美團Java高級配送員面經分享|玩梗版

美團Java高級配送員面經分享&#xff01;純玩梗&#xff01;

在windows中卸載mysql

一、停止服務 winR快捷鍵 -->> 輸入services.msc -->> 進入服務窗口關閉Mysql服務 二、卸載程序&#xff08;可選&#xff09; 如果是通過解壓壓縮包安裝的則跳過這一步&#xff0c;如果是使用.msi文件驅動安裝則需要卸載 控制面板 -->> 程序和功能 -->…

https://juejin.cn/editor/drafts/7262346366541070395

.Net Core從零學習搭建權限管理系統教程 推薦一組WPF自定義控件開源項目。 項目簡介 這是基于WPF開發的&#xff0c;為開發人員提供了一組方便使用自定義組件&#xff0c;并提供了各種常用的示例。 包含組件&#xff1a;數據表格、屬性列表、樹形列表、選色器、單選框列表、…