DETR: End-to-End Object Detection with Transformers論文學習

論文地址:https://arxiv.org/pdf/2005.12872
代碼地址:https://github.com/facebookresearch/detr
相關學習視頻:https://space.bilibili.com/94779326/lists?sid=1531941

標題前言:

DETR 是 Facebook 團隊于 2020 年提出的基于 Transformer 的端到端目標檢測,是Transformer在目標檢測的開山之作 – DEtection TRansformer。
相比于傳統的RCNN、Fast-RCNN、Faster-RCNN、YOLO系列,DETR有以下幾個優點:

  1. 無需NMS后處理2
  2. 無需設定anchor
  3. 高效并行預測。

整個由網絡實現端到端的目標檢測實現,大大簡化了目標檢測的 pipeline。DETR在COCO 數據集上效果與 Faster RCNN 相當,在大目標上效果比 FasterRCNN 好,且可以很容易地將 DETR遷移到其他任務例如全景分割。

1. 基本結構

DETR的總體框架如圖,分為三個部分,分別是:

  1. 提取圖像的特征的backbone
  2. 使用了transformer的編碼器解碼器
  3. prediction heads:FFN,前饋神經網絡給出最后的類別和Box信息的預測

在這里插入圖片描述
首先使用傳統的卷積神經網絡(CNN)主干網絡來學習輸入圖像的二維表示。隨后將特征信息加上位置編碼送入encoder,這里的encoder進行特征序列構造。在decoder中會首先初始化100個向量(object queries),這些向量通不斷學習encoder構造的特征序列,再經過prediction heads將解碼器的每個輸出嵌入傳遞給一個共享前饋網絡(FFN),該網絡會預測檢測結果(類別和邊界框)或者 “無目標” 類別。

2. 基礎的backbone

CNN:圖像經過 CNN 學習后,得到 (2048,H/32,W/32) 的輸出,然后和 position encoding 相加,輸入 transformer-encoder

3. Encoder和Decoder

不同于原始的 transformer ,DETR 在以下方面對其進行修改
1)positional embeding: DETR 的只作用于 encoder 的 Q 和 encoder-decoder K,原始 transformer 作用于所有的 Q、K、V
2)object queries:DETR 的 object queries 一次性全部輸入 decoder,而原始 transformer 是通過 shifted right 一個一個地移動
在這里插入圖片描述
借用一張知乎對比圖:
在這里插入圖片描述
Object queries 是 N 個 learnable embedding,訓練剛開始時可以隨機初始化,比如 transformer-encoder 輸出是 (B, N’, C),則 Object queries 生成后得到大小為 (B, N, C)數,相當于用 Object queries 去查詢 transformer-encoder 輸出的目標類別和 box,N 一般取 100
訓練時隨機初始化 Object queries,訓練過程中學習這個 embedding,訓練完成后,embedding 確定下來,后續推理直接使用

4. FNN

prediction heads是DETR的分類器與回歸器,其實就是對decoder提取出來的100個目標進行FFN操作,FFN采用全連接,經過FFN分別得到種類和邊界框參數,將100個預測結構object predictions和真實框ground truth box之間通過匈牙利算法進行二分匹配,一個真實框只匹配一個預測結果,其它的預測結果作為背景進行擬合。最后通過反向傳播來優化模型參數。

5. loss和匈牙利算法

集合到集合的預測看起來非常直接,但是在訓練的過程就會遇到一個問題,就是如何把預測出來的100個框與ground truth做匹配,然后得到損失。DETR就非常暴力,直接利用pd(predicttion)與gt(ground truth)按照最小權重做一對一匹配,剩余的框全部當做背景處理。

6. 總結

在本文閱讀過程中,寫作其實還是很絲滑的,自己來回閱讀,大致看懂了一些,剩下翻閱博客繼續閱讀。

  1. 目標檢測 DETR(2020)
  2. 目標檢測 Deformable DETR(2021)詳細解讀
  3. DETR:End-to-End Object Detection with Transformers
  4. 目標檢測Python代碼 目標檢測detr

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

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

