Swin Transformer: Hierarchical Vision Transformer using Shifted Windows

Swin Transformer: Hierarchical Vision Transformer using Shifted Windows

  • 摘要
  • 當前的檢測sota模型
  • 網絡架構
    • swin Transformer和Vision Transformer的不同之處
    • 整體架構
      • Patch Partition結構
      • Linear Embedding結構
      • Swin Transformer Block結構
  • Patch Merging
  • W-MSA
    • MSA模塊計算量
    • W-MSA模塊計算量
  • SW-MSA
    • SW-MSA如何滑動窗口
    • SW-MSA如何高效批量計算
  • Relative Position Bias
    • 實驗效果展示
    • Relative Position Bias的實現
  • 參數配置

在這里插入圖片描述

論文地址:https://arxiv.org/abs/2103.14030
源碼地址:https://github.com/microsoft/Swin-Transformer

摘要

在這里插入圖片描述

本文介紹了一種名為 Swin Transformer 的新型視覺Transformer,它可以作為計算機視覺的通用骨干。將 Transformer 從語言應用到視覺領域所面臨的挑戰來自這兩個領域的差異,例如視覺實體的尺度變化很大,以及與文本中的文字相比,圖像中像素的分辨率較高。為了解決這些差異,我們提出了一種分層Transformer,其表示是通過移位窗口計算的。移位窗口方案將自我關注計算限制在非重疊的局部窗口,同時允許跨窗口連接,從而提高了效率。這種分層結構可以靈活地進行各種規模的建模,其計算復雜度與圖像大小成線性關系。Swin Transformer 的這些特質使其能夠兼容廣泛的視覺任務,包括圖像分類(ImageNet-1K 上的 Top-1 準確率為 87.3)和密集預測任務,如物體檢測(COCO testdev 上的 58.7 box AP 和 51.1 mask AP)和語義分割(ADE20K val 上的 53.5 mIoU)。在 COCO 上,它的性能大大超過了之前的技術水平,達到了 +2.7 box AP 和 +2.6 mask AP,在 ADE20K 上達到了 +3.2 mIoU,這證明了基于 Transformer 的模型作為視覺骨干的潛力。分層設計和移動窗口方法也證明有利于全 MLP 架構。代碼和模型可在以下網址公開獲取。

當前的檢測sota模型

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

網絡架構

swin Transformer和Vision Transformer的不同之處

在這里插入圖片描述

  1. swin Transformer構建具體層次性的特征圖
  2. swin Transformer使用窗口將特征圖分割開

swin Transformer在窗口內執行Multi Head self attention的計算,窗口和窗口之間不進行信息的傳遞

Vision Transformer

整體架構

在這里插入圖片描述

Patch Partition結構

在這里插入圖片描述
使用4x4大小的窗口對圖像分割,并展平。
在這里插入圖片描述在這里插入圖片描述

Linear Embedding結構

調整圖像channel,從48到c

在代碼中,使用卷積層實現的

Swin Transformer Block結構

在這里插入圖片描述
的組成為:

在這里插入圖片描述
關于MSA:MSA

關于W-MSA和SW-MSA,后面詳細論述

Patch Merging

在這里插入圖片描述

特征圖高和寬減少一半,特征圖channel翻倍

W-MSA

在這里插入圖片描述

在多頭注意力的基礎上引入窗口的概念

目的:減少計算量
缺陷:窗口之間無法進行信息交互

MSA:對每一個像素求q,k,v,然后將每一個像素求得的q和其他所有像素求的的k進行計算。

可以理解為在MSA中,每個像素都和所有的像素存在信息的溝通

W-MSA:在每個窗口內部進行MAS操作,但是不同窗口之間是沒有通訊的

MSA模塊計算量

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

W-MSA模塊計算量

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

SW-MSA

SW-MSA如何滑動窗口

全稱:shifted window -MSA

目的:實現不同窗口之間的信息交互

在這里插入圖片描述
在擬議的 Swin Transformer 架構中計算自我注意力的移動窗口方法示意圖。在第 l 層(左),采用常規窗口劃分方案,并在每個窗口內計算自注意力。在下一個第 l + 1 層(右圖)中,窗口劃分會發生變化,從而產生新的窗口。新窗口中的自我注意力計算跨越了第 l 層中前一個窗口的邊界,提供了它們之間的聯系。

就是說:第 l 層采用W-MSA機制,第 l+1 層采用SW-MSA機制

在這里插入圖片描述
移動窗口后:
在這里插入圖片描述

