0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

全卷積網(wǎng)絡(luò)FCN是什么?CNN與FCN有什么關(guān)系?

傳感器技術(shù) ? 來源:未知 ? 作者:易水寒 ? 2018-10-14 09:50 ? 次閱讀

CNN能夠?qū)D片進(jìn)行分類,可是怎么樣才能識(shí)別圖片中特定部分的物體,在2015年之前還是一個(gè)世界難題。神經(jīng)網(wǎng)絡(luò)大神Jonathan Long發(fā)表了《Fully Convolutional Networks for Semantic Segmentation》在圖像語義分割挖了一個(gè)坑,于是無窮無盡的人往坑里面跳。

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

CNN 與 FCN

通常CNN網(wǎng)絡(luò)在卷積層之后會(huì)接上若干個(gè)全連接層,將卷積層產(chǎn)生的特征圖(feature map)映射成一個(gè)固定長度的特征向量。以AlexNet為代表的經(jīng)典CNN結(jié)構(gòu)適合于圖像級(jí)的分類和回歸任務(wù),因?yàn)樗鼈冏詈蠖计谕玫秸麄€(gè)輸入圖像的一個(gè)數(shù)值描述(概率),比如AlexNet的ImageNet模型輸出一個(gè)1000維的向量表示輸入圖像屬于每一類的概率(softmax歸一化)。

栗子:下圖中的貓, 輸入AlexNet,得到一個(gè)長為1000的輸出向量,表示輸入圖像屬于每一類的概率,其中在“tabby cat”這一類統(tǒng)計(jì)概率最高。

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

最后逐個(gè)像素計(jì)算softmax分類的損失,相當(dāng)于每一個(gè)像素對(duì)應(yīng)一個(gè)訓(xùn)練樣本。下圖是Longjon用于語義分割所采用的全卷積網(wǎng)絡(luò)(FCN)的結(jié)構(gòu)示意圖:

簡單的來說,F(xiàn)CN與CNN的區(qū)域在把于CNN最后的全連接層換成卷積層,輸出的是一張已經(jīng)Label好的圖片。

其實(shí),CNN的強(qiáng)大之處在于它的多層結(jié)構(gòu)能自動(dòng)學(xué)習(xí)特征,并且可以學(xué)習(xí)到多個(gè)層次的特征:較淺的卷積層感知域較小,學(xué)習(xí)到一些局部區(qū)域的特征;較深的卷積層具有較大的感知域,能夠?qū)W習(xí)到更加抽象一些的特征。這些抽象特征對(duì)物體的大小、位置和方向等敏感性更低,從而有助于識(shí)別性能的提高。下圖CNN分類網(wǎng)絡(luò)的示意圖:

這些抽象的特征對(duì)分類很有幫助,可以很好地判斷出一幅圖像中包含什么類別的物體,但是因?yàn)閬G失了一些物體的細(xì)節(jié),不能很好地給出物體的具體輪廓、指出每個(gè)像素具體屬于哪個(gè)物體,因此做到精確的分割就很有難度。

傳統(tǒng)的基于CNN的分割方法:為了對(duì)一個(gè)像素分類,使用該像素周圍的一個(gè)圖像塊作為CNN的輸入用于訓(xùn)練和預(yù)測。這種方法有幾個(gè)缺點(diǎn):一是存儲(chǔ)開銷很大。例如對(duì)每個(gè)像素使用的圖像塊的大小為15x15,然后不斷滑動(dòng)窗口,每次滑動(dòng)的窗口給CNN進(jìn)行判別分類,因此則所需的存儲(chǔ)空間根據(jù)滑動(dòng)窗口的次數(shù)和大小急劇上升。二是計(jì)算效率低下。相鄰的像素塊基本上是重復(fù)的,針對(duì)每個(gè)像素塊逐個(gè)計(jì)算卷積,這種計(jì)算也有很大程度上的重復(fù)。三是像素塊大小的限制了感知區(qū)域的大小。通常像素塊的大小比整幅圖像的大小小很多,只能提取一些局部的特征,從而導(dǎo)致分類的性能受到限制。

而全卷積網(wǎng)絡(luò)(FCN)則是從抽象的特征中恢復(fù)出每個(gè)像素所屬的類別。即從圖像級(jí)別的分類進(jìn)一步延伸到像素級(jí)別的分類。

全連接層 ->成卷積層

全連接層和卷積層之間唯一的不同就是卷積層中的神經(jīng)元只與輸入數(shù)據(jù)中的一個(gè)局部區(qū)域連接,并且在卷積列中的神經(jīng)元共享參數(shù)。然而在兩類層中,神經(jīng)元都是計(jì)算點(diǎn)積,所以它們的函數(shù)形式是一樣的。

