1.deeplabv3+網絡結構及原理

? ? ? ? ?這里的網絡結構及原理可以看這篇博客,DeepLabV3+: 在DeepLabV3基礎上引入了Decoder_matlab deeplabv3+resnet101-CSDN博客該博客翻譯原論文解釋得很清楚。

一、引言

? ? ? ?語義分割的目標是為圖像中的每個像素分配語義標簽。在這項研究中,考慮了兩種類型的神經網絡:使用了空間金字塔池化的模塊、編解碼器結構;前者可以通過在不同分辨率下匯集特性來獲取豐富的上下文信息,后者能夠獲得清晰的物體邊界。

? ? ? ?為了在不同尺度下獲得上下文信息,DeepLabv3使用了幾個并行的不同速率的空洞卷積(空洞空間金字塔池化,ASPP);而PSPNet則是在不同網格尺度上執行池化操作。盡管在最后一個feature map上編碼了豐富的語義信息,但由于在網絡backbone中使用了帶有步長的池化或者卷積操作,與物體邊界相關的細節信息卻丟失了。這個問題,可以通過使用空洞卷積提取密集的feature maps來改善。

? ? ? ? ?DeepLabv3+,通過增加一個簡單有效的解碼器模塊擴展了DeepLabv3,以恢復物體邊界。在DeepLabv3的輸出中,已經編碼了豐富的語義信息,其使用空洞卷積來控制編碼特征的密度,這取決于計算資源。此外,解碼器模塊可以恢復詳細的物體邊界。本質上deeplabv3+就是deeplabv3加上一個decoder.

? ? ? ? 總體來講,貢獻如下:

  1. 在DeepLabv3基礎上,加了一個解碼器;
  2. 可以通過控制空洞卷積速率來任意改變編碼器輸出的feature map分辨率;
  3. 使用Xception作為backbone(也可使用ResNet101等),并在ASPP和解碼器模塊中使用了深度可分離卷積,從而產生了一個更快、更強的編解碼網絡;
  4. 該模型達到了新的SOTA;
  5. 開源了代碼;

二、網絡結構

? ? ? ?DeepLabV3+的網絡結構如下圖所示,主要為Encoder-Decoder結構。

? ? ? ? Encoder-decoder: 編解碼結構已經被用于多種計算機視覺任務,如人體姿態估計、目標檢測、語義分割。通常,編碼器-解碼器網絡包含(1)一個編碼器模塊(Encoder),逐步減少特征映射并捕獲更高的語義信息,(2)一個解碼器模塊(Decoder),逐步恢復空間信息。在此基礎上,我們提出了使用DeepLabv3作為編碼器模塊,并添加一個簡單而有效的解碼器模塊,以獲得更清晰的分割。

1.Encoder

? ? ? ?在encoder部分,主要包括了backbone(DCNN)、ASPP兩大部分。encoder中連接的第一個模塊是DCNN, 他代表的是用于提取圖片特征的主干網絡,DCNN右邊是一個ASPP網絡,他用一個1*1的卷積、3個3*3的 空洞卷積和一個全局池化來對主干網絡的輸出進行處理。然后再將其結果都連接起來并用一個1*1的卷積 來縮減通道數。具體如下:

  • 其中backbone有兩種網絡結構:將layer4改為空洞卷積的Resnet系列、改進的Xception。從backbone出來的feature map分兩部分:一部分是最后一層卷積輸出的feature maps,另一部分是中間的低級特征的feature maps;backbone輸出的第一部分送入ASPP模塊,第二部分則送入Decoder模塊。
  • ASPP模塊接受backbone的第一部分輸出作為輸入,使用了四種不同膨脹率的空洞卷積塊(包括卷積、BN、激活層)和一個全局平均池化塊(包括池化、卷積、BN、激活層)得到一共五組feature maps,將其concat起來之后,經過一個1*1卷積塊(包括卷積、BN、激活、dropout層),最后送入Decoder模塊。

? ? ? ?可分離空洞卷積的優點:

  • 減小計算量,是普通卷積計算量的1/9;
  • 擴大感受野:神經網絡加深,單個像素感受野擴大,但特征圖尺寸縮小,空間分辨率降低,為此,空洞卷積出現了,一方面感受野大了可以檢測分割大目標,另一方面分辨率高了可以精確定位目標。
  • 捕獲多尺度上下文信息:兩列之間填充 (r-1) 個0,這個 r 可自己設置,不同 r 可得到不同尺度信息。
