chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

一文深度解析全卷積網絡FCN

羅欣 ? 來源:博客園 - 代碼初學者 ? 作者:佚名 ? 2018-10-11 11:57 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

背景

CNN能夠對圖片進行分類,可是怎么樣才能識別圖片中特定部分的物體,在2015年之前還是一個世界難題。神經網絡大神Jonathan Long發(fā)表了《Fully Convolutional Networks for Semantic Segmentation》在圖像語義分割挖了一個坑,于是無窮無盡的人往坑里面跳。

全卷積網絡 Fully Convolutional Networks

CNN 與 FCN

通常CNN網絡在卷積層之后會接上若干個全連接層,將卷積層產生的特征圖(feature map)映射成一個固定長度的特征向量。以AlexNet為代表的經典CNN結構適合于圖像級的分類和回歸任務,因為它們最后都期望得到整個輸入圖像的一個數(shù)值描述(概率),比如AlexNet的ImageNet模型輸出一個1000維的向量表示輸入圖像屬于每一類的概率(softmax歸一化)。

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

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

最后逐個像素計算softmax分類的損失,相當于每一個像素對應一個訓練樣本。下圖是Longjon用于語義分割所采用的全卷積網絡(FCN)的結構示意圖:

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

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

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

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

而全卷積網絡(FCN)則是從抽象的特征中恢復出每個像素所屬的類別。即從圖像級別的分類進一步延伸到像素級別的分類。

全連接層 ->成卷積層

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

因此,將此兩者相互轉化是可能的:

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

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

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

我們可以將這3個全連接層中的任意一個轉化為卷積層:

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

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

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

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

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

面對384×384的圖像,讓(含全連接層)的初始卷積神經網絡以32像素的步長獨立對圖像中的224×224塊進行多次評價,其效果和使用把全連接層變換為卷積層后的卷積神經網絡進行一次前向傳播是一樣的。

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中的全連接層轉化成卷積層,對應CNN網絡FCN把最后三層全連接層轉換成為三層卷積層。在傳統(tǒng)的CNN結構中,前5層是卷積層,第6層和第7層分別是一個長度為4096的一維向量,第8層是長度為1000的一維向量,分別對應1000個不同類別的概率。FCN將這3層表示為卷積層,卷積核的大小 (通道數(shù),寬,高) 分別為 (4096,1,1)、(4096,1,1)、(1000,1,1)??瓷先?shù)字上并沒有什么差別,但是卷積跟全連接是不一樣的概念和計算過程,使用的是之前CNN已經訓練好的權值和偏置,但是不一樣的在于權值和偏置是有自己的范圍,屬于自己的一個卷積核。因此FCN網絡中所有的層都是卷積層,故稱為全卷積網絡。


下圖是一個全卷積層,與上圖不一樣的是圖像對應的大小下標,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(勘誤:其實真正代碼當中第一層是1/2,以此類推)。


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

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

upsampling

相較于使用被轉化前的原始卷積神經網絡對所有36個位置進行迭代計算,使用轉化后的卷積神經網絡進行一次前向傳播計算要高效得多,因為36次計算都在共享計算資源。這一技巧在實踐中經常使用,一次來獲得更好的結果。比如,通常將一張圖像尺寸變得更大,然后使用變換后的卷積神經網絡來對空間上很多不同位置進行評價得到分類評分,然后在求這些分值的平均值。

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

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

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

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

缺點

在這里我們要注意的是FCN的缺點:

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

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

