乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      語義分割(semantic segmentation) 常用神經(jīng)網(wǎng)絡(luò)介紹對比

       LibraryPKU 2019-02-28

      前言

      在這里,先介紹幾個(gè)概念,也是圖像處理當(dāng)中的最常見任務(wù).

      • 語義分割(semantic segmentation)

      • 目標(biāo)檢測(object detection)

      • 目標(biāo)識(shí)別(object recognition)

      • 實(shí)例分割(instance segmentation)

      語義分割

      首先需要了解一下什么是語義分割(semantic segmentation).

      語義分割,簡單來說就是給定一張圖片,對圖片中的每一個(gè)像素點(diǎn)進(jìn)行分類

      比如說下圖,原始圖片是一張街景圖片,經(jīng)過語義分割之后的圖片就是一個(gè)包含若干種顏色的圖片,其中每一種顏色都代表一類.


       

      圖像語義分割是AI領(lǐng)域中一個(gè)重要的分支,是機(jī)器視覺技術(shù)中關(guān)于圖像理解的重要一環(huán).

      有幾個(gè)比較容易混淆的概念,分別是目標(biāo)檢測(object detection),目標(biāo)識(shí)別(object recognition),實(shí)例分割(instance segmentation),下面來一一介紹.

      目標(biāo)檢測

      目標(biāo)檢測,就是在一張圖片中找到并用box標(biāo)注出所有的目標(biāo).

      注意,目標(biāo)檢測和目標(biāo)識(shí)別不同之處在于,目標(biāo)檢測只有兩類,目標(biāo)和非目標(biāo).

      如下圖所示:


       

      目標(biāo)識(shí)別

      目標(biāo)識(shí)別,就是檢測和用box標(biāo)注出所有的物體,并標(biāo)注類別.

      如下圖所示:


       

      實(shí)例分割

      實(shí)例分割,對圖像中的每一個(gè)像素點(diǎn)進(jìn)行分類,同種物體的不同實(shí)例也用不同的類標(biāo)進(jìn)行標(biāo)注.

      下圖展示了語義分割和實(shí)例分割之間的區(qū)別:

      中間是實(shí)例分割,右圖是語義分割.


       

      PASCAL VOC

      PASCAL VOC是一個(gè)正在進(jìn)行的,目標(biāo)檢測,目標(biāo)識(shí)別,語義分割的挑戰(zhàn).

      這里是它的主頁,這里是leader board,很多公司和團(tuán)隊(duì)都參與了這個(gè)挑戰(zhàn),很多經(jīng)典論文都是采用這個(gè)挑戰(zhàn)的數(shù)據(jù)集和結(jié)果發(fā)表論文,包括RCNN,FCN等.

      關(guān)于這個(gè)挑戰(zhàn),有興趣的同學(xué)可以讀一下這篇論文

      FCN

      FCN,全卷積神經(jīng)網(wǎng)絡(luò),是目前做語義分割的最常用的網(wǎng)絡(luò).

      Fully convolutional networks for semantic segmentation 是2015年發(fā)表在CVPR上的一片論文,提出了全卷積神經(jīng)網(wǎng)絡(luò)的概念,差點(diǎn)得了當(dāng)前的最佳論文,沒有評上的原因好像是有人質(zhì)疑,全卷積并不是一個(gè)新的概念,因?yàn)槿B接層也可以看作是卷積層,只不過卷積核是原圖大小而已.

      FCN與CNN

      在一般的卷積神經(jīng)網(wǎng)絡(luò)中,一般結(jié)構(gòu)都是前幾層是卷積層加池化,最后跟2-3層的全連接層,輸出分類結(jié)果,如下圖所示:


       

      這個(gè)結(jié)構(gòu)就是AlexNet的結(jié)構(gòu),用來進(jìn)行ImageNet中的圖片分類,最后一層是一個(gè)輸出為1000*1向量的全連接層,因?yàn)橐还灿?000個(gè)類,向量中的每一維都代表了當(dāng)前類的概率,其中tabby cat的概率是最大的.

      而在全卷積神經(jīng)網(wǎng)絡(luò)中,沒有了全連接層,取而代之的是卷積層,如下圖所示:


       

      最后一層輸出的是1000個(gè)二維數(shù)組,其中每一個(gè)數(shù)組可以可視化成為一張圖像,圖中的每一個(gè)像素點(diǎn)的灰度值都是代表當(dāng)前像素點(diǎn)屬于該類的概率,比如在這1000張圖像中,取出其中代表tabby cat的概率圖,顏色從藍(lán)到紅,代表當(dāng)前點(diǎn)屬于該類的概率就越大.

      可以看出FCN與CNN之間的區(qū)別就是把最后幾層的全連接層換成了卷積層,這樣做的好處就是能夠進(jìn)行dense prediction.

      從而可是實(shí)現(xiàn)FCN對圖像進(jìn)行像素級的分類,從而解決了語義級別的圖像分割(semantic segmentation)問題。與經(jīng)典的CNN在卷積層之后使用全連接層得到固定長度的特征向量進(jìn)行分類(全聯(lián)接層+softmax輸出)不同,F(xiàn)CN可以接受任意尺寸的輸入圖像,采用反卷積層對最后一個(gè)卷積層的feature map進(jìn)行上采樣, 使它恢復(fù)到輸入圖像相同的尺寸,從而可以對每個(gè)像素都產(chǎn)生了一個(gè)預(yù)測, 同時(shí)保留了原始輸入圖像中的空間信息, 最后在上采樣的特征圖上進(jìn)行逐像素分類。


       

      FCN語義分割

      在進(jìn)行語義分割的時(shí)候,需要解決的一個(gè)重要問題就是,如何把定位和分類這兩個(gè)問題結(jié)合起來,畢竟語義分割就是進(jìn)行逐個(gè)像素點(diǎn)的分類,就是把where和what兩個(gè)問題結(jié)合在了一起進(jìn)行解決.

      在前面幾層卷積層,分辨率比較高,像素點(diǎn)的定位比較準(zhǔn)確,后面幾層卷積層,分辨率比較低,像素點(diǎn)的分類比較準(zhǔn)確,所以為了更加準(zhǔn)確的分割,需要把前面高分辨率的特征和后面的低分辨率特征結(jié)合起來.


       

      如上圖所示,對原圖像進(jìn)行卷積conv1、pool1后原圖像縮小為1/2;之后對圖像進(jìn)行第二次conv2、pool2后圖像縮小為1/4;接著繼續(xù)對圖像進(jìn)行第三次卷積操作conv3、pool3縮小為原圖像的1/8,此時(shí)保留pool3的featureMap;接著繼續(xù)對圖像進(jìn)行第四次卷積操作conv4、pool4,縮小為原圖像的1/16,保留pool4的featureMap;最后對圖像進(jìn)行第五次卷積操作conv5、pool5,縮小為原圖像的1/32,然后把原來CNN操作中的全連接變成卷積操作conv6、conv7,圖像的featureMap數(shù)量改變但是圖像大小依然為原圖的1/32,此時(shí)進(jìn)行32倍的上采樣可以得到原圖大小,這個(gè)時(shí)候得到的結(jié)果就是叫做FCN-32s.

      這個(gè)時(shí)候可以看出,FCN-32s結(jié)果明顯非常平滑,不精細(xì). 針對這個(gè)問題,作者采用了combining what and where的方法,具體來說,就是在FCN-32s的基礎(chǔ)上進(jìn)行fine tuning,把pool4層和conv7的2倍上采樣結(jié)果相加之后進(jìn)行一個(gè)16倍的上采樣,得到的結(jié)果是FCN-16s.

      之后在FCN-16s的基礎(chǔ)上進(jìn)行fine tuning,把pool3層和2倍上采樣的pool4層和4倍上采樣的conv7層加起來,進(jìn)行一個(gè)8倍的上采樣,得到的結(jié)果就是FCN-8s.

      可以看出結(jié)果明顯是FCN-8s好于16s,好于32s的.


       

      上圖從左至右分別是原圖,FCN-32s,FCN-16s,FCN-8s.

      FCN的優(yōu)點(diǎn),能夠end-to-end, pixels-to-pixels,而且相比于傳統(tǒng)的基于cnn做分割的網(wǎng)絡(luò)更加高效,因?yàn)楸苊饬擞捎谑褂孟袼貕K而帶來的重復(fù)存儲(chǔ)和計(jì)算卷積的問題。

      FCN的缺點(diǎn)也很明顯,首先是訓(xùn)練比較麻煩,需要訓(xùn)練三次才能夠得到FCN-8s,而且得到的結(jié)果還是不精細(xì),對圖像的細(xì)節(jié)不夠敏感,這是因?yàn)樵谶M(jìn)行decode,也就是恢復(fù)原圖像大小的過程時(shí),輸入上采樣層的label map太稀疏,而且上采樣過程就是一個(gè)簡單的deconvolution. 
      其次是對各個(gè)像素進(jìn)行分類,沒有考慮到像素之間的關(guān)系.忽略了在通常的基于像素分類的分割方法中使用的空間規(guī)整步驟,缺乏空間一致性.

      U-net

      U-net 是基于FCN的一個(gè)語義分割網(wǎng)絡(luò),適合用來做醫(yī)學(xué)圖像的分割.

      下面是U-net 的結(jié)構(gòu)圖:


       

      結(jié)構(gòu)比較清晰,也很優(yōu)雅,成一個(gè)U狀.

      和FCN相比,結(jié)構(gòu)上比較大的改動(dòng)在上采樣階段,上采樣層也包括了很多層的特征.

      還有一個(gè)比FCN好的地方在于,Unet只需要一次訓(xùn)練,FCN需要三次訓(xùn)練.

      我實(shí)現(xiàn)了unet的網(wǎng)絡(luò)結(jié)構(gòu),代碼在: https://github.com/zhixuhao/unet
      是用keras實(shí)現(xiàn)的,關(guān)于數(shù)據(jù)集和訓(xùn)練測試,可以參考我這一篇博文: http://blog.csdn.net/u012931582/article/details/70215756

      SegNet

      SegNet 是一個(gè)encoder-decoder結(jié)構(gòu)的卷積神經(jīng)網(wǎng)絡(luò).

      這里是官方網(wǎng)站:http://mi.eng./projects/segnet/

      SegNet 的結(jié)構(gòu)如下所示:


       

      可以看出,整個(gè)結(jié)構(gòu)就是一個(gè)encoder和一個(gè)decoder.前面的encoder就是采用的vgg-16的網(wǎng)絡(luò)結(jié)構(gòu),而decoder和encoder基本上就是對稱的結(jié)構(gòu).

      SegNet和FCN最大的不同就在于decoder的upsampling方法,上圖結(jié)構(gòu)中,注意,前面encoder每一個(gè)pooling層都把pooling indices保存,并且傳遞到后面對稱的upsampling層. 進(jìn)行upsampling的過程具體如下:


       

      左邊是SegNet的upsampling過程,就是把feature map的值 abcd, 通過之前保存的max-pooling的坐標(biāo)映射到新的feature map中,其他的位置置零.

      右邊是FCN的upsampling過程,就是把feature map, abcd進(jìn)行一個(gè)反卷積,得到的新的feature map和之前對應(yīng)的encoder feature map 相加.

      實(shí)驗(yàn)

      文章中說,他們用了CamVid 這個(gè)數(shù)據(jù)集進(jìn)行了一下,這個(gè)數(shù)據(jù)集主要是街景圖片,總共有11個(gè)類,367張訓(xùn)練圖片,233張測試圖片,是一個(gè)比較小的數(shù)據(jù)集.

      下圖是分割結(jié)果的對比:


       

      DeconvNet

      DeconvNet 是一個(gè)convolution-deconvolution結(jié)構(gòu)的神經(jīng)網(wǎng)絡(luò),和SegNet非常相似

      是一篇2015年ICCV上的文章: Learning Deconvolution Network for Semantic Segmentation

      下面是它的結(jié)構(gòu)圖:


       

      前面的convolution network 和SegNet的encoder部分是一樣的,都是采用了VGG16的結(jié)構(gòu),只不過DeconvNet后面添加了兩個(gè)全連接層.

      在進(jìn)行upsampling的時(shí)候,SegNet和DeconvNet基本上是一致的,都是進(jìn)行了unpooling,就是需要根據(jù)之前pooling時(shí)的位置把feature map的值映射到新的feature map上,unpooling 之后需要接一個(gè)反卷積層.

      總結(jié)

      可以看出,這些網(wǎng)絡(luò)的結(jié)構(gòu)都是非常相似的,都是基于encoder-decoder結(jié)構(gòu)的,只不過說法不同,前面是一些卷積層,加上池化層,后面的decoder其實(shí)就是進(jìn)行upsampling,這些網(wǎng)絡(luò)的最主要區(qū)別就是upsampling的不同.

      FCN進(jìn)行upsampling的方法就是對feature map進(jìn)行反卷積,然后和高分辨率層的feature map相加.

      Unet進(jìn)行upsampling的方法和FCN一樣.

      DeconvNet進(jìn)行upsampling的方法就是進(jìn)行unpooling,就是需要根據(jù)之前pooling時(shí)的位置把feature map的值映射到新的feature map上,unpooling 之后需要接一個(gè)反卷積層.

      SegNet進(jìn)行upsampling的方法和DeconvNet一樣.

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多