End-to-End Object Detection with Transformers

在這里插入圖片描述

基于卷積神經網絡的目標檢測回顧

雙階段代表檢測算法:faster rcnn
單階段代表算法:yolo

上述單雙階段都是基于anchor
目標檢測廣泛的使用NMS(非極大值抑制算法)

DETR拋棄了上述算法思路。基于編碼器和解碼器來進行目標檢測

DETR對比Swin Transformer

之前的Swin TransformerSwin Transformer 主要用于目標檢測的編碼器部分,而不是解碼器部分。

在目標檢測中,通常會使用兩個主要組件:編碼器和解碼器。編碼器負責提取輸入圖像的特征,而解碼器則負責將這些特征轉換為目標檢測結果。Swin Transformer 主要用作編碼器,它通過多層的 Transformer 模塊來提取圖像特征。

至于解碼器部分,可以采用其他的方法來完成目標檢測任務。常見的解碼器包括使用卷積神經網絡 (CNN) 或者其他的傳統機器學習算法。具體選擇哪種解碼器取決于具體的任務和需求。

總結起來,Swin Transformer 在目標檢測中主要用作編碼器部分,而解碼器部分可以根據需求選擇其他方法來完成。

摘要

在這里插入圖片描述
我們提出的新方法將物體檢測視為一個直接的集合預測問題。我們的方法簡化了檢測流水線,有效地消除了對許多手工設計組件的需求,如非最大抑制程序或錨點生成,這些組件明確地編碼了我們對任務的先驗知識。新框架被稱為 DEtection TRansformer 或 DETR,其主要成分是基于集合的全局損失(通過兩端匹配強制進行唯一預測)和變換器編碼器-解碼器架構。DETR 給定了一小組固定的已學對象查詢,通過推理對象之間的關系和全局圖像上下文,直接并行輸出最終的預測結果。與許多其他現代檢測器不同,新模型概念簡單,不需要專門的庫。在極具挑戰性的 COCO 物體檢測數據集上,DETR 的準確性和運行時間性能與成熟且高度優化的 Faster RCNN 基準相當。此外,DETR 可以很容易地通用于以統一的方式進行全視角分割。我們的研究表明,DETR 的性能明顯優于競爭基線。訓練代碼和預訓練模型見 https://github.com/facebookresearch/detr。

檢測網絡流程

在這里插入圖片描述

先使用CNN得到各個Patch作為輸入,在套用Transformer做編碼解碼結構
編碼和Vision Transformer一致,重點在于解碼,直接預測100個坐標框

Vision Transformer

預測的100個框當中,包括物體和非物體。

在這里插入圖片描述

我們的 DEtection TRansformer(DETR,見圖 1)可一次性預測所有物體,并使用集合損失函數進行端到端訓練,在預測物體和地面實況物體之間進行雙向匹配。DETR 通過放棄多個手工設計的、編碼先驗知識(如空間錨點或非最大抑制)的組件來簡化檢測管道。與現有的大多數檢測方法不同,DETR 不需要任何定制層,因此可以在任何包含標準 CNN 和轉換器類的框架中輕松復制1。

大致思路就是:在編碼器部分輸入的100個向量,通過解碼器輸出,完成100個檢測框的預測
較NLP的區別是:詞語之間是有前后的對應關系的,檢測是100個向量同時輸入

DERT網絡架構

在這里插入圖片描述
在這里插入圖片描述

DETR 使用傳統的 CNN 骨干來學習輸入圖像的二維表示。該模型將其扁平化,并輔以位置編碼,然后將其傳遞給變換器編碼器。然后,變換解碼器將少量固定數量的已學位置嵌入(我們稱之為對象查詢)作為輸入,并額外關注編碼器的輸出。我們將解碼器的每個輸出嵌入信息傳遞給一個共享前饋網絡(FFN),該網絡可以預測檢測結果(類別和邊界框)或 "無對象 "類別。

其實在這里插入圖片描述就是和VIT一模一樣的

編碼器概述

在這里插入圖片描述
在這里插入圖片描述
編碼器對一組參考點的自我關注。編碼器能夠分離單個實例。使用基準 DETR 模型對驗證集圖像進行預測。

得到各個目標的注意力結果,準備好特征,等解碼器來匹配

解碼器概述

解碼器階段首先初始化100個向量 (object queries)
在這里插入圖片描述

可以把encoder看成生產者,decoder看成消費者

encoder提供 k 和 v
decoder提供 q, 并使用q去查詢匹配 k 和 v

在解碼器中,所有的object queries同時去查詢匹配編碼器中每個位置的k和v

解碼器輸出的結果經過全連接層得到檢測框的位置和目標得分

object queries是核心,讓他學會從原始特征數據中找到物體的位置

整體結構

在這里插入圖片描述

object queries的初始化

輸出層就是100個 object queries 預測
編碼器和Vision Transformer一樣(減去了cls)

解碼器首先隨機初始化100個object queries (以0+位置編碼進行的初始化的) 相當于就是用位置編碼進行的初始化
直接使用位置編碼作為初始化的目的:使得不同的object queries 關注圖像的不同區域。