因此,將此兩者相互轉(zhuǎn)化是可能的:

? 對(duì)于任一個(gè)卷積層,都存在一個(gè)能實(shí)現(xiàn)和它一樣的前向傳播函數(shù)的全連接層。權(quán)重矩陣是一個(gè)巨大的矩陣,除了某些特定塊,其余部分都是零。而在其中大部分塊中,元素都是相等的。

? 相反,任何全連接層都可以被轉(zhuǎn)化為卷積層。比如,一個(gè) K=4096 的全連接層,輸入數(shù)據(jù)體的尺寸是 7?7?512,這個(gè)全連接層可以被等效地看做一個(gè) F=7,P=0,S=1,K=4096 的卷積層。換句話說,就是將濾波器的尺寸設(shè)置為和輸入數(shù)據(jù)體的尺寸一致了。因?yàn)橹挥幸粋€(gè)單獨(dú)的深度列覆蓋并滑過輸入數(shù)據(jù)體,所以輸出將變成 1?1?4096,這個(gè)結(jié)果就和使用初始的那個(gè)全連接層一樣了。

全連接層轉(zhuǎn)化為卷積層:在兩種變換中,將全連接層轉(zhuǎn)化為卷積層在實(shí)際運(yùn)用中更加有用。假設(shè)一個(gè)卷積神經(jīng)網(wǎng)絡(luò)的輸入是 224x224x3 的圖像,一系列的卷積層和下采樣層將圖像數(shù)據(jù)變?yōu)槌叽鐬?7x7x512 的激活數(shù)據(jù)體。AlexNet使用了兩個(gè)尺寸為4096的全連接層,最后一個(gè)有1000個(gè)神經(jīng)元的全連接層用于計(jì)算分類評(píng)分。

我們可以將這3個(gè)全連接層中的任意一個(gè)轉(zhuǎn)化為卷積層:

針對(duì)第一個(gè)連接區(qū)域是[7x7x512]的全連接層,令其濾波器尺寸為F=7,這樣輸出數(shù)據(jù)體就為[1x1x4096]了。

針對(duì)第二個(gè)全連接層,令其濾波器尺寸為F=1,這樣輸出數(shù)據(jù)體為[1x1x4096]。

對(duì)最后一個(gè)全連接層也做類似的,令其F=1,最終輸出為[1x1x1000]

實(shí)際操作中,每次這樣的變換都需要把全連接層的權(quán)重W重塑成卷積層的濾波器。那么這樣的轉(zhuǎn)化有什么作用呢?它在下面的情況下可以更高效:讓卷積網(wǎng)絡(luò)在一張更大的輸入圖片上滑動(dòng),得到多個(gè)輸出,這樣的轉(zhuǎn)化可以讓我們在單個(gè)向前傳播的過程中完成上述的操作。

舉個(gè)例子:如果我們想讓224×224尺寸的浮窗,以步長為32在384×384的圖片上滑動(dòng),把每個(gè)經(jīng)停的位置都帶入卷積網(wǎng)絡(luò),最后得到6×6個(gè)位置的類別得分。上述的把全連接層轉(zhuǎn)換成卷積層的做法會(huì)更簡便。如果224×224的輸入圖片經(jīng)過卷積層和下采樣層之后得到了[7x7x512]的數(shù)組,那么,384×384的大圖片直接經(jīng)過同樣的卷積層和下采樣層之后會(huì)得到[12x12x512]的數(shù)組。然后再經(jīng)過上面由3個(gè)全連接層轉(zhuǎn)化得到的3個(gè)卷積層,最終得到[6x6x1000]的輸出((12 – 7)/1 + 1 = 6)。這個(gè)結(jié)果正是浮窗在原圖經(jīng)停的6×6個(gè)位置的得分!

面對(duì)384×384的圖像,讓(含全連接層)的初始卷積神經(jīng)網(wǎng)絡(luò)以32像素的步長獨(dú)立對(duì)圖像中的224×224塊進(jìn)行多次評(píng)價(jià),其效果和使用把全連接層變換為卷積層后的卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行一次前向傳播是一樣的。

Evaluating the original ConvNet (with FC layers) independently across 224x224 crops of the 384x384 image in strides of 32 pixels gives an identical result to forwarding the converted ConvNet one time.

