CV Method:經典CNN Backbone總結

文章目錄

  • 前言
  • 一、ResNet
  • 二、ResNeXt
  • 三、Res2Net
  • 四、SeNet
  • 五、ResNeSt
  • 六、DenseNet
  • 七、CSPNet
  • Pytorch Model Code
  • 總結


前言

Backbone作為一切深度學習任務的基礎,不論是理論還是實際應用都有重要的意義,本文針對經典Backbone進行總結,這些Backbone也是面試常見的問題,卷積網絡主要以ResNet和其各種變體為主。

一、ResNet

paper:Deep Residual Learning for Image Recognition

網絡結構

請添加圖片描述

Tips

  1. 針對問題:殘差神經網絡針對網絡退化現象(隨著網絡加深,準確率降低,引入的激活越來越多,到后來學習恒等變換都很難)提出解決方法,在線性和非線性尋找平衡。

2)殘差的作用:緩解梯度消失。梯度能無損的回傳到網絡的各個層,有效抑制梯度消失的現象在這里插入圖片描述
梯度不衰減的傳遞回去,避免梯度消失(常規網絡是梯度累乘)

二、ResNeXt

paper:Aggregated Residual Transformations for Deep Neural Networks

相比ResNet對殘差塊進行了改進,將中間卷積改成了分組卷積,通道數改變了,基本結構和Inceptionv4類似,不過Inceptionv4的并行分支是通道連接然后進行1x1conv。ResNetXt是每個分支末尾進行1x1卷積通道相同,然后相加,在殘差相加。另外ResNeXt使用了一種等效合并的方式(將多分支合并為一個分組卷積)

網絡結構
請添加圖片描述

Tips典型的并行卷積獲取多角度特征,網絡也更輕量了一些

三、Res2Net

paper:Res2Net: A New Multi-scale Backbone Architecture

網絡結構請添加圖片描述
將殘差塊1x1輸出特征拆分4個部分(其實也是分組),分4個分支,1分支直連,2分支經過3x3卷積然后一個直連,一個給融合下一條分支,達到一個多尺度融合的目的。

Tips在單個殘差塊內構造具有等級制的類似殘差連接。Res2Net在粒度級別表示多尺度特征,并增加了每個網絡層的感受野。

四、SeNet

paper:Squeeze-and-Excitation Networks

網絡結構
請添加圖片描述
SENet雖然不算是一個經典的backbone,但是其思想影響了后續很多backbone的設計。SENet首次**將通道注意力概念引入深度網絡,讓卷積網絡有了全局信息的感知能力。通過擠壓操作提取網絡中的空間信息,激勵操作則根據這些信息調整網絡中的通道權重。**這種網絡結構能夠有效地提高網絡的表現,尤其是在處理圖像分類等任務時。擠壓和激勵網絡可以與現有的最先進的CNN結合使用,以實現更高的性能提升。

目前先進的卷積網絡中的模塊都基于這個思想,如經典的CBAM模塊

Tips:在transformer使用之前讓CNN免除了局部感受野的限制,能夠捕獲一定全局信息,并根據這些信息對特征作出調整。

五、ResNeSt

paper:ResNeSt : Split-Attention Networks

網絡結構
請添加圖片描述
將輸入分成K個cardinal,每個cardinal分成R個組,故特征共被分成了K*R個組。每個cardinal執行split attention。split attention是分開的SE模塊,每小組(split)特征會根據大組(cardinal)特征生成一個對應的向量,乘上原來的特征,然后再相加。

實際情況,網絡同樣采樣類似ResNeSt的情況進行模塊合并(分組卷積+SE+殘差)。

其設計類似ResNeXt,只不過加了一個SE模塊

六、DenseNet

paper: Densely Connected Convolutional Networks

網絡結構
請添加圖片描述
在這里插入圖片描述

DenseNet是在ResNet后的又一個基礎backbone,其連接架構類似ResNet,但把殘差結構的相加換成了cat,繼續傳播。并且它的連接是前面所有層的連接,第3層的輸入是原特征和第1層 第2層的輸出。

上圖是一個DenseBlock,另外還有一個Transition模塊,用于降維
簡單說下DenseNet的反向傳播——
在這里插入圖片描述

TipsDenseNet的出發點在于通過不斷的連接前面的層來恢復崩潰信息。

七、CSPNet

paper:CSPNet: A New Backbone that can Enhance Learning Capability of CNN

網絡結構
請添加圖片描述
了解yolo的同學們相信對CSPNet都不陌生,CSP的設計主要針對DenseNet。其圍繞的中心思想是網絡優化中的重復梯度信息,以此來優化之前網絡中所需要的大量推理計算問題。