通過多層讓其學習如何利用輸入特征

Decoder中的Muiti-Head Self-Attention

100個 object queries分別使用q,k,v完成自注意力機制

在這里插入圖片描述

Decoder中的Muiti-Head Attention

由Encoder提供k和v,由Muiti-Head Self-Attention提供q

損失函數

匈牙利匹配
在這里插入圖片描述
在這里插入圖片描述
是地面實況 yi 與索引為 σ(i)的預測之間的成對匹配成本。根據之前的工作,匈牙利算法可以高效地計算出這一最優分配

匈牙利匹配:按照最小的loss進行匹配,使得選擇的預測框和真實框的loss最小,其余剩下的預測框就是背景

在這里插入圖片描述
在這里插入圖片描述
匹配成本既要考慮類別預測,也要考慮預測框和地面實況框的相似性
在這里插入圖片描述類別概率
在這里插入圖片描述檢測框位置

在這里插入圖片描述

這種尋找匹配的過程與現代檢測器中用于將建議[37]或錨點[22]與地面實況對象相匹配的啟發式分配規則的作用相同。主要區別在于,我們需要找到一對一的匹配,以實現無重復的直接集合預測。第二步是計算損失函數,即上一步中所有匹配對的匈牙利損失。我們對損失的定義與常見物體檢測器的損失類似,即類預測的負對數似然和稍后定義的盒損失的線性組合:

解決的問題

注意力起到的作用:可以識別出遮擋區域
在這里插入圖片描述
在這里插入圖片描述

可視化解碼器對每個預測對象的注意力(圖像來自 COCO val set)。使用 DETR-DC5 模型進行預測。不同物體的注意力分數用不同顏色表示。解碼器通常會關注物體的四肢,如腿部和頭部。最佳彩色視圖

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

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

相關文章

內網穿透實戰應用——【通過cpolar分享本地電腦上有趣的照片:發布piwigo網頁】

通過cpolar分享本地電腦上有趣的照片:發布piwigo網頁 文章目錄 通過cpolar分享本地電腦上有趣的照片:發布piwigo網頁前言1. 設定一條內網穿透數據隧道2. 與piwigo網站綁定3. 在創建隧道界面填寫關鍵信息4. 隧道創建完成 總結 前言 首先在本地電腦上部署…

Unity - 從PackageManager中安裝內置工具

1.MemoryProfiler 內存分析工具 add from git url :com.unity.memoryprofiler 使用地址記錄:unity3d內存分析工具memory profiler_unity3d memory profile_Marco&GalaxyDragon的博客-CSDN博客 理解Unity Memory Profiler - 知乎

Gradle和Maven的詳細講解和兩者之間的區別

Gradle 詳細介紹 Gradle 是一種基于 Groovy 語言的構建自動化工具,用于構建、測試和部署項目。它使用聲明式的腳本來定義構建過程,允許開發者靈活地配置項目構建。Gradle 使用一種被稱為 Groovy DSL(領域特定語言)的語法&#xf…

mysql知識點+面試總結

目錄 1 mysql介紹 2 數據庫常見語法 3 數據庫表的常見語法 4 其他常見語法(日期,查詢表字段) 5 JDBC開發步驟 6 索引 6.1 索引常見語法 7 常見面試總結 8 java代碼搭建監控頁面 1 mysql介紹 數據庫:存儲在硬盤上的文件系統…

VR虛擬展廳如何將客戶引流到線下?

VR虛擬展廳是一項很不錯的創新技術,將傳統的展覽內容以數字化形式呈現,為參觀者帶來全新的展示體驗,也為企業帶來了全新的宣傳機遇。 線上虛擬展廳目前有著兩種形式,一種是通過三維建模技術、虛擬現實技術等搭建的虛擬展廳&#x…

leetcode 474. 一和零