l+1層通過滑動窗口融合了l層相鄰窗口之間的信息,達到了相鄰窗口之間融合的目的

SW-MSA如何高效批量計算

在這里插入圖片描述

移位窗口中自我關注的高效批量計算方法說明

  1. 第一步
    在這里插入圖片描述
    在這里插入圖片描述

  2. 第二步
    在這里插入圖片描述
    在這里插入圖片描述

  3. 第三步

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

然后將步驟三得到的圖像按照4x4的窗口劃分區域:

在這里插入圖片描述

對于4區域,已經完成了融合 l 層中不同窗口的目的
因此對于4,之間進行MSA的計算

但對于右上角的區域,由5和3組成,需要分隔開進行MSA的計算

論文中使用的方式是:mask

在這里插入圖片描述

具體的實現為:
在這里插入圖片描述

這樣就在一個窗口的MSA計算中,將區域5和區域3分隔開了

全部計算完成后,在將數據挪回原來的位置

Relative Position Bias

在這里插入圖片描述
這里的Relative Position Bias就是公式中的 B
在這里插入圖片描述

實驗效果展示

在這里插入圖片描述

可以看到使用絕對位置偏置的效果并不好
使用相對位置偏置達到最好的效果

Relative Position Bias的實現

  1. 第一步

在這里插入圖片描述

將其展平,組成最終

  1. 第二步
    偏移從0開始,行列標加M-1

這里M=2.所以M-1=1

在這里插入圖片描述

  1. 第三步

行標乘 2M-1

在這里插入圖片描述

  1. 第四步

行標列標相加
在這里插入圖片描述

將二元坐標轉換為一元坐標

  1. 對應相對位置偏置表

在這里插入圖片描述

網絡中訓練的是 relative position bias table中的值。

參數配置

在這里插入圖片描述

在這里插入圖片描述

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

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

相關文章

學習Vue:Vue3 VS Vue2

Vue 3作為Vue.js的最新版本,帶來了一系列令人激動的新特性和改進,讓開發者們在構建現代Web應用時體驗更加順暢和高效。本文將全面介紹Vue 3相對于Vue 2的改進,重點解釋Composition API的使用,以及新引入的Teleport和Suspense等特性…

Genoss GPT簡介:使用 Genoss 模型網關實現多個LLM模型的快速切換與集成

一、前言 生成式人工智能領域的發展繼續加速,大型語言模型 (LLM) 的用途范圍不斷擴大。這些用途跨越不同的領域,包括個人助理、文檔檢索以及圖像和文本生成。ChatGPT 等突破性應用程序為公司進入該領域并開始使用這項技術進行構建鋪平了道路。 大公司正…

如何發布自己的小程序

小程序的基礎內容組件 text&#xff1a; 文本支持長按選中的效果 <text selectable>151535313511</text> rich-text: 把HTML字符串渲染為對應的UI <rich-text nodes"<h1 stylecolor:red;>123</h1>"></rich-text> 小程序的…

MySql過濾重復數據

假設模型表是: 1. 根據單字段過濾: SELECT user_name, COUNT(*) as count FROM sys_user GROUP BY user_name HAVING count > 1;結果: 2. 根據多個字段查詢重復數據 SELECT user_name, email, COUNT(*) as count FROM sys_user GROUP BY user_name, email HAVING count…

[centos]設置主機名

1、設置 hostnamectl set-hostname 名字 2、查看是否生效 hostnamectl status 3、打開一個新鏈接就可以了

log4j教程_編程入門自學教程_菜鳥教程-免費教程分享

教程簡介 Log4j是Apache的一個開源項目&#xff0c;通過使用Log4j&#xff0c;我們可以控制日志信息輸送的目的地是控制臺、文件、GUI組件&#xff0c;甚至是套接口服務器、NT的事件記錄器、UNIX Syslog守護進程等&#xff1b;我們也可以控制每一條日志的輸出格式&#xff1b;…

[python] 使用Jieba工具中文分詞及文本聚類概念

前面講述了很多關于Python爬取本體Ontology、消息盒InfoBox、虎撲圖片等例子&#xff0c;同時講述了VSM向量空間模型的應用。但是由于InfoBox沒有前后文和語義概念&#xff0c;所以效果不是很好&#xff0c;這篇文章主要是爬取百度5A景區摘要信息&#xff0c;再利用Jieba分詞工…

hive--給表名和字段加注釋

1.建表添加注釋 CREATE EXTERNAL TABLE test(loc_province string comment 省份,loc_city string comment 城市,loc_district string comment 區,loc_street string comment 街道,)COMMENT 每日數據處理后的表 PARTITIONED BY (par_dt string) ROW FORMAT SERDEorg.apache.had…