2.Decoder

? ? ? 在Decoder部分,接收來自backbone中間層的低級feature maps和來自ASPP模塊的輸出作為輸入。

  • 首先,對低級feature maps使用1*1卷積進行通道降維,從256降到48(之所以需要降采樣到48,是因為太多的通道會掩蓋ASPP輸出的feature maps的重要性,且實驗驗證48最佳);
  • 然后,對來自ASPP的feature maps進行插值上采樣,得到與低級featuremaps尺寸相同的feature maps;
  • 接著,將通道降維的低級feature maps和線性插值上采樣得到的feature maps使用concat拼接起來,并送入一組3*3卷積塊進行處理;
  • 最后,再次進行線性插值上采樣,得到與原圖分辨率大小一樣的預測圖。
3.Xception

Xception網絡結構如下:

? ? ? ? Xception網絡是由inception結構加上depthwise separable convlution,再加上殘差網絡結構改進而來。Xception結構由36層卷積層組成網絡的特征提取基礎,分為Entry flow,Middle flow,Exit flow;被分成了14個模塊,除了第一個和最后一個外,其余模塊間均有線性殘差連接。

? ? ? ? Xception結構演變:(輕量化網絡結構——Xception_xception網絡結構-CSDN博客

? ? ? ? Xception 并不是真正意義上的輕量化模型,是Google繼Inception后提出的對Inception v3的另一種改進,主要是采用depthwise separable convolution來替代原來的Inception v3中的卷積操作,這種性能的提升是來自于更有效的使用模型參數而不是提高容量。

? ? ? ? 既然是在Inception v3上進行改進的,那么Xception是如何一步一步的從Inception v3演變而來。Inception v3結構如下圖1(這個網絡結構是最基礎的google提出的inceptuon網絡結構的改進,大家可以查找資料進一步了解)

注:1x1卷積的作用:?1)降維:較少計算量 2)升維:小型網絡,通道越多,效果會更好 3)1x1是有一個參數學習的卷積層,可以增加跨通道的相關性。

下圖簡化了上圖的inception module(就只考慮1x1的那條支路,不包含Avg pool)如下:

? ? ? ?下圖把上圖的第一部分的3個1x1卷積核統一起來,變成1個1x1的卷積核,然后連接3個3x3的卷積,這3個卷積操作只將前面1x1卷積結果中的一部分作為自己的輸入(只負責一部分通道)。

? ? ? ?下圖An“extreme” version of Inception module,先用1x1卷積核對各通道之間(cross-channel)進行卷積,之后使用3x3的卷積對每個輸出通道進行卷積操作,也就是3x3卷積的個數和1x1卷積的輸出channel個數相同。

? ? ? ? 在Xception中主要采用depthwise separable convolution,和原版的相比有兩個不同之處:
(1)原版的Depthwise convolution,先是逐通道卷積,再1x1卷積;而Xception是反過來,先1x1卷積,再逐通道卷積。
(2)原版Depthwise convolution的兩個卷積之間是不帶激活函數的,而Xception再經過1x1卷積之后會帶上一個Relu的非線性激活函數。

三、結論

? ? ? ? 我們提出的模型“DeepLabv3+”采用了編碼器-解碼器結構,其中使用DeepLabv3對豐富的上下文信息進行編碼,采用簡單有效的解碼器模塊恢復對象邊界。也可以根據可用的計算資源,應用空洞卷積以任意分辨率提取編碼器特征。還對Xception模型和空洞可分離卷積進行了研究,使所提出的模型更快、更強。最后,我們的實驗結果表明,所提出的模型在PASCAL VOC 2012和Cityscapes數據集達到SOTA。

? ? ? ? 一句話總結DeepLabV3+:

? ? ? ??DeepLabv3作為Encoder提取特征,上采樣后與backbone中間的低級特征以concat的方式融合,然后利用3*3卷積獲得細化的特征,最后再進行上采樣恢復到原始分辨率;在backbone部分,使用可分離卷積改進了Xception。

