feature map的含義
??在每個卷積層入挣,數(shù)據(jù)都是以三維形式存在的递惋。你可以把它看成許多個二維圖片疊在一起,其中每一個稱為一個feature map茧痕。在輸入層,如果是灰度圖片恼除,那就只有一個feature map踪旷;如果是彩色圖片,一般就是3個feature map(紅綠藍(lán))豁辉。層與層之間會有若干個卷積核(kernel)令野,上一層和每個feature map跟每個卷積核做卷積,都會產(chǎn)生下一層的一個feature map徽级。
??feature map(下圖紅線標(biāo)出) 即:該層卷積核的個數(shù)气破,有多少個卷積核,經(jīng)過卷積就會產(chǎn)生多少個feature map餐抢,也就是下圖中 豆腐皮兒
的層數(shù)现使、同時也是下圖豆腐塊
的深度(寬度)!旷痕!這個寬度可以手動指定碳锈,一般網(wǎng)絡(luò)越深的地方這個值越大,因為隨著網(wǎng)絡(luò)的加深欺抗,feature map的長寬尺寸縮小售碳,本卷積層的每個map提取的特征越具有代表性(精華部分),所以后一層卷積層需要增加feature map的數(shù)量,才能更充分的提取出前一層的特征贸人,一般是成倍增加(不過具體論文會根據(jù)實驗情況具體設(shè)置)间景!
image.png
image
image
??卷積特征的可視化,有助于我們更好地理解深度網(wǎng)絡(luò)艺智。卷積網(wǎng)絡(luò)在學(xué)習(xí)過程中保持了圖像的空間結(jié)構(gòu)倘要,也就是說最后一層的激活值(feature map)總和原始圖像具有空間上的對應(yīng)關(guān)系,具體對應(yīng)的位置以及大小十拣,可以用感受野來度量碗誉。利用這點性質(zhì)可以做很多事情:
??1 前向計算。我們直接可視化網(wǎng)絡(luò)每層的 feature map父晶,然后觀察feature map 的數(shù)值變化. 一個訓(xùn)練成功的CNN 網(wǎng)絡(luò)哮缺,其feature map 的值伴隨網(wǎng)絡(luò)深度的增加,會越來越稀疏甲喝。這可以理解網(wǎng)絡(luò)取精去燥尝苇。
??2 反向計算。根據(jù)網(wǎng)絡(luò)最后一層最強(qiáng)的激活值埠胖,利用感受野求出原始輸入圖像的區(qū)域糠溜。可以觀察輸入圖像的那些區(qū)域激活了網(wǎng)絡(luò)直撤,利用這個思路可以做一些物體定位非竿。
??一直以來,感覺 feature map 挺晦澀難懂的谋竖,今天把初步的一些理解記錄下來红柱。參考了斯坦福大學(xué)的機(jī)器學(xué)習(xí)公開課和七月算法中的機(jī)器學(xué)習(xí)課。
??CNN一個牛逼的地方就在于通過感受野和權(quán)值共享減少了神經(jīng)網(wǎng)絡(luò)需要訓(xùn)練的參數(shù)的個數(shù)蓖乘〈盖模總之,卷積網(wǎng)絡(luò)的核心思想是將:局部感受野嘉抒、權(quán)值共享(或者權(quán)值復(fù)制)以及時間或空間亞采樣這三種結(jié)構(gòu)思想結(jié)合起來獲得了某種程度的位移零聚、尺度、形變不變性.
??下圖左:如果我們有1000x1000像素的圖像些侍,有1百萬個隱層神經(jīng)元隶症,那么他們?nèi)B接的話(每個隱層神經(jīng)元都連接圖像的每一個像素點),就有1000x1000x1000000=1012個連接岗宣,也就是1012個權(quán)值參數(shù)蚂会。然而圖像的空間聯(lián)系是局部的,就像人是通過一個局部的感受野去感受外界圖像一樣狈定,每一個神經(jīng)元都不需要對全局圖像做感受颂龙,每個神經(jīng)元只感受局部的圖像區(qū)域,然后在更高層纽什,將這些感受不同局部的神經(jīng)元綜合起來就可以得到全局的信息了措嵌。這樣,我們就可以減少連接的數(shù)目芦缰,也就是減少神經(jīng)網(wǎng)絡(luò)需要訓(xùn)練的權(quán)值參數(shù)的個數(shù)了企巢。如下圖右:假如局部感受野是10x10,隱層每個感受野只需要和這10x10的局部圖像相連接让蕾,所以1百萬個隱層神經(jīng)元就只有一億個連接浪规,即10^8個參數(shù)。比原來減少了四個0(數(shù)量級)探孝,這樣訓(xùn)練起來就沒那么費力了笋婿,但還是感覺很多的啊,那還有啥辦法沒顿颅?
image.png
??我們知道缸濒,隱含層的每一個神經(jīng)元都連接10x10個圖像區(qū)域,也就是說每一個神經(jīng)元存在10x10=100個連接權(quán)值參數(shù)粱腻。那如果我們每個神經(jīng)元這100個參數(shù)是相同的呢庇配?也就是說每個神經(jīng)元用的是同一個卷積核去卷積圖像。這樣我們就只有多少個參數(shù)绍些?捞慌?只有100個參數(shù)啊柬批!不管你隱層的神經(jīng)元個數(shù)有多少啸澡,兩層間的連接我只有100個參數(shù)啊氮帐!這就是權(quán)值共享锻霎。
??好了,你就會想揪漩,這樣提取特征也忒不靠譜吧旋恼,這樣你只提取了一種特征啊奄容?對了冰更,真聰明,我們需要提取多種特征對不昂勒?假如一種濾波器蜀细,也就是一種卷積核就是提出圖像的一種特征,例如某個方向的邊緣戈盈。那么我們需要提取不同的特征奠衔,怎么辦谆刨,加多幾種濾波器不就行了嗎?對了归斤。所以假設(shè)我們加到100種濾波器痊夭,每種濾波器的參數(shù)不一樣,表示它提出輸入圖像的不同特征脏里,例如不同的邊緣她我。這樣每種濾波器去卷積圖像就得到對圖像的不同特征的放映,我們稱之為Feature Map迫横。所以100種卷積核就有100個Feature Map番舆。這100個Feature Map就組成了一層神經(jīng)元。到這個時候明了了吧矾踱。我們這一層有多少個參數(shù)了恨狈?100種卷積核x每種卷積核共享100個參數(shù)=100x100=10K,也就是1萬個參數(shù)呛讲。才1萬個參數(shù)拴事。見下圖右:不同的顏色表達(dá)不同的濾波器。
image.png
??遺漏一個問題圣蝎。剛才說隱層的參數(shù)個數(shù)和隱層的神經(jīng)元個數(shù)無關(guān)刃宵,只和濾波器的大小和濾波器種類的多少有關(guān)。那么隱層的神經(jīng)元個數(shù)怎么確定呢徘公?它和原圖像牲证,也就是輸入的大小(神經(jīng)元個數(shù))关面、濾波器的大小和濾波器在圖像中的滑動步長都有關(guān)坦袍!例如,我的圖像是1000x1000像素等太,而濾波器大小是10x10捂齐,假設(shè)濾波器沒有重疊,也就是步長為10缩抡,這樣隱層的神經(jīng)元個數(shù)就是(1000x1000 )/ (10x10)=100x100個神經(jīng)元了奠宜,假設(shè)步長是8,也就是卷積核會重疊兩個像素瞻想,那么……我就不算了压真,思想懂了就好。注意了蘑险,這只是一種濾波器滴肿,也就是一個Feature Map的神經(jīng)元個數(shù)哦,如果100個Feature Map就是100倍了佃迄。由此可見泼差,圖像越大贵少,神經(jīng)元個數(shù)和需要訓(xùn)練的權(quán)值參數(shù)個數(shù)的貧富差距就越大。
feature map計算方法
image.png
image.png