<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          人人必須要知道的語義分割模型:DeepLabv3+

          共 5821字,需瀏覽 12分鐘

           ·

          2022-01-20 06:52

          點(diǎn)擊上方小白學(xué)視覺”,選擇加"星標(biāo)"或“置頂

          重磅干貨,第一時(shí)間送達(dá)


          前言


          圖像分割是計(jì)算機(jī)視覺中除了分類和檢測(cè)外的另一項(xiàng)基本任務(wù),它意味著要將圖片根據(jù)內(nèi)容分割成不同的塊。相比圖像分類和檢測(cè),分割是一項(xiàng)更精細(xì)的工作,因?yàn)樾枰獙?duì)每個(gè)像素點(diǎn)分類,如下圖的街景分割,由于對(duì)每個(gè)像素點(diǎn)都分類,物體的輪廓是精準(zhǔn)勾勒的,而不是像檢測(cè)那樣給出邊界框。



          圖1 街景分割

          圖像分割可以分為兩類:語義分割(Semantic Segmentation)和實(shí)例分割(Instance Segmentation),其區(qū)別如圖2所示。

          圖2 圖像分割中的語義分割和實(shí)例分割

          可以看到語義分割只是簡(jiǎn)單地對(duì)圖像中各個(gè)像素點(diǎn)分類,但是實(shí)例分割更進(jìn)一步,需要區(qū)分開不同物體,這更加困難,從一定意義上來說,實(shí)例分割更像是語義分割加檢測(cè)。這里我們主要關(guān)注語義分割。


          與檢測(cè)模型類似,語義分割模型也是建立是分類模型基礎(chǔ)上的,即利用CNN網(wǎng)絡(luò)來提取特征進(jìn)行分類。對(duì)于CNN分類模型,一般情況下會(huì)存在stride>1的卷積層和池化層來降采樣,此時(shí)特征圖維度降低,但是特征更高級(jí),語義更豐富。這對(duì)于簡(jiǎn)單的分類沒有問題,因?yàn)樽罱K只預(yù)測(cè)一個(gè)全局概率,對(duì)于分割模型就無法接受,因?yàn)槲覀冃枰o出圖像不同位置的分類概率,特征圖過小時(shí)會(huì)損失很多信息。其實(shí)對(duì)于檢測(cè)模型同樣存在這個(gè)問題,但是由于檢測(cè)比分割更粗糙,所以分割對(duì)于這個(gè)問題更嚴(yán)重。但是下采樣層又是不可缺少的,首先stride>1的下采樣層對(duì)于提升感受野非常重要,這樣高層特征語義更豐富,而且對(duì)于分割來說較大的感受野也至關(guān)重要;另外的一個(gè)現(xiàn)實(shí)問題,沒有下采樣層,特征圖一直保持原始大小,計(jì)算量是非常大的。相比之下,對(duì)于前面的特征圖,其保持了較多的空間位置信息,但是語義會(huì)差一些,但是這些空間信息對(duì)于精確分割也是至關(guān)重要的。這是語義分割所面臨的一個(gè)困境或者矛盾,也是大部分研究要一直解決的。


          對(duì)于這個(gè)問題,主要存在兩種不同的解決方案,如圖3所示。其中a是原始的FCN([Fully Convolutional Networks for Semantic Segmentation](https://arxiv.org/abs/1411.4038)),圖片送進(jìn)網(wǎng)絡(luò)后會(huì)得到小32x的特征圖,雖然語義豐富但是空間信息損失嚴(yán)重導(dǎo)致分割不準(zhǔn)確,這稱為FCN-32s,另外paper還設(shè)計(jì)了FCN-8s,大致是結(jié)合不同level的特征逐步得到相對(duì)精細(xì)的特征,效果會(huì)好很多。為了得到高分辨率的特征,一種更直觀的解決方案是b中的EncoderDecoder結(jié)構(gòu),其中Encoder就是下采樣模塊,負(fù)責(zé)特征提取,而Decoder是上采樣模塊(通過插值,轉(zhuǎn)置卷積等方式),負(fù)責(zé)恢復(fù)特征圖大小,一般兩個(gè)模塊是對(duì)稱的,經(jīng)典的網(wǎng)絡(luò)如U-Net([U-Net: Convolutional Networks for Biomedical Image Segmentation]

          (https://arxiv.org/abs/1505.04597))。而要直接將高層特征圖恢復(fù)到原始大小是相對(duì)困難的,所以Decoder是一個(gè)漸進(jìn)的過程,而且要引入橫向連接(lateral connection),即引入低級(jí)特征增加空間信息特征分割準(zhǔn)確度,橫向連接可以通過concat或者sum操作來實(shí)現(xiàn)。另外一種結(jié)構(gòu)是c中的DilatedFCN,主要是通過空洞卷積(Atrous Convolution)來減少下采樣率但是又可以保證感受野,如圖中的下采樣率只有8x,那么最終的特征圖語義不僅語義豐富而且相對(duì)精細(xì),可以直接通過插值恢復(fù)原始分辨率。天下沒有免費(fèi)的午餐,保持分辨率意味著較大的運(yùn)算量,這是該架構(gòu)的弊端。這里介紹的DeepLabv3+就是屬于典型的DilatedFCN,它是Google提出的DeepLab系列的第4彈。

          圖3 語義分割不同架構(gòu)(來源:https://arxiv.org/abs/1903.11816)


          01.整體架構(gòu)


          DeepLabv3+模型的整體架構(gòu)如圖4所示,它的Decoder的主體是帶有空洞卷積的DCNN,可以采用常用的分類網(wǎng)絡(luò)如ResNet,然后是帶有空洞卷積的空間金字塔池化模塊(Atrous Spatial Pyramid Pooling, ASPP)),主要是為了引入多尺度信息;相比DeepLabv3,v3+引入了Decoder模塊,其將底層特征與高層特征進(jìn)一步融合,提升分割邊界準(zhǔn)確度。從某種意義上看,DeepLabv3+在DilatedFCN基礎(chǔ)上引入了EcoderDecoder的思路。

          圖4 DeepLabv3+模型的整體架構(gòu)

          對(duì)于DilatedFCN,主要是修改分類網(wǎng)絡(luò)的后面block,用空洞卷積來替換stride=2的下采樣層,如下圖所示:其中a是原始FCN,由于下采樣的存在,特征圖不斷降低;而b為DilatedFCN,在第block3后引入空洞卷積,在維持特征圖大小的同時(shí)保證了感受野和原始網(wǎng)絡(luò)一致。

          圖5 DilatedFCN與傳統(tǒng)FCN對(duì)比

          在DeepLab中,將輸入圖片與輸出特征圖的尺度之比記為output_stride,如上圖的output_stride為16,如果加上ASPP結(jié)構(gòu),就變成如下圖6所示。其實(shí)這就是DeepLabv3結(jié)構(gòu),v3+只不過是增加了Decoder模塊。這里的DCNN可以是任意的分類網(wǎng)絡(luò),一般又稱為backbone,如采用ResNet網(wǎng)絡(luò)。

          圖6 output_stride=16的DeepLabv3結(jié)構(gòu)


          02. 空洞卷積


          空洞卷積(Atrous Convolution)是DeepLab模型的關(guān)鍵之一,它可以在不改變特征圖大小的同時(shí)控制感受野,這有利于提取多尺度信息。空洞卷積如下圖所示,其中rate(r)控制著感受野的大小,r越大感受野越大。通常的CNN分類網(wǎng)絡(luò)的output_stride=32,若希望DilatedFCN的output_stride=16,只需要將最后一個(gè)下采樣層的stride設(shè)置為1,并且后面所有卷積層的r設(shè)置為2,這樣保證感受野沒有發(fā)生變化。對(duì)于output_stride=8,需要將最后的兩個(gè)下采樣層的stride改為1,并且后面對(duì)應(yīng)的卷積層的rate分別設(shè)為2和4。另外一點(diǎn),DeepLabv3中提到了采用multi-grid方法,針對(duì)ResNet網(wǎng)絡(luò),最后的3個(gè)級(jí)聯(lián)block采用不同rate,若output_stride=16且multi_grid =?(1, 2, 4), 那么最后的3個(gè)block的rate= 2 ·?(1, 2, 4)?=?(2, 4, 8)。這比直接采用(1, 1, 1)要更有效一些,不過結(jié)果相差不是太大。

          圖7 不同rate的空洞卷積


          03.空間金字塔池化(ASPP)


          在DeepLab中,采用空間金字塔池化模塊來進(jìn)一步提取多尺度信息,這里是采用不同rate的空洞卷積來實(shí)現(xiàn)這一點(diǎn)。ASPP模塊主要包含以下幾個(gè)部分:

          (1)?一個(gè)1×1卷積層,以及三個(gè)3x3的空洞卷積,對(duì)于output_stride=16,其rate為(6, 12, 18)?,若output_stride=8,rate加倍(這些卷積層的輸出channel數(shù)均為256,并且含有BN層);

          (2)一個(gè)全局平均池化層得到image-level特征,然后送入1x1卷積層(輸出256個(gè)channel),并雙線性插值到原始大小;

          (3)將(1)和(2)得到的4個(gè)不同尺度的特征在channel維度concat在一起,然后送入1x1的卷積進(jìn)行融合并得到256-channel的新特征。

          圖8 DeepLab中的ASPP

          ASPP主要是為了抓取多尺度信息,這對(duì)于分割準(zhǔn)確度至關(guān)重要,一個(gè)與ASPP結(jié)構(gòu)比較像的是[PSPNet](https://arxiv.org/abs/1612.01105)中的金字塔池化模塊,如下圖所示,主要區(qū)別在于這里采用池化層來獲取多尺度特征。

          圖9 PSPNet中的金字塔池化層

          此外作者在近期的文章([Searching?for?Efficient?Multi-Scale?Architectures?for?Dense?Image?Prediction](https://arxiv.org/pdf/1809.04184.pdf))還嘗試了采用NAS來搜索比ASPP更有效的模塊,文中稱為DPC(Dense Prediction Cell),其搜索空間包括了1x1卷積,不同rate的3x3空洞卷積,以及不同size的平均池化層,下圖是NAS得到的最優(yōu)DPC,這是人工所難以設(shè)計(jì)的。

          圖10 最優(yōu)DPC


          04.Decoder


          對(duì)于DeepLabv3,經(jīng)過ASPP模塊得到的特征圖的output_stride為8或者16,其經(jīng)過1x1的分類層后直接雙線性插值到原始圖片大小,這是一種非常暴力的decoder方法,特別是output_stride=16。然而這并不利于得到較精細(xì)的分割結(jié)果,故v3+模型中借鑒了EncoderDecoder結(jié)構(gòu),引入了新的Decoder模塊,如下圖所示。首先將encoder得到的特征雙線性插值得到4x的特征,然后與encoder中對(duì)應(yīng)大小的低級(jí)特征concat,如ResNet中的Conv2層,由于encoder得到的特征數(shù)只有256,而低級(jí)特征維度可能會(huì)很高,為了防止encoder得到的高級(jí)特征被弱化,先采用1x1卷積對(duì)低級(jí)特征進(jìn)行降維(paper中輸出維度為48)。兩個(gè)特征concat后,再采用3x3卷積進(jìn)一步融合特征,最后再雙線性插值得到與原始圖片相同大小的分割預(yù)測(cè)。

          圖11 DeepLab中的Decoder


          05.改進(jìn)的Xception模型


          DeepLabv3所采用的backbone是ResNet網(wǎng)絡(luò),在v3+模型作者嘗試了改進(jìn)的Xception,Xception網(wǎng)絡(luò)主要采用depthwise separable convolution,這使得Xception計(jì)算量更小。改進(jìn)的Xception主要體現(xiàn)在以下幾點(diǎn):

          1. 參考MSRA的修改([Deformable?Convolutional?Networks](https://arxiv.org/abs/1703.06211)),增加了更多的層;

          2. 所有的最大池化層使用stride=2的depthwise separable convolutions替換,這樣可以改成空洞卷積?;

          3. 與MobileNet類似,在3x3 depthwise convolution后增加BN和ReLU。


          采用改進(jìn)的Xception網(wǎng)絡(luò)作為backbone,DeepLab網(wǎng)絡(luò)分割效果上有一定的提升。作者還嘗試了在ASPP中加入depthwise separable convolution,發(fā)現(xiàn)在基本不影響模型效果的前提下減少計(jì)算量。

          圖12 修改的Xception網(wǎng)絡(luò)


          結(jié)合上面的點(diǎn),DeepLabv3+在VOC數(shù)據(jù)集上的取得很好的分割效果:


          關(guān)于DeepLab模型的實(shí)現(xiàn),Google已經(jīng)開源在[tensorflow/models](https://github.com/tensorflow/models/tree/master/research/deeplab),采用Google自家的slim來實(shí)現(xiàn)的。一點(diǎn)題外話是,作者最近有研究了NAS在分割網(wǎng)絡(luò)的探索,叫做Auto-DeepLab([Auto-DeepLab:Hierarchical Neural Architecture Search for Semantic Image Segmentation](https://arxiv.org/pdf/1901.02985v1.pdf)),不同于前面的工作,這個(gè)真正是網(wǎng)絡(luò)級(jí)別的NAS,其搜索空間更大。


          06.小結(jié)


          DeepLab作為DilatedFCN的典范還是值得學(xué)習(xí)的,其分割效果也是極其好的。但是由于存在空洞卷積,DeepLab的計(jì)算復(fù)雜度要高一些,特別是output_stride=8,對(duì)于一些要求低延遲的場(chǎng)景如無人車,還是需要更加輕量級(jí)的分割模型,這也是近來的研究熱點(diǎn)。


          參考文獻(xiàn)

          1. [Rethinking?Atrous?Convolution?for?Semantic?Image?Segmentation]

            (https://arxiv.org/abs/1706.05587)

          2. [Encoder?Decoder?with?Atrous?Separable?Convolution?for?Semantic?Image?Segmentation](https://arxiv.org/abs/1802.02611v1)


          下載1:OpenCV-Contrib擴(kuò)展模塊中文版教程
          在「小白學(xué)視覺」公眾號(hào)后臺(tái)回復(fù):擴(kuò)展模塊中文教程即可下載全網(wǎng)第一份OpenCV擴(kuò)展模塊教程中文版,涵蓋擴(kuò)展模塊安裝、SFM算法、立體視覺、目標(biāo)跟蹤、生物視覺、超分辨率處理等二十多章內(nèi)容。

          下載2:Python視覺實(shí)戰(zhàn)項(xiàng)目52講
          小白學(xué)視覺公眾號(hào)后臺(tái)回復(fù):Python視覺實(shí)戰(zhàn)項(xiàng)目即可下載包括圖像分割、口罩檢測(cè)、車道線檢測(cè)、車輛計(jì)數(shù)、添加眼線、車牌識(shí)別、字符識(shí)別、情緒檢測(cè)、文本內(nèi)容提取、面部識(shí)別等31個(gè)視覺實(shí)戰(zhàn)項(xiàng)目,助力快速學(xué)校計(jì)算機(jī)視覺。

          下載3:OpenCV實(shí)戰(zhàn)項(xiàng)目20講
          小白學(xué)視覺公眾號(hào)后臺(tái)回復(fù):OpenCV實(shí)戰(zhàn)項(xiàng)目20講即可下載含有20個(gè)基于OpenCV實(shí)現(xiàn)20個(gè)實(shí)戰(zhàn)項(xiàng)目,實(shí)現(xiàn)OpenCV學(xué)習(xí)進(jìn)階。

          交流群


          歡迎加入公眾號(hào)讀者群一起和同行交流,目前有SLAM、三維視覺、傳感器自動(dòng)駕駛、計(jì)算攝影、檢測(cè)、分割、識(shí)別、醫(yī)學(xué)影像、GAN算法競(jìng)賽等微信群(以后會(huì)逐漸細(xì)分),請(qǐng)掃描下面微信號(hào)加群,備注:”昵稱+學(xué)校/公司+研究方向“,例如:”張三?+?上海交大?+?視覺SLAM“。請(qǐng)按照格式備注,否則不予通過。添加成功后會(huì)根據(jù)研究方向邀請(qǐng)進(jìn)入相關(guān)微信群。請(qǐng)勿在群內(nèi)發(fā)送廣告,否則會(huì)請(qǐng)出群,謝謝理解~


          瀏覽 42
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  中文字幕av中文字幕 | 日本亚洲欧美 | 2024男人天堂 | 操逼网123首页 | 久久丁香五月天综合网 |