2023.8.15 class Solution { public:int findMaxForm(vector<string>& strs, int m, int n) {vector<vector<int>> dp(m1, vector<int>(n1,0));//遍歷物品for(string str : strs){int num_0 0;int num_1 0;for(char c : str){if(c 0) num_0;el…

Docker 容器內無法使用vim命令 解決方法

目錄 1. 問題所示2. 原理分析3. 解決方法1. 問題所示 進入Docker容器后 無法使用vim編輯器,出現如下問題:bash: vim: command not found 如圖所示: 想著通過apt-get 安裝vim,出現如下問題: root@b9f0fd330d5b:/# apt-get install vim Reading package lists... Done B…

ZooKeeper介紹

ZooKeeper是一個開放源代碼的分布式協調服務。ZooKeeper的設計目標是將那些復雜且容易出錯的分布式一致性服務封裝起來&#xff0c;構成一個高效可靠的原語集&#xff0c;并以一系列簡單易用的接口提供給用戶使用。 ZooKeeper是一個典型的分布式數據一致性的解決方案&#xff0…

如何通過 Keras 中的活動正則化減少泛化誤差

活動正則化提供了一種鼓勵神經網絡學習原始觀察的稀疏特征或內部表示的方法。 在自動編碼器(稱為稀疏自動編碼器)和編碼器-解碼器模型中尋求稀疏學習表示是很常見的,盡管該方法通常也可用于減少過度擬合并提高模型泛化到新觀察值的能力。 在本教程中,您將發現 Keras API …

spring入門基本介紹及注入方式---詳細介紹

一&#xff0c;spring的簡介 Spring是一個開源框架&#xff0c;它由Rod Johnson創建。它是為了解決企業應用開發的復雜性而創建的。 提供了許多功能強大且易于使用的特性&#xff0c;使得開發者能夠更加輕松地構建可維護且可擴展的應用程序&#xff0c;簡單來說: Spring使用基…

kaggle注冊不顯示驗證碼

edge瀏覽器 1.點擊瀏覽器右上角三個點 2.點擊擴展 3.點擊管理擴展 4.點擊獲取Microsoft Edge擴展&#xff0c;在左上角輸入Head Editor 5.輸入https://www.azurezeng.com/static/HE-GoogleRedirect.json 6.下載后&#xff0c;點保存 成功&#xff01;

星際爭霸之小霸王之小蜜蜂(二)--類的使用

目錄 前言 一、將設置內容寫在一個類里 二、設置小蜜蜂的造型 三、設置貓蜜蜂的參數 四、繪制貓蜜蜂到窗口 總結 前言 昨天我們設置好了窗口&#xff0c;下面我們需要向窗口中添加元素了。 一、將設置內容寫在一個類里 我個人理解書上的意思是要創建一個類&#xff0c;將所有需…

基于CentOS 7 部署社區版Haproxy

HAProxy是法國開發者 威利塔羅(Willy Tarreau) 在2000年使用C語言開發的一個開源軟件&#xff0c;是一款具 備高并發(一萬以上)、高性能的TCP和HTTP負載均衡器&#xff0c;支持基于cookie的持久性&#xff0c;自動故障切換&#xff0c;支 持正則表達式及web狀態統計。 目錄 1…

Linux:shell腳本 正則表達式與AWK

一、正則表達式 由一類特殊字符及文本字符所編寫的模式&#xff0c;其中有些字符&#xff08;元字符&#xff09;不表示字符字面意義&#xff0c;而表示控制或通配的功能&#xff0c;類似于增強版的通配符功能&#xff0c;但與通配符不同&#xff0c;通配符功能是用來處理文件…

【LeetCode每日一題】——128.最長連續序列

文章目錄 一【題目類別】二【題目難度】三【題目編號】四【題目描述】五【題目示例】六【題目提示】七【解題思路】八【時間頻度】九【代碼實現】十【提交結果】 一【題目類別】 哈希表 二【題目難度】 中等 三【題目編號】 128.最長連續序列 四【題目描述】 給定一個未…

python re 模塊 正則表達式

一、正則表達式基本符號 ^ 表示匹配字符串的開始位置 (例外 用在中括號中[ ] 時,可以理解為取反,表示不匹配括號中字符串)$ 表示匹配字符串的結束位置* 表示匹配 零次到多次&#xff08;記憶方法&#xff1a;符號是星星&#xff0c;天上的星星可以是無數個也可以看不到&#x…

vue3+element-plus表格默認排序default-sort失效問題

場景 在使用動態數據渲染的場景&#xff0c;el-table設置默認屬性default-sort失效。 原因 el-table的default-sort屬性是針對靜態數據的&#xff0c;如果是動態數據&#xff0c;default-sort則無法監聽到。 案例&#xff1a;靜態數據 <template><el-table:data&…

馬斯克又出昏招、最瘋狂的舉動之一

馬斯克正在限制他不喜歡的新聞網站和競爭對手的流量。在 X&#xff08;原 Twitter&#xff09;上點擊紐約時報、路透社、Facebook、Instagram、Threads、Bluesky 和 Substack 的鏈接&#xff0c;X 故意增加 5 秒鐘的開啟延遲。 5 秒延遲&#xff0c;新的降權舉措&#xff1f; …

rust踩雷筆記(2)——一道hard帶來的思考[哈希表、字符串、滑動窗口]

今天被一道hard惡心壞了&#xff0c;算法不難&#xff0c;用C幾分鐘的事。用rust主要還是缺乏對語言的熟練度&#xff0c;記錄一下&#xff0c;主要的坑在下面這個操作&#xff1a; 對String取其中某個位置的char。 可能你會有疑問&#xff1a;這不是直接nth()取就行了么。沒錯…

聯想拯救者筆記本Win11系統鍵盤無法打字解決參考方法

一位好機友新購買的聯想拯救者筆記本在使用過程中突然發現整個鍵盤都不能使用了、不能打字、按任何按鍵都沒有反應&#xff0c;只有鼠標能正常操作&#xff1b;那么這是什么問題呢&#xff1f;能不能是筆記本的鍵盤壞了呢&#xff1f;還是筆記本出現了什么故障而引起鍵盤失靈呢…