如下圖所示,F(xiàn)CN將傳統(tǒng)CNN中的全連接層轉(zhuǎn)化成卷積層,對(duì)應(yīng)CNN網(wǎng)絡(luò)FCN把最后三層全連接層轉(zhuǎn)換成為三層卷積層。在傳統(tǒng)的CNN結(jié)構(gòu)中,前5層是卷積層,第6層和第7層分別是一個(gè)長度為4096的一維向量,第8層是長度為1000的一維向量,分別對(duì)應(yīng)1000個(gè)不同類別的概率。FCN將這3層表示為卷積層,卷積核的大小 (通道數(shù),寬,高) 分別為 (4096,1,1)、(4096,1,1)、(1000,1,1)。看上去數(shù)字上并沒有什么差別,但是卷積跟全連接是不一樣的概念和計(jì)算過程,使用的是之前CNN已經(jīng)訓(xùn)練好的權(quán)值和偏置,但是不一樣的在于權(quán)值和偏置是有自己的范圍,屬于自己的一個(gè)卷積核。因此FCN網(wǎng)絡(luò)中所有的層都是卷積層,故稱為全卷積網(wǎng)絡(luò)。

下圖是一個(gè)全卷積層,與上圖不一樣的是圖像對(duì)應(yīng)的大小下標(biāo),CNN中輸入的圖像大小是同意固定resize成 227x227 大小的圖像,第一層pooling后為55x55,第二層pooling后圖像大小為27x27,第五層pooling后的圖像大小為13*13。而FCN輸入的圖像是H*W大小,第一層pooling后變?yōu)樵瓐D大小的1/4,第二層變?yōu)樵瓐D大小的1/8,第五層變?yōu)樵瓐D大小的1/16,第八層變?yōu)樵瓐D大小的1/32(勘誤:其實(shí)真正代碼當(dāng)中第一層是1/2,以此類推)。

經(jīng)過多次卷積和pooling以后,得到的圖像越來越小,分辨率越來越低。其中圖像到 H/32?W/32 的時(shí)候圖片是最小的一層時(shí),所產(chǎn)生圖叫做heatmap熱圖,熱圖就是我們最重要的高維特診圖,得到高維特征的heatmap之后就是最重要的一步也是最后的一步對(duì)原圖像進(jìn)行upsampling,把圖像進(jìn)行放大、放大、放大,到原圖像的大小。

最后的輸出是1000張heatmap經(jīng)過upsampling變?yōu)樵瓐D大小的圖片,為了對(duì)每個(gè)像素進(jìn)行分類預(yù)測label成最后已經(jīng)進(jìn)行語義分割的圖像,這里有一個(gè)小trick,就是最后通過逐個(gè)像素地求其在1000張圖像該像素位置的最大數(shù)值描述(概率)作為該像素的分類。因此產(chǎn)生了一張已經(jīng)分類好的圖片,如下圖右側(cè)有狗狗和貓貓的圖。

upsampling

相較于使用被轉(zhuǎn)化前的原始卷積神經(jīng)網(wǎng)絡(luò)對(duì)所有36個(gè)位置進(jìn)行迭代計(jì)算,使用轉(zhuǎn)化后的卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行一次前向傳播計(jì)算要高效得多,因?yàn)?6次計(jì)算都在共享計(jì)算資源。這一技巧在實(shí)踐中經(jīng)常使用,一次來獲得更好的結(jié)果。比如,通常將一張圖像尺寸變得更大,然后使用變換后的卷積神經(jīng)網(wǎng)絡(luò)來對(duì)空間上很多不同位置進(jìn)行評(píng)價(jià)得到分類評(píng)分,然后在求這些分值的平均值。

最后,如果我們想用步長小于32的浮窗怎么辦?用多次的向前傳播就可以解決。比如我們想用步長為16的浮窗。那么先使用原圖在轉(zhuǎn)化后的卷積網(wǎng)絡(luò)執(zhí)行向前傳播,然后分別沿寬度,沿高度,最后同時(shí)沿寬度和高度,把原始圖片分別平移16個(gè)像素,然后把這些平移之后的圖分別帶入卷積網(wǎng)絡(luò)。

如下圖所示,當(dāng)圖片在網(wǎng)絡(luò)中經(jīng)過處理后變成越小的圖片,其特征也越明顯,就像圖像中顏色所示,當(dāng)然啦,最后一層的圖片不再是一個(gè)1個(gè)像素的圖片,而是原圖像 H/32xW/32 大小的圖,這里為了簡化而畫成一個(gè)像素而已。