本文來源:博客園-代碼初學者

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

    關注

    0

    文章

    9

    瀏覽量

    8873
  • 全卷積網絡
    +關注

    關注

    0

    文章

    7

    瀏覽量

    2127
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    技術干貨 | 從偏移誤差到電源抑制比,DAC核心術語解析

    偏移誤差、增益誤差、INL/DNL、轉換時間……這些關鍵指標如何定義?如何影響DAC性能?本文DAC核心術語解析帶您掌握關鍵參數(shù)!
    的頭像 發(fā)表于 06-19 10:38 ?188次閱讀
    技術干貨 | 從偏移誤差到電源抑制比,DAC核心術語<b class='flag-5'>全</b><b class='flag-5'>解析</b>

    Nginx核心功能深度解析

    Nginx核心功能深度解析
    的頭像 發(fā)表于 05-09 10:50 ?281次閱讀

    邊緣AI MPU深度盤點:品牌、型號與技術特性解析

    邊緣AI MPU深度盤點:品牌、型號與技術特性解析 隨著邊緣計算與人工智能的深度融合,邊緣AI MPU(微處理器)已成為支撐物聯(lián)網、智能制造、自動駕駛等場景的核心硬件。本文從品牌、型
    的頭像 發(fā)表于 04-30 17:27 ?2255次閱讀

    如何使用MATLAB實現(xiàn)維時間卷積網絡

    本文對卷積操作進行介紹,包括維擴展卷積維因果卷積,以及 MATLAB 對
    的頭像 發(fā)表于 03-07 09:15 ?1079次閱讀
    如何使用MATLAB實現(xiàn)<b class='flag-5'>一</b>維時間<b class='flag-5'>卷積</b><b class='flag-5'>網絡</b>

    解析工業(yè)互聯(lián)網

    電子發(fā)燒友網站提供《解析工業(yè)互聯(lián)網.pptx》資料免費下載
    發(fā)表于 02-20 16:42 ?1次下載

    BP神經網絡卷積神經網絡的比較

    多層。 每層都由若干個神經元構成,神經元之間通過權重連接。信號在神經網絡中是前向傳播的,而誤差是反向傳播的。 卷積神經網絡(CNN) : CNN主要由
    的頭像 發(fā)表于 02-12 15:53 ?662次閱讀

    深度解析研華棧式AI產品布局

    在人工智能邁向邊緣智能化的浪潮中,研華科技通過“Edge AI+生態(tài)協(xié)同”戰(zhàn)略推動AIoT 2.0時代的產業(yè)落地。本文專訪研華科技產品總監(jiān)邱柏儒,深度解析研華棧式AI產品布局、差異化技術積累與生態(tài)共創(chuàng)實踐。
    的頭像 發(fā)表于 12-05 09:51 ?1035次閱讀

    卷積神經網絡的實現(xiàn)工具與框架

    卷積神經網絡因其在圖像和視頻處理任務中的卓越性能而廣受歡迎。隨著深度學習技術的快速發(fā)展,多種實現(xiàn)工具和框架應運而生,為研究人員和開發(fā)者提供了強大的支持。 TensorFlow 概述
    的頭像 發(fā)表于 11-15 15:20 ?668次閱讀

    卷積神經網絡的參數(shù)調整方法

    卷積神經網絡因其在處理具有空間層次結構的數(shù)據(jù)時的卓越性能而受到青睞。然而,CNN的成功很大程度上依賴于其參數(shù)的合理設置。參數(shù)調整是個復雜的過程,涉及到多個超參數(shù)的選擇和優(yōu)化。 網絡
    的頭像 發(fā)表于 11-15 15:10 ?1206次閱讀

    卷積神經網絡在自然語言處理中的應用

    自然語言處理是人工智能領域的個重要分支,它致力于使計算機能夠理解、解釋和生成人類語言。隨著深度學習技術的發(fā)展,卷積神經網絡(CNNs)作為
    的頭像 發(fā)表于 11-15 14:58 ?803次閱讀

    卷積神經網絡與傳統(tǒng)神經網絡的比較

    神經網絡,也稱為連接神經網絡(Fully Connected Neural Networks,F(xiàn)CNs),其特點是每層的每個神經元都與下
    的頭像 發(fā)表于 11-15 14:53 ?1867次閱讀

    深度學習中的卷積神經網絡模型

    深度學習近年來在多個領域取得了顯著的進展,尤其是在圖像識別、語音識別和自然語言處理等方面。卷積神經網絡作為深度學習的個分支,因其在圖像處理
    的頭像 發(fā)表于 11-15 14:52 ?844次閱讀

    卷積神經網絡的基本原理與算法

    卷積神經網絡(Convolutional Neural Networks,CNN)是類包含卷積計算且具有深度結構的前饋神經
    的頭像 發(fā)表于 11-15 14:47 ?1773次閱讀

    關于卷積神經網絡,這些概念你厘清了么~

    許多種類型,但本文將只關注卷積神經網絡(CNN),其主要應用領域是對輸入數(shù)據(jù)的模式識別和對象分類。CNN是種用于深度學習的 人工神經網絡
    發(fā)表于 10-24 13:56

    深度識別算法包括哪些內容

    深度識別算法是深度學習領域的個重要組成部分,它利用深度神經網絡模型對輸入數(shù)據(jù)進行高層次的理解和識別。
    的頭像 發(fā)表于 09-10 15:28 ?834次閱讀