? ? ? ?本質上,DeepLabV3+就是DeepLabV3加上一個decoder。

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

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

相關文章

Vue計算屬性computed()

1. 計算屬性定義 獲取計算屬性值 <div>{{ 計算屬性名稱}}</div>創建計算屬性 let 定義的屬性ref/reactive....let 計算屬性名稱 computed(() > {//這里寫函數式,函數式里面包含定義屬性//只有這個包含的定義屬性被修改時才出發此函數式//通過計算屬性名稱co…

docker:Haoop集群

系列文章目錄 docker&#xff1a;環境安裝 docker:Web遷移 docker:Haoop集群 文章目錄 系列文章目錄前言一、宿主機選擇二、環境準備1.前置技術2.網絡環境1. docker網卡2. 分配IP 三、容器互聯三、Jdk和Hadoop安裝四、分發腳本五、啟動Hadoop總結 前言 年前學習了docker的相關…

ubuntu18 環境安裝

1. ubuntu18 環境安裝 1. ubuntu18 環境安裝 1.1. default language1.2. sougou shurufa1.3. cmake-last1.4. audio-recorder1.5. sources.list切換清華源1.6. oh my zsh1.7. weixin1.8. bcompare1.9. wireshark1.10. 其他問題 1.1. default language ubuntu 修改系統默認語…

https://registry.npm.taobao.org淘寶npm鏡像倉庫地址更新

在工作中有遇見獲取淘寶的npm鏡像存在問題&#xff0c;圖示如下的報錯&#xff1a; 根據報錯的內容是說 https://registry.npm.taobao.org地址訪問失敗了&#xff0c;然后通過排查發現淘寶的npm鏡像倉庫地址有更新了。需要使用最新的地址 舊的淘寶鏡像倉庫&#xff1a;https://…

數據結構2月19日

題目&#xff1a;順序表作業 代碼&#xff1a; 功能區&#xff1a; #include <stdio.h>#include <stdlib.h>#include "./d2191.h"SeqList* create_seqList(){SeqList* list (SeqList*)malloc(sizeof(SeqList));if(NULL list){return NULL;}list->p…

Linux系列講解 —— 【Vim編輯器】在Ubuntu18.04中安裝新版Vim

平時用的電腦系統是Ubuntu18.04&#xff0c;使用apt安裝VIM的默認版本是8.0。如果想要安裝新版的Vim編輯器&#xff0c;只能下載Vim源碼后進行編譯安裝。 目錄 1. 下載Vim源碼2. 編譯3. 安裝4. 遇到的問題4.1 打開vim后&#xff0c;文本開頭有亂碼現象。4.2 在Vim編輯器中&…

JS常見問題

文章目錄 如何判斷是數組 如何判斷是數組 Array.isArray console.log(Array.isArray(arr))instanceof&#xff08;instanceof 運算符用于驗證構造函數的 prototype 屬性是否出現在對象的原型鏈中的任意位置&#xff09; console.log(arr1 instanceof Array)constructor&#x…

百面嵌入式專欄(經驗篇)如何在面試中介紹自己的項目經驗

文章目錄 1. 在面試前準備項目描述,別害怕,因為面試官什么都不知道2. 準備項目的各種細節,一旦被問倒了,就說明你沒做過3.不露痕跡地說出面試官愛聽的話4.一定要主動,面試官沒有義務挖掘你的亮點5.一旦有低級錯誤,可能會直接出局6.引導篇:準備些加分點,在介紹時有意提到…

測試環境搭建整套大數據系統(三:搭建集群zookeeper,hdfs,mapreduce,yarn,hive)

一&#xff1a;搭建zk https://blog.csdn.net/weixin_43446246/article/details/123327143 二&#xff1a;搭建hadoop&#xff0c;yarn&#xff0c;mapreduce。 1. 安裝hadoop。 sudo tar -zxvf hadoop-3.2.4.tar.gz -C /opt2. 修改java配置路徑。 cd /opt/hadoop-3.2.4/etc…

R語言【raster】——projectRaster():映射一個Raster對象

Package raster version 3.6-27 Description 用另一個投影(坐標參考系統&#xff0c;(CRS))將一個Raster*對象的值投影到一個新的Raster*對象。 您可以通過將新投影作為單個參數提供來實現這一點&#xff0c;在這種情況下&#xff0c;函數將設置新對象的范圍和分辨率。為了對…

Three.js初學(3)

Three.js初學&#xff08;3&#xff09; 動畫渲染循環1. 請求動畫幀2. 旋轉動畫 Canvas畫布布局和全屏常見幾何體渲染器設置GUI.js庫1. 庫的引入2. 如何使用初步調試進階調試界面分組 動畫渲染循環 1. 請求動畫幀 requestAnimationFrame實現周期性循環執行 requestAnimationF…

LeetCode | 整數反轉 C語言

Problem: 7. 整數反轉 文章目錄 思路解題方法Code結果 思路 運算部分 while(x > 0) {y x % 10;y * 10;x / 10; } y / 10;對于大于32位的數要用long int類型的變量保存用pow算-2的31次方和2的31次方-1。 解題方法 由思路得 Code int reverse(long int x){long int y …

web前端安全性——iframe安全問題

1、概念 iframe安全問題可稱作界面劫持&#xff0c;像點擊劫持、拖放劫持、觸屏劫持。就是我們的點擊&#xff0c;拖放&#xff0c;觸屏操作被劫持了&#xff0c;而去操作了其它的透明隱藏的界面。 **原理是利用透明層iframe,使用了CSS中的opacity或z-index等屬性&#xff0c;…

快速構建 Debezium MySQL Example 數據庫

博主歷時三年精心創作的《大數據平臺架構與原型實現&#xff1a;數據中臺建設實戰》一書現已由知名IT圖書品牌電子工業出版社博文視點出版發行&#xff0c;點擊《重磅推薦&#xff1a;建大數據平臺太難了&#xff01;給我發個工程原型吧&#xff01;》了解圖書詳情&#xff0c;…

突破編程_C++_面試(指針(1))

面試題 1 &#xff1a;什么是空指針&#xff1f; 在 C 中&#xff0c;空指針是一個特殊的指針值&#xff0c;它不指向任何有效的內存地址。空指針通常用于表示指針不指向任何對象或函數。在C11及以后的版本中&#xff0c; nullptr 是表示空指針的推薦方式。 nullptr 是一個指針…

AI繪畫與修圖:重塑數字藝術的新紀元

文章目錄 一、AI繪畫與修圖的原理二、AI繪畫的應用三、AI修圖的優勢四、面臨的挑戰五、未來發展趨勢《AI繪畫與修圖實戰&#xff1a;PhotoshopFirefly從入門到精通 輕松玩轉AI繪畫與修圖實戰》亮點內容簡介作者簡介 隨著人工智能技術的飛速發展&#xff0c;AI繪畫與修圖已經成為…

如何理解和區分訓練集、測試集和驗證集

如何理解和區分訓練集、測試集和驗證集 &#x1f308; 個人主頁&#xff1a;高斯小哥 &#x1f525; 高質量專欄&#xff1a;Matplotlib之旅&#xff1a;零基礎精通數據可視化、Python基礎【高質量合集】 &#x1f4a1; 創作高質量博文&#xff0c;分享更多關于深度學習、PyTor…

靡語IT:Vue精講(一)

Vue簡介 發端于2013年的個人項目&#xff0c;已然成為全世界三大前端框架之一&#xff0c;在中國大陸更是前端首選。 它的設計思想、編碼技巧也被眾多的框架借鑒、模仿。 紀略 2013年&#xff0c;在Google工作的尤雨溪&#xff0c;受到Angular的啟發&#xff0c;從中提取自…

soc(十七) SOC市場分類

桌面服務器集中式服務器架構和基于ARM微服務器架構的存儲差別在哪&#xff1f; http://www.dostor.com/p/54167.html 手機飛行器汽車家庭監控安防路由器

【前端素材】推薦優質后臺管理系統Protable平臺模板(附源碼)

一、需求分析 后臺管理系統是一種用于管理和監控網站、應用程序或系統的在線工具。它通常是通過網頁界面進行訪問和操作&#xff0c;用于管理網站內容、用戶權限、數據分析等。當我們從多個層次來詳細分析后臺管理系統時&#xff0c;可以將其功能和定義進一步細分&#xff0c;…