如下圖所示,對(duì)原圖像進(jìn)行卷積conv1、pool1后原圖像縮小為1/2;之后對(duì)圖像進(jìn)行第二次conv2、pool2后圖像縮小為1/4;接著繼續(xù)對(duì)圖像進(jìn)行第三次卷積操作conv3、pool3縮小為原圖像的1/8,此時(shí)保留pool3的featureMap;接著繼續(xù)對(duì)圖像進(jìn)行第四次卷積操作conv4、pool4,縮小為原圖像的1/16,保留pool4的featureMap;最后對(duì)圖像進(jìn)行第五次卷積操作conv5、pool5,縮小為原圖像的1/32,然后把原來CNN操作中的全連接變成卷積操作conv6、conv7,圖像的featureMap數(shù)量改變但是圖像大小依然為原圖的1/32,此時(shí)圖像不再叫featureMap而是叫heatMap。

現(xiàn)在我們有1/32尺寸的heatMap,1/16尺寸的featureMap和1/8尺寸的featureMap,1/32尺寸的heatMap進(jìn)行upsampling操作之后,因?yàn)檫@樣的操作還原的圖片僅僅是conv5中的卷積核中的特征,限于精度問題不能夠很好地還原圖像當(dāng)中的特征,因此在這里向前迭代。把conv4中的卷積核對(duì)上一次upsampling之后的圖進(jìn)行反卷積補(bǔ)充細(xì)節(jié)(相當(dāng)于一個(gè)差值過程),最后把conv3中的卷積核對(duì)剛才upsampling之后的圖像進(jìn)行再次反卷積補(bǔ)充細(xì)節(jié),最后就完成了整個(gè)圖像的還原。

缺點(diǎn)

在這里我們要注意的是FCN的缺點(diǎn):

是得到的結(jié)果還是不夠精細(xì)。進(jìn)行8倍上采樣雖然比32倍的效果好了很多,但是上采樣的結(jié)果還是比較模糊和平滑,對(duì)圖像中的細(xì)節(jié)不敏感。

是對(duì)各個(gè)像素進(jìn)行分類,沒有充分考慮像素與像素之間的關(guān)系。忽略了在通常的基于像素分類的分割方法中使用的空間規(guī)整(spatial regularization)步驟,缺乏空間一致性。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 像素
    +關(guān)注

    關(guān)注

    1

    文章

    201

    瀏覽量

    18505
  • FCN
    FCN
    +關(guān)注

    關(guān)注

    0

    文章

    9

    瀏覽量

    8743
  • cnn
    cnn
    +關(guān)注

    關(guān)注

    3

    文章

    349

    瀏覽量

    21965

原文標(biāo)題:全卷積網(wǎng)絡(luò)FCN詳解