傳統的DenseNet如上圖(a)所示,CSPDenseNet如上圖(b)所示。簡單來看,CSPDenseNet就是將輸入的feature map按照channel分成了兩個部分,其中一個部分正常進行Dense Block的操作,另一個部分直接進行Concat操作。由于每個Dense Block操作的輸入通道都變少了(第一個直接減少,后面Concat的通道數變少),所以能減少計算量。

請添加圖片描述
進行Concat的方式,有上圖幾種。圖(c)的方式,會讓大量的梯度信息被重復利用,有利于學習;下圖(d)的方式,梯度流被阻斷,不能復用梯度信息。但由于Transition層的輸入通道比 (c)要少,因此能大大減少計算復雜度。本文采用的( b )就是結合了(c)和(d)的優點。

Tips
1)避免梯度信息復用,更豐富的梯度組合強化了CNN的學習能力;
2)降低計算成本,減少內存占用;

Pytorch Model Code

目前我將這些模型的基本架構整理了一下,大部分是從原作者的架構中拆出和從其它作者中找到的(感謝各路大神),經過測試均沒有問題,后續將會整理更多模型架構,一起進步!!!
github:https://github.com/sirius541/pytorch_model_collection

總結

本文主要介紹這些年比較經典的backbone的一些優勢和特點,目前主流的backbone都以transformer為框架進行迭代,不過CNN的backbone是基礎中的基礎,能很好的幫助初學者理解相關理論和設計理念,也是必須要掌握的技術。

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

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

相關文章

[word] word怎樣轉換成pdf #職場發展#經驗分享#職場發展

word怎樣轉換成pdf word怎樣轉換成pdf?word格式是辦公中常會用到的格式,word格式編輯好了要想轉換成pdf格式再來傳輸的話需要怎么操作呢?小編這就給大家分享下操作方法,一起來學習下吧! 1、安裝得力PDF轉換器&#x…

【stm32/CubeMX、HAL庫】swjtu嵌入式實驗七 ADC 實驗

相關電路與IO引腳 注意&#xff1a;串口打印重定向后使用printf打印需要在keil里勾選 Use MicroLIB &#xff0c;否則會卡住。 參看&#xff1a;https://zhuanlan.zhihu.com/p/565613666 串口重定向&#xff1a; /* USER CODE BEGIN Includes */#include <stdio.h>//…

銳捷校園網自助服務系統 login_judge.jsf 任意文件讀取漏洞復現(XVE-2024-2116)

0x01 產品簡介 銳捷校園網自助服務系統是銳捷網絡推出的一款面向學校和校園網絡管理的解決方案。該系統旨在提供便捷的網絡自助服務,使學生、教職員工和網絡管理員能夠更好地管理和利用校園網絡資源。 0x02 漏洞概述 校園網自助服務系統/selfservice/selfservice/module/sc…

求解數組中N數之和最接近目標值的算法詳解

目錄 問題定義問題背景常見解決思路 暴力枚舉法排序雙指針法動態規劃法 具體實現方法 暴力枚舉法的實現排序雙指針法的實現動態規劃法的實現 優化技巧總結 問題定義 給定一個整數數組 nums 和一個目標值 target&#xff0c;需要在數組中找到 n 個數&#xff0c;使得這 n 個數…

apollo 環境配置

輸入法 安裝輸入google pinyin法 sudo apt install fcitx-bin sudo apt install fcitx-table sudo apt-get install fcitx fcitx-googlepinyin -y 最后需要reboot 系統環境 修改文件夾名稱為英文 將Ubuntu主文件夾里的中文文件夾名稱改成英文_番茄炒雞蛋z的博客-CSDN博客…

selenium中switch_to.window切換窗口的用法

打開百度多個窗口&#xff0c;遍歷切換每個窗口&#xff0c;切到【百度地圖】就停止。 使用了driver.switch_to.window&#xff08;&#xff09; 來切換&#xff0c; 參數是handle值 from selenium import webdriver import time# 創建瀏覽器驅動對象 from selenium.webdrive…

JSQLParser用于解析SQL語句并創建抽象語法樹(AST)

JSQLParser簡介 JSQLParser是一個Java庫&#xff0c;用于解析SQL語句并創建抽象語法樹(AST)。該庫非常強大&#xff0c;可以解析大多數標準SQL語法&#xff0c;并支持許多數據庫的專用語法。 主要特點 語法支持廣泛&#xff1a;支持大多數SQL語法&#xff0c;包括SELECT、IN…

java中事務中遇到鎖會造成什么問題,以及該如何解決?

在spring中實現事務有多種方式&#xff0c;主要是兩種&#xff1a;一種是聲明式事務&#xff0c;一種是編程式事務&#xff0c;今天我們就講聲明式事務中的一種&#xff0c;使用注解Transactional&#xff0c;這個注解的作用就是幫助我們在代碼執行完畢之后自動提交事務&#x…

淘寶評論數據爬取全攻略