相關文章

LeetCode 24反轉鏈表

單鏈表反轉:詳細解析與代碼實現 在數據結構的學習過程中,鏈表是一個非常重要且有趣的部分,而單鏈表的反轉操作更是常考的基礎知識點。今天就來和大家詳細講講如何實現單鏈表的反轉,并通過代碼示例來加深理解呀。 題目 給定單鏈…

Redis學習筆記之——學習計劃

Redis——Remote Dictionary Server,開源、基于內存、速度快、key-value... Redis做為一個高性能的鍵值存儲系統,廣泛應用于緩存、會話存儲、分布式鎖以及其他需要快速訪問的數據場景中。熟悉掌握redis,似乎已成為廣大碼農們必備的一項技能。…

網絡安全教學博客(二):常見網絡安全威脅剖析

在上一篇博客中,我們了解了網絡安全的基礎概念和重要性。今天,讓我們深入探討一下常見的網絡安全威脅,以便我們能夠更好地識別和防范它們。 惡意軟件(Malware) 病毒(Virus):病毒是一…

Vue3狀態管理:Pinia架構設計分析

Vue3狀態管理:Pinia架構設計分析 介紹 在Vue.js開發中,狀態管理是一個非常重要的部分。隨著Vue3的發布,Pinia作為一種新的狀態管理架構也相繼問世。本文將對Pinia架構進行深入分析,幫助讀者了解其設計原理、特點以及在實際項目中的應用。 架構…

【IDEA】啟動報錯

今天啟動IDEA報錯 報錯信息: Cannot connect to already running IDE instance. Exception: Process 5,444 is still running 打開任務管理器,關掉進程ID5444的任務

socket編程UDP-實現停等機制(接收確認、超時重傳)

在下面博客中,我介紹了利用UDP模擬TCP連接、按數據包發送文件的過程,并附上完整源碼。 socket編程UDP-文件傳輸&模擬TCP建立連接脫離連接(進階篇)_udp socket發送-CSDN博客 下面博客實現的是滑動窗口機制: sock…

uniapp小程序的錨點定位(將頁面滾動到目標位置)

小程序中,a頁面跳轉到b頁面,跳轉后滾動定位到b頁面的特定位置。 1.uni.pageScrollTo傳遞一個scrollTop參數可以滾動到特定位置。2.可以通過 uni.createSelectorQuery()等獲取定位元素的位置信息。3.uni.getSystemInfoSync()獲取設備的導航欄和狀態欄高度…

php基礎:命名空間

1.PHP 命名空間可以解決以下兩類問題: 1.用戶編寫的代碼與PHP內部的類/函數/常量或第三方類/函數/常量之間的名字沖突。 2.為很長的標識符名稱(通常是為了緩解第一類問題而定義的)創建一個別名(或簡短)的名稱,以提高源代碼的可讀…

分布式 CAP理論 總結

前言 相關系列 《分布式 & 目錄》《分布式 & CAP理論 & 總結》《分布式 & CAP理論 & 問題》 分布式 分布式的核心是將大型業務拆解成多個子業務以使之在不同的機器上執行。分布式是用于解決單個物理機容量&性能瓶頸問題而采用的優化手段&#xf…

python xpath解析筆記