學習Vue:響應式原理與性能優化策略

性能優化是Vue.js應用開發中的一個關鍵方面&#xff0c;而深入了解響應式原理并采用有效的性能優化策略可以顯著提升應用的性能。本文將解釋響應式原理并介紹一些性能優化策略&#xff0c;旨在幫助您構建高性能的Vue.js應用。 響應式原理 Vue.js的響應式原理是通過利用Object.…

PHP在線客服系統推薦

在當今數字化時代&#xff0c;企業客戶服務的重要性不容忽視。為了提供卓越的客戶體驗&#xff0c;許多企業正在尋找PHP在線客服系統。這種系統不僅可以滿足客戶的需求&#xff0c;還能提升企業的形象。本文將深入探討PHP在線客服系統的一些有趣話題。 理解PHP在線客服系統 PHP…

71 # 協商緩存的配置:通過內容

對比&#xff08;協商&#xff09;緩存 比較一下再去決定是用緩存還是重新獲取數據&#xff0c;這樣會減少網絡請求&#xff0c;提高性能。 對比緩存的工作原理 客戶端第一次請求服務器的時候&#xff0c;服務器會把數據進行緩存&#xff0c;同時會生成一個緩存標識符&#…

Transformer是什么,Transformer應用

目錄 Transformer應用 Transformer是什么 Transformer應用:循環神經網絡 語言翻譯:注重語句前后順序 RNN看中單個特征; CNN:看中特征之間時序性 模型關注不同位置的能力 Transformer是什么 Transformer是一個利用注意力機制來提高模型訓練速度的模型。關于注意力機…

clickhouse-數據導入導出方案

一、簡介 clickhouse有多種數據的導入導出方式&#xff0c;可以靈活使用&#xff0c;下面對這些方式分別做些介紹&#xff0c;導入導出的寫法與格式和格式設置有關。 二、導入 1.從s3導入 詳情可查看官網&#xff0c;也可以在這里獲取數據集 -- 建庫建表 CREATE DATABASE …

whisper語音識別部署及WER評價

1.whisper部署 詳細過程可以參照&#xff1a;&#x1f3e0; 創建項目文件夾 mkdir whisper cd whisper conda創建虛擬環境 conda create -n py310 python3.10 -c conda-forge -y 安裝pytorch pip install --pre torch torchvision torchaudio --extra-index-url 下載whisper p…

智慧工地云平臺源碼——塔機監控系統

智慧工地概念 智慧工地是一種嶄新的工程全生命周期管理理念&#xff0c;是指運用信息化手段&#xff0c;通過對工程項目進行精確設計和施工模擬&#xff0c;圍繞施工過程管理&#xff0c;建立互聯協同、智能生產、科學管理的施工項目信息化生態圈&#xff0c;并將此數據在虛擬…

鴿王-稚暉君,“遠征”A1啟程

看到這篇文章的人&#xff0c;想必對野生鋼鐵俠-稚暉君&#xff0c;都有所了解。作為華為的天才少年&#xff0c;獲得了很多的榮譽&#xff0c;作為B站有名的鴿王&#xff0c;在沉浮一段時間后終于要帶著新的東西和大家見面了。動態-嗶哩嗶哩https://b23.tv/Jv7tIjg 眾所周知&a…

網絡通信原理TCP字段解析(第四十七課)

字段含義Source Port(源端口號)源端口,標識哪

vueuse常用方法

useDateFormat 時間格式化 <script setup lang"ts">import { useNow, useDateFormat } from vueuse/coreconst formatted useDateFormat(useNow(), YYYY-MM-DD HH:mm:ss)</script><template><div>{{ formatted }}</div> </templa…

el-input添加自定義指令只允許輸入中文/英文/數字,兼容輸入法事件

省流 script: directives: {regexp: {inserted: (el, binding, vnode) > {let composition falseconst formatValue function (e) {if (composition) return// vnode.componentInstance組件實例vnode.componentInstance.$emit(input, e.target.value.replace(/[^\u4e00-…

Python學習筆記_基礎篇(十二)_nmap使用及案例

nmap概念及功能 概念 NMap&#xff0c;也就是Network Mapper&#xff0c;最早是Linux下的網絡掃描和嗅探工具包。 nmap是一個網絡連接端掃描軟件&#xff0c;用來掃描網上電腦開放的網絡連接端。確定哪些服務運行在哪些連接端&#xff0c;并且推斷計算機運行哪個操作系統&am…