一、淘寶評論數據爬取的背景與意義 隨著互聯網的快速發展&#xff0c;電子商務平臺如淘寶、京東等在我國市場占有率逐年上升。消費者在購買商品時&#xff0c;除了關注商品的價格、質量等因素外&#xff0c;還會參考其他消費者的評價和評論。淘寶評論數據爬取是指通過技術手段…

C# NX二次開發-設置背景顏色

使用UF函數能直接設置UG背景顏色: 1.設置背景顏色選項為純色: 2.編寫更新背景顏色代碼: var nxColor NXColor.Factory._Get(186);var rgb nxColor.GetRgb();double[] arr [rgb.R, rgb.G, rgb.B];theUf.Disp.SetColor(UFConstants.UF_DISP_BACKGROUND_COLOR, UFConstants.UF…

oracle刪除表空間和用戶命令

創建表空間和用戶可參考 ORACLE創建表空間,用戶,修改密碼,分配權限,以及導入導出_oracle表空間的密碼-CSDN博客 1.刪除表空間 --刪除空的表空間&#xff0c;但是不包含物理文件 drop tablespace tablespace_name; --刪除非空表空間&#xff0c;但是不包含物理文件 drop tabl…

化妝品FDA認證需要注意哪方面

化妝品FDA認證概述 化妝品FDA認證是指化妝品產品通過美國食品藥品監督管理局&#xff08;FDA&#xff09;的審核和認證&#xff0c;證明其符合相關法規和標準&#xff0c;具備在美國市場合法銷售的條件。這一認證過程不僅涉及產品的成分合規性&#xff0c;還包括產品的標簽、安…

C#字符串格式化之$語法

引言 字符串是編程中使用較廣的一種數據&#xff0c;它由數字、字母、下劃線等組成。在使用過程中會對字符串進行格式化。在C#語言中&#xff0c;.NET 6及以上使用字符串插值&#xff08;$""語法&#xff09;對字符串格式化。 $語法 .NET 6 及以上提供的一種新的語…

Facebook海外企業廣告賬戶是什么?有什么優勢?

隨著全球化的迅速發展&#xff0c;越來越多國內企業開始將目光轉向海外市場&#xff0c;尋求更為廣闊的商機與更高的發展空間。而在這個全球化的時代&#xff0c;Facebook作為全球最大的社交媒體平臺之一&#xff0c;自然成為了眾多企業進軍海外市場的首選平臺之一。那么如果想…

flask輕松入門,概念講解

Hello World Flask 是輕量級web框架&#xff0c;僅保留了核心功能&#xff1a; 請求響應處理模板渲染URL路由 文章目錄 Hello Worldflask命令模式python命令模式兩種模式對比修改入口文件配置flask命令修改python命令修改 修改端口和地址flask命令修改python命令修改 修改 URL …

java——順序表

前言&#xff1a;順序表是線性表的一種&#xff0c;它是較于數組更加靈活的一種儲存方式。線性表通常是邏輯上是連續的一條直線&#xff0c;但在物理上不是連續的。java中已經實現好了一個順序表&#xff0c;搭配泛型可以支持各種類型的使用&#xff0c;下面就來介紹該如何使用…

以太網:ARP和信息處理狀態機+代碼實現

ARP過程只需要一次發送和一次接受就可以完成了&#xff1b; 在實際實現協議棧的時候我個人認為要以主動ARP開始&#xff1b; 主動ARP&#xff1a;發送一次ARP請求&#xff0c;接受一個ARP報文&#xff1b; 使用這種方式的原因是上位機可能不知道你的IP地址&#xff08;當然如…

Mysql疑難報錯排查 - Field ‘XXX‘ doesn‘t have a default value

項目場景&#xff1a; 數據庫環境 &#xff1a;mysql8; 工程使用&#xff1a;MyBatisPlus 表情況&#xff1a; 問題描述 某一個插入語句使用了 MyBatisPlus 的 save 方法&#xff0c;因為end_time1 end_time2都并沒有值&#xff0c;所以在MyBatisPlus默認情況下&#xff0c;…

如何使自己寫的代碼易讀易懂?

〓● 如果代碼可讀性不佳、不容易理解&#xff0c;可能造成如下問題&#xff1a; 〓? 其他工程師浪費時間解讀它&#xff1b; 〓? 誤解導致引入缺陷&#xff1b; 〓? 其他工程師修改時破壞代碼。 〓● 提高代碼可讀性&#xff0c;有時候可能使其變得更為冗長、占用更多的…

【Python】深入認識Python數據類型和變量

???? 文章目錄 1. 引言數據類型的重要性Python中的數據類型概述 2. 數字類型整型&#xff08;int&#xff09;浮點型&#xff08;float&#xff09;復數&#xff08;complex&#xff09; 3. 字符串類型字符串的定義與使用字符串操作方法 4. 布爾類型布爾值和布爾運算 5. 列…