<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>

          深度 | 圖像語義分割的工作原理和CNN架構(gòu)變遷

          共 4208字,需瀏覽 9分鐘

           ·

          2022-06-20 16:01

          點(diǎn)擊下方卡片,關(guān)注“新機(jī)器視覺”公眾號

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



          圖像分割是根據(jù)圖像內(nèi)容對指定區(qū)域進(jìn)行標(biāo)記的計算機(jī)視覺任務(wù),簡言之就是「這張圖片里有什么,其在圖片中的位置是什么?」本文聚焦于語義分割任務(wù),即在分割圖中將同一類別的不同實(shí)例視為同一對象。作者將沿著該領(lǐng)域的研究脈絡(luò),說明如何用卷積神經(jīng)網(wǎng)絡(luò)處理語義圖像分割的任務(wù)。


          更具體地講,語義圖像分割的目標(biāo)在于標(biāo)記圖片中每一個像素,并將每一個像素與其表示的類別對應(yīng)起來。因?yàn)闀A(yù)測圖像中的每一個像素,所以一般將這樣的任務(wù)稱為密集預(yù)測。


          語義分割的例子,目標(biāo)是預(yù)測圖像中每一個像素的類別標(biāo)簽。(圖源:http://host.robots.ox.ac.uk/pascal/VOC/voc2012/#devkit)


          當(dāng)我們有越來越多要用機(jī)器執(zhí)行的任務(wù)時,為這些機(jī)器配備必需的感知器是很重要的。


          自動駕駛中實(shí)時語義分割道路場景。(圖源:https://m.youtube.com/watch?v=ATlcEDSPWXY)


          還有一點(diǎn)要注意的是我們不會分割同一類別的實(shí)例,只需要關(guān)注每一個像素的類別。換句話講,如果在輸入圖像中有兩個目標(biāo)屬于同一類,分割映射不會將其分為單獨(dú)的兩個目標(biāo)。


          相對地,實(shí)例分割模型是另一種不同的模型,該模型可以區(qū)分同一類的不同目標(biāo)。


          任務(wù)表征

          簡單地說,我們的目標(biāo)是要用 RGB 圖(高 x 寬 x3)或灰度圖(高 x 寬 x1)為輸入,并輸出一個分割圖,在分割圖中每個像素都包括一個用整數(shù)表示的類別標(biāo)簽(高 x 寬 x1)。

          注意:為了視覺上的理解簡單起見,我標(biāo)記的是分辨率比較低的預(yù)測圖。事實(shí)上,分割標(biāo)簽的分辨率是和原始輸入圖的分辨率相對應(yīng)的。


          與我們處理標(biāo)準(zhǔn)分類值的方法相似,我們通過獨(dú)熱編碼類別標(biāo)簽的方法創(chuàng)建目標(biāo)——本質(zhì)上講是要為每一個可能的類創(chuàng)建一個輸出通道。



          然后我們可以利用每一個像素位深向量的 argmax 函數(shù)將預(yù)測值分解為分割映射(如上圖所示)。


          也可以通過將目標(biāo)重疊在輸入圖像上來對目標(biāo)進(jìn)行觀察。


          建立網(wǎng)絡(luò)架構(gòu)

          針對這項(xiàng)任務(wù)簡單地構(gòu)建神經(jīng)網(wǎng)絡(luò)架構(gòu)的方法是簡單地堆疊大量卷積層(用 same 填充保留維度)后輸出最終的分割映射。通過特征圖的接連轉(zhuǎn)換,直接從輸入圖像學(xué)到了相對應(yīng)的分割映射;然而,在整個網(wǎng)絡(luò)中要保留完整分辨率的計算成本是很高的。


          圖源:http://cs231n.stanford.edu/slides/2017/cs231n_2017_lecture11.pdf


          回顧深度卷積網(wǎng)絡(luò),前期的卷積層更傾向于學(xué)習(xí)低級概念,而后期的卷積層則會產(chǎn)生更高級(且專一)的特征圖。為了保持表達(dá)性,一般而言,當(dāng)我們到達(dá)更深層的網(wǎng)絡(luò)時,需要增加特征圖(通道)的數(shù)量。


          對圖像分類任務(wù)而言,這不一定會造成什么問題,因?yàn)閷@個任務(wù)而言,我們只需要關(guān)注圖像里面有什么(而不是目標(biāo)類別對象的位置)。因此,我們可以通過池化或逐步卷積(即壓縮空間分辨率)定期對特征圖進(jìn)行下采樣以緩和計算壓力。


          常用的圖像分割模型的方法遵循編碼器/解碼器結(jié)構(gòu),在這個結(jié)構(gòu)中,我們對輸入的空間分辨率下采樣,產(chǎn)生分辨率更低的特征圖,通過學(xué)習(xí)這些特征圖可以更高效地分辨類別,還可以將這些特征表征上采樣至完整分辨率的分割圖。


          圖源:http://cs231n.stanford.edu/slides/2017/cs231n_2017_lecture11.pdf


          上采樣方法


          我們可以用很多不一樣的方法對特征圖的分辨率上采樣。池化操作通過匯總局部區(qū)域的單個值(平均池化或最大池化)下采樣分辨率,「上池化」操作通過將單個值分配給更高的分辨率對分辨率進(jìn)行上采樣。


          圖源:http://cs231n.stanford.edu/slides/2017/cs231n_2017_lecture11.pdf


          迄今為止,轉(zhuǎn)置卷積(transpose convolutions)是最常用的方法,因?yàn)檗D(zhuǎn)置卷積允許我們開發(fā)學(xué)習(xí)過的上采樣。


          圖源:http://cs231n.stanford.edu/slides/2017/cs231n_2017_lecture11.pdf


          與轉(zhuǎn)置卷積相反,經(jīng)典的卷積運(yùn)算會將卷積核權(quán)重與當(dāng)前值進(jìn)行點(diǎn)積,并為相應(yīng)輸出位置產(chǎn)生單個值。轉(zhuǎn)置卷積會先從低分辨率的特征映射中得到單個值,再用該值與卷積核中所有權(quán)重相乘,然后將這些加權(quán)值映射到輸出特征圖中。

          通過轉(zhuǎn)置運(yùn)算進(jìn)行上采樣的 1D 的例子(圖源:http://cs231n.stanford.edu/slides/2017/cs231n_2017_lecture11.pdf)


          對在輸出特征映射圖中產(chǎn)生重疊(如下圖所示是步長為 2 的 3x3 卷積核)的卷積核尺寸而言,重疊值是簡單的疊加。不幸的是,這會在輸出中產(chǎn)生棋盤效應(yīng)(棋盤狀偽影),所以最好保證卷積核不會產(chǎn)生重疊。

          輸入是藍(lán)色格子,輸出是綠色格子。(圖源:https://github.com/vdumoulin/conv_arithmetic)


          全卷積網(wǎng)絡(luò)


          Long 等人在 2014 年末介紹了使用「全卷積」網(wǎng)絡(luò)對圖像分割的任務(wù)進(jìn)行端到端、像素到像素的訓(xùn)練方法 (https://arxiv.org/abs/1411.4038)。這篇論文的作者提出將現(xiàn)有的、經(jīng)過充分研究的圖像分類網(wǎng)絡(luò)(如 AlexNet)作為網(wǎng)絡(luò)的編碼模塊,用轉(zhuǎn)置卷積層作為解碼模塊,將粗略的特征圖上采樣至全分辨率的分割圖。


          圖源:https://arxiv.org/abs/1411.4038


          如下圖所示,完整的網(wǎng)絡(luò)是根據(jù)像素層面的交叉熵?fù)p失訓(xùn)練的。


          圖源:https://arxiv.org/abs/1411.4038


          但因?yàn)榫幋a模塊將輸入的分辨率降低了 32 倍,所以解碼模塊難以產(chǎn)生精細(xì)的分割圖(如下圖所示)。



          文章作者是這樣說明這一問題的:


          語義分割面臨的主要是語義和位置之間的緊張關(guān)系:全局信息解決語義問題,而局部信息解決位置問題……將精細(xì)層和粗略層結(jié)合,使模型做出不違背全局結(jié)構(gòu)的局部預(yù)測。


          添加跳過連接


          作者通過緩慢地對編碼表征進(jìn)行上采樣以解決這個問題,在前期層中加入「跳過連接」,并匯總這兩個特征圖。


          圖源:https://arxiv.org/abs/1411.4038(有修改)


          這些來自網(wǎng)絡(luò)較前期層的跳過連接(在下采樣操作之前)應(yīng)該提供必要的細(xì)節(jié),以準(zhǔn)確重建分割圖邊界的形狀。事實(shí)上,我們的確可以用添加的這些跳過連接恢復(fù)更精細(xì)的細(xì)節(jié)。



          Ronneberger 等人通過擴(kuò)展網(wǎng)絡(luò)解碼模塊的容量改進(jìn)「全卷積」結(jié)構(gòu) (https://arxiv.org/abs/1505.04597)。更具體地講,他們提出了「由捕獲內(nèi)容的收縮路徑和(對稱的)精確定位的擴(kuò)張路徑組成」的 U-Net 架構(gòu)。這個更簡單的架構(gòu)已經(jīng)很常用了,而且適用于大量分割問題。


          圖源:https://arxiv.org/abs/1411.4038


          注意:由于使用了 valid 填充,原始架構(gòu)會導(dǎo)致分辨率下降。但也有人選擇使用 same 填充,這些填充值是從邊界處圖像映射中獲取的。


          Long 等人(FCN 論文)認(rèn)為數(shù)據(jù)的擴(kuò)增不會導(dǎo)致模型性能的明顯提升,Ronneberger 等人(U-Net 論文)相信對模型學(xué)習(xí)而言數(shù)據(jù)擴(kuò)增是關(guān)鍵概念??磥?,數(shù)據(jù)擴(kuò)增的有用程度也許與問題領(lǐng)域有關(guān)。


          高級的 U-Net 變體


          標(biāo)準(zhǔn)的 U-Net 模型由架構(gòu)中每個「塊」的一系列卷積運(yùn)算組成。一般的卷積網(wǎng)絡(luò)架構(gòu)存在大量更高級的「塊」,這些「塊」可以替換堆棧卷積層。


          Drozdzal 等人替換了基本的堆疊卷積塊以支持殘差塊(https://arxiv.org/abs/1608.04117)。這種殘差塊在標(biāo)準(zhǔn) U-Net 結(jié)構(gòu)中存在的長程跳過連接(在編碼模塊和解碼模塊相對應(yīng)的特征圖之間)中引入了短程跳過連接。他們認(rèn)為短程跳過連接在訓(xùn)練時可以更快地收斂,而且可以訓(xùn)練更深層的網(wǎng)絡(luò)。


          Jegou 等人對此進(jìn)行了擴(kuò)展,在遵循 U-Net 結(jié)構(gòu)的情況下,提出使用密集塊(https://arxiv.org/abs/1611.09326)。他們認(rèn)為「DenseNets 的特征使它們非常適合語義分割,因?yàn)樗鼈兛梢宰匀坏禺a(chǎn)生跳過連接和多級監(jiān)督?!惯@些密集塊很有用,因?yàn)樗鼈冊谇懊娴膶觽鬟f低級特征,直接與更高層的更高級特征并行,從而實(shí)現(xiàn)高效的特征重用。


          圖源:https://arxiv.org/abs/1611.09326(有修改)


          該架構(gòu)的一個非常重要的方面是上采樣路徑在密集塊的輸入和輸出之間沒有跳過連接。作者還指出,因?yàn)椤干喜蓸勇窂皆黾恿颂卣鲌D空間分辨率,特征數(shù)量的線性增長對內(nèi)存要求過高?!挂虼?,只有密集塊的輸出在解碼器模塊中傳遞。


          FC-DenseNet103 模型在 CamVid 數(shù)據(jù)集上得到了最好的結(jié)果(2017 年 10 月)


          擴(kuò)張卷積(空洞卷積)


          對特征映射進(jìn)行下采樣的一個好處是在給定常量卷積核尺寸的情況下擴(kuò)展了感受野(對于輸入)。由于大尺寸卷積核的參數(shù)效率較低(3.1 節(jié)所討論),所以這種方法比增加卷積核尺寸更加合理。然而,這種擴(kuò)展的代價是降低了空間分辨率。


          擴(kuò)張卷積提供了另一種在保留完整空間維度的同時還能獲得廣泛視野的方法。如下圖所示,擴(kuò)張卷積根據(jù)指定的擴(kuò)張率(dilation rate)用值將空間間隔開。

          圖源:https://github.com/vdumoulin/conv_arithmetic


          還有一些架構(gòu)將最后幾個池化層替換為具有連續(xù)增大擴(kuò)張率的擴(kuò)張卷積,這樣可以在防止空間細(xì)節(jié)的丟失的同時保持相同的感受野。然而,要用擴(kuò)張卷積完全替換池化層,計算成本還是很高。


          損失加權(quán)方案

          由于密集預(yù)測的本質(zhì),我們在衡量損失加權(quán)時有很大的靈活性。


          Long 等人(FCN 論文)提出對于每個輸出通道的加權(quán)損失都是為了抵消數(shù)據(jù)集中的類別不平衡。


          與此同時,Ronneberger 等人(U-Net 論文)提出了一種針對每個像素的損失加權(quán)的方案,這種方案使得在分割對象的邊界處有更高的權(quán)重。這個損失加權(quán)方案幫助他們的 U-Net 模型在生物醫(yī)學(xué)圖像中分割出細(xì)胞,從而可以在分割圖中輕易地識別單個細(xì)胞。


          請注意分割圖是如何在細(xì)胞周圍產(chǎn)生清晰的邊界的。(圖源:https://arxiv.org/abs/1505.04597)


          本文僅做學(xué)術(shù)分享,如有侵權(quán),請聯(lián)系刪文。

          —THE END—
          瀏覽 53
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <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>
                  日韩一级片大全 | 久久国产精品久久久 | 久久久久久人人人人人人 | 91乱伦小说 | 国产一区二区三区四区五区六区七区 |