與bs4的區別 bs4有很多屬性和方法,而xpath只有一個方法,是通過不同的xpath表達式實現很多功能的。 html例子 定位 tree.xpath(‘/html/head/title’) 返回列表。 開頭的斜杠表示從根節點遍歷。 中間的斜杠表示層級。(相當于bs4中的>…

Q學習(Q-Learning)詳解

?作者簡介:2022年博客新星 第八。熱愛國學的Java后端開發者,修心和技術同步精進。 🍎個人主頁:Java Fans的博客 🍊個人信條:不遷怒,不貳過。小知識,大智慧。 💞當前專欄…

樹狀數組詳解

概述 樹狀數組(Binary Indexed Tree,簡稱BIT),是一種數據結構,用于處理區間查詢和更新問題。它是一種可以高效地在對數級別時間復雜度內進行單點更新和區間查詢的數據結構。樹狀數組通常用于解決以下兩類問題&#xf…

freeswitch(開啟支持MCU視頻會議,使用mod_av模塊)

親測版本centos 7.9系統–》 freeswitch1.10.9 本人freeswitch安裝路徑(根據自己的路徑進入) /usr/local/freeswitch/etc/freeswitch場景說明: 有些場景想使用視頻會議MCU融合畫面進行開會使用方法: 第一步:下載插件 yum install -y epel-release yum install

【大數據技術基礎】【記錄Ubuntu 16.04升級到18.04】Ubuntu的一個版本升級到另一個版本

在 Ubuntu 操作系統中進行軟件更新和系統升級 Ubuntu Kylin 16.04 LTS 系統進行系統升級到 Ubuntu 18.04.6 LTS 版本 升級提示:系統彈出提示框,告知用戶有新版本的 Ubuntu 可用,詢問用戶是否想要升級。 認證窗口:顯示了一個認證…

這是一個vue3 + scss的數字滾動效果

介紹: 當數字變化時&#xff0c;只改變變化的數字位&#xff0c;其余的不變&#xff0c;可以遞增、遞減、驟變、負數也可以&#xff0c;但是樣式要根據具體的項目需求去改&#xff1b; 效果1、增加數字&#xff1a; 效果2、減少數字&#xff1a; 使用方法&#xff1a; <te…

TortoiseGit的下載、安裝和配置

一、TortoiseGit的簡介 tortoiseGit是一個開放的git版本控制系統的源客戶端&#xff0c;支持Winxp/vista/win7.該軟件功能和git一樣 不同的是&#xff1a;git是命令行操作模式&#xff0c;tortoiseGit界面化操作模式&#xff0c;不用記git相關命令就可以直接操作&#xff0c;讀…

最新版Chrome瀏覽器加載ActiveX控件之Adobe PDF閱讀器控件

背景 Adobe PDF閱讀器控件是一個ActiveX控件&#xff0c;用于在Windows平臺上顯示和操作PDF文件。它提供了一系列方法和屬性&#xff0c;可以實現對PDF文件的加載、顯示、搜索、打印、保存等操作。 allWebPlugin中間件是一款為用戶提供安全、可靠、便捷的瀏覽器插件服務的中間件…

linux在沒網的情況下如何校驗時間 超詳細拿來即用

一、沒有校時服務器的話 1、手動修改 sudo date --set"2024-06-17 13:44:00"二、有校時服務器的話 1、手動校時 ntpdate 14.193.73.22、自動校時 寫一個校時服務腳本 14.193.73.2 是校驗時間服務器 #!/bin/sh while true dontpdate 14.193.73.2sleep 5;hwclock…

源碼分析之Openlayers中的控件篇Control基類介紹

概述 Openlayers 中內置了9類控件&#xff0c;這9類控件都是基于Control類&#xff0c;而Control類則是繼承于BaseObject類&#xff0c;如下圖所示&#xff1a; 如上&#xff0c;這9類控件分別是&#xff1a; Attribution&#xff1a;屬性控件FullScreen:全屏控件MousePositi…

計算機網絡知識點全梳理(二.HTTP知識點總結)

目錄 HTTP基本概念 HTTP優缺點 HTTP優點&#xff08;1.1&#xff09; HTTP缺點 HTTP與HTTPS HTTP 與 HTTPS 的區別 HTTPS 解決 HTTP 的哪些安全問題&#xff1f; HTTPS 如何解決安全問題&#xff1f; HTTPS 連接建立的過程&#xff1a; HTTP/1.1、HTTP/2、HTTP/3 演…