文章出處:【微信號(hào):WW_CGQJS,微信公眾號(hào):傳感器技術(shù)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    使用卷積網(wǎng)絡(luò)模型實(shí)現(xiàn)圖像分割

    OpenCv-C++-深度神經(jīng)網(wǎng)絡(luò)(DNN)模塊-使用FCN模型實(shí)現(xiàn)圖像分割
    發(fā)表于 05-28 07:33

    卷積神經(jīng)網(wǎng)絡(luò)CNN介紹

    【深度學(xué)習(xí)】卷積神經(jīng)網(wǎng)絡(luò)CNN
    發(fā)表于 06-14 18:55

    van-自然和醫(yī)學(xué)圖像的深度語義分割:網(wǎng)絡(luò)結(jié)構(gòu)

    feature每個(gè)點(diǎn)做softmax prediction,就可以獲得32*upsampled prediction(分割圖)。FCN這三個(gè)創(chuàng)新點(diǎn)哪些?卷積:用于解決逐像素的預(yù)測
    發(fā)表于 12-28 11:03

    van-自然和醫(yī)學(xué)圖像的深度語義分割:網(wǎng)絡(luò)結(jié)構(gòu)

    feature每個(gè)點(diǎn)做softmax prediction,就可以獲得32*upsampled prediction(分割圖)。FCN這三個(gè)創(chuàng)新點(diǎn)哪些?卷積:用于解決逐像素的預(yù)測
    發(fā)表于 12-28 11:06

    卷積網(wǎng)絡(luò)FCN進(jìn)行圖像分割

    CNN能夠?qū)D片進(jìn)行分類,可是怎么樣才能識(shí)別圖片中特定部分的物體,在2015年之前還是一個(gè)世界難題。神經(jīng)網(wǎng)絡(luò)大神Jonathan Long發(fā)表了《Fully Convolutional
    發(fā)表于 03-17 11:42 ?2901次閱讀

    卷積神經(jīng)網(wǎng)絡(luò)CNN圖解

    。 于是在這里記錄下所學(xué)到的知識(shí),關(guān)于CNN 卷積神經(jīng)網(wǎng)絡(luò),需要總結(jié)深入的知識(shí)很多: 人工神經(jīng)網(wǎng)絡(luò) ANN
    發(fā)表于 11-16 13:18 ?5.7w次閱讀
    <b class='flag-5'>卷積</b>神經(jīng)<b class='flag-5'>網(wǎng)絡(luò)</b><b class='flag-5'>CNN</b>圖解

    卷積神經(jīng)網(wǎng)絡(luò)CNN架構(gòu)分析-LeNet

    對(duì)于神經(jīng)網(wǎng)絡(luò)卷積了粗淺的了解,關(guān)于CNN 卷積神經(jīng)網(wǎng)絡(luò),需要總結(jié)深入的知識(shí)
    發(fā)表于 11-16 13:28 ?2694次閱讀
    <b class='flag-5'>卷積</b>神經(jīng)<b class='flag-5'>網(wǎng)絡(luò)</b><b class='flag-5'>CNN</b>架構(gòu)分析-LeNet

    局部聚類分析的FCN-CNN云圖分割方法

    空氣中的塵埃、污染物及氣溶膠粒子的存在嚴(yán)重影響了大氣預(yù)測的有效性,毫米波雷達(dá)云圖的有效分割成為了解決這一問題的關(guān)鍵,本文提出了一種基于超像素分析的卷積神經(jīng)網(wǎng)路FCN和深度卷積神經(jīng)
    發(fā)表于 12-15 16:44 ?0次下載

    卷積網(wǎng)絡(luò)FCN進(jìn)行圖像分割

    FCN 通常CNN網(wǎng)絡(luò)卷積層之后會(huì)接上若干個(gè)連接層, 將卷積層產(chǎn)生的特征圖(featu
    發(fā)表于 09-26 17:22 ?579次閱讀

    用圖卷積網(wǎng)絡(luò)解決語義分割問題

    為了避免上述問題,來自中科院自動(dòng)化所、北京中醫(yī)藥大學(xué)的研究者們提出一個(gè)執(zhí)行圖像語義分割任務(wù)的圖模型 Graph-FCN,該模型由卷積網(wǎng)絡(luò)FCN
    的頭像 發(fā)表于 05-13 15:21 ?6971次閱讀

    結(jié)合VGG和FCN的出租車多區(qū)域訂單預(yù)測模型

    為提高岀租車市場管理和運(yùn)營效率以及實(shí)現(xiàn)岀租車效益最大化,在地圖柵格化的基礎(chǔ)上,提出一種融合ⅤGG網(wǎng)絡(luò)卷積網(wǎng)絡(luò)FCN)的出租車多區(qū)域訂單
    發(fā)表于 03-16 14:31 ?14次下載
    結(jié)合VGG和<b class='flag-5'>FCN</b>的出租車多區(qū)域訂單預(yù)測模型

    cnn卷積神經(jīng)網(wǎng)絡(luò)原理 cnn卷積神經(jīng)網(wǎng)絡(luò)的特點(diǎn)是什么

    cnn卷積神經(jīng)網(wǎng)絡(luò)原理 cnn卷積神經(jīng)網(wǎng)絡(luò)的特點(diǎn)是什么?
    的頭像 發(fā)表于 08-21 17:15 ?1434次閱讀

    cnn卷積神經(jīng)網(wǎng)絡(luò)算法 cnn卷積神經(jīng)網(wǎng)絡(luò)模型

    cnn卷積神經(jīng)網(wǎng)絡(luò)算法 cnn卷積神經(jīng)網(wǎng)絡(luò)模型 卷積
    的頭像 發(fā)表于 08-21 17:15 ?1771次閱讀

    cnn卷積神經(jīng)網(wǎng)絡(luò)分類哪些

    卷積神經(jīng)網(wǎng)絡(luò)CNN)是一種深度學(xué)習(xí)模型,廣泛應(yīng)用于圖像分類、目標(biāo)檢測、語義分割等領(lǐng)域。本文將詳細(xì)介紹CNN在分類任務(wù)中的應(yīng)用,包括基本結(jié)構(gòu)、關(guān)鍵技術(shù)、常見
    的頭像 發(fā)表于 07-03 09:28 ?320次閱讀

    卷積神經(jīng)網(wǎng)絡(luò)的工作原理和應(yīng)用

    卷積神經(jīng)網(wǎng)絡(luò)FCN)是深度學(xué)習(xí)領(lǐng)域中的一種特殊類型的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),尤其在計(jì)算機(jī)視覺領(lǐng)域表現(xiàn)出色。它通過全局平均池化或轉(zhuǎn)置
    的頭像 發(fā)表于 07-11 11:50 ?465次閱讀