一印蔬、 為什么使用CNN處理圖片
- 在圖片中有一些比整張圖片要小的pattern(比如鳥的圖片中鳥的喙就是一個(gè)小的pattern)预明,識(shí)別這些pattern并不需要看整張圖片。
- 這些小的pattern會(huì)出現(xiàn)在圖片的不同位置,例如鳥圖片中鳥的喙可能出現(xiàn)在左上角也可能出現(xiàn)在中間。
- 對(duì)圖片進(jìn)行降采樣(池化)不會(huì)改變圖片的特征币他,因此神經(jīng)網(wǎng)絡(luò)處理圖片所需的參數(shù)就會(huì)更少观蜗。
二缕坎、 卷積 v.s. 全連接
??可以將卷積網(wǎng)絡(luò)看作一種特殊的的全連接網(wǎng)絡(luò)蒂誉,每一個(gè)卷積核卷積后得到的feature map可以看做一個(gè)隱藏層的輸出教藻,feature map中的每一個(gè)數(shù)可以看做這個(gè)隱藏層的一個(gè)神經(jīng)元距帅。在這個(gè)特殊的全連接網(wǎng)絡(luò)中隱藏層的每個(gè)神經(jīng)元只會(huì)接收上一層的部分輸入右锨,而且隱藏層的神經(jīng)元對(duì)應(yīng)的權(quán)重是共享的,在反向傳播過程中只需要按照一般的過程進(jìn)行反向傳播碌秸,然后再將對(duì)應(yīng)的共享參數(shù)取均值即可绍移。具體的過程如下圖所示:
三、 卷積網(wǎng)絡(luò)中的channel(通道)
??對(duì)于輸入樣本中 channels 的含義讥电。一般的RGB圖片蹂窖,channels 數(shù)量是 3 (紅、綠恩敌、藍(lán))瞬测;而monochrome(單色)圖片,channels 數(shù)量是 1 纠炮。
??舉個(gè)例子月趟,如下圖,假設(shè)現(xiàn)有一個(gè)為 6×6×3 的圖片樣本恢口,使用 3×3×3 的卷積核(filter)進(jìn)行卷積操作孝宗。此時(shí)輸入圖片的 channels 為 3 ,而卷積核中的 in_channels 與 需要進(jìn)行卷積操作的數(shù)據(jù)的 channels 一致(這里就是圖片樣本耕肩,為3)因妇,注意每個(gè)卷積核的channels(也就是in_channels)一定是與圖片的channels一致,因?yàn)閳D片的每一個(gè)channel都會(huì)分別于卷積核中對(duì)應(yīng)的channel進(jìn)行卷積操作猿诸。
??接下來婚被,進(jìn)行卷積操作,卷積核中的27個(gè)數(shù)字與分別與樣本對(duì)應(yīng)相乘后梳虽,再進(jìn)行求和摔寨,得到第一個(gè)結(jié)果。依次進(jìn)行怖辆,最終得到4×4的結(jié)果是复。
??上面步驟完成后删顶,由于只有一個(gè)卷積核,所以最終得到的結(jié)果為 4×4×1 淑廊, out_channels 為 1 逗余。在實(shí)際應(yīng)用中,都會(huì)使用多個(gè)卷積核季惩。這里如果再加一個(gè)卷積核录粱,就會(huì)得到 4×4×2 的結(jié)果,因此卷積核的數(shù)量也就是out_channels画拾,即該卷積層輸出的feature map的channel數(shù)啥繁。
??總結(jié)一下,上面提到的 channels 可以分為三種:
??(1)最初輸入的圖片樣本的 channels 青抛,取決于圖片類型旗闽,比如RGB;
??(2)卷積操作完成后輸出的 out_channels 蜜另,取決于卷積核的數(shù)量适室。此時(shí)的 out_channels 也會(huì)作為下一次卷積時(shí)的卷積核的 in_channels;
??(3)卷積核中的 in_channels 举瑰,剛剛(2)中已經(jīng)說了捣辆,就是上一次卷積的 out_channels ,如果是第一次做卷積此迅,就是(1)中樣本圖片channels汽畴。
四、卷積網(wǎng)絡(luò)學(xué)到了什么(可視化)
??以下圖網(wǎng)絡(luò)結(jié)構(gòu)為例:
4.1 卷積核學(xué)到了什么
??定義第k個(gè)卷積核的激活度:
??每個(gè)卷積核負(fù)責(zé)偵測(cè)圖像中的一種pattern耸序,激活度越高說明圖像中出現(xiàn)越多的這種pattern忍些。在訓(xùn)練模型完成以后,將激活度看做因變量佑吝,圖像看做自變量坐昙,通過極大化激活度而得到的圖像即是該卷積核所偵測(cè)的pattern,也就實(shí)現(xiàn)了一個(gè)可視化的過程芋忿。具體過程如下所示:
??這里列出12個(gè)卷積核求解得到的結(jié)果炸客,可以看到每個(gè)卷積核都會(huì)偵測(cè)一種pattern。
4.2 全連接隱藏層神經(jīng)元學(xué)到了什么
??將神經(jīng)元的輸出看做因變量做同樣的最優(yōu)化過程得到結(jié)果戈钢,從上圖中可以看出與卷積核只偵測(cè)小的pattern不同痹仙,全連接隱藏層的神經(jīng)元會(huì)看到整張圖像的特征。
4.3 輸出層神經(jīng)元學(xué)到了什么
??上圖為使用CNN對(duì)手寫體數(shù)字識(shí)別數(shù)據(jù)集訓(xùn)練出來的網(wǎng)絡(luò)結(jié)構(gòu)的輸出層可視化的結(jié)果殉了,可以看到得到的結(jié)果并非類似數(shù)字的圖像开仰,可見機(jī)器和人識(shí)別圖像的方式是不一樣的。將輸出層節(jié)點(diǎn)的值進(jìn)行L1正則化然后再看求解得到的結(jié)果就可以隱約看出數(shù)字的特征了:
五、卷積網(wǎng)絡(luò)應(yīng)用
5.1 Deep Dream
??Deep Dream不修改參數(shù)众弓,而是修改輸入圖像恩溅,生成一些奇特的圖像。
5.2 Deep Style
??其實(shí)現(xiàn)的大體原理如下:
??保留左邊圖片卷積核的輸出值谓娃,輸出值代表了圖片的內(nèi)容脚乡;保留右邊圖片卷積核之間的相關(guān)性(corelation),相關(guān)性代表了圖片的風(fēng)格滨达,然后進(jìn)行最優(yōu)化(maximum)奶稠,最終就會(huì)得到右圖風(fēng)格的左圖,效果如下:
5.3 下圍棋(Alpha Go)
??使用神經(jīng)網(wǎng)絡(luò)來預(yù)測(cè)下一步棋的位置時(shí)捡遍,網(wǎng)絡(luò)的輸入是當(dāng)前的棋盤的狀態(tài)(shape:19 * 19锌订,黑子:1,白字:-1画株,空:0)辆飘,輸出下一步的位置。
??解決這個(gè)問題既可以使用全連接網(wǎng)絡(luò)污秆,也可以使用CNN劈猪,但是CNN效果更好昧甘,這是因?yàn)橄聡宓膯栴}符合一中介紹的選擇CNN的理由:
- 通過圍棋的特點(diǎn)可以知道良拼,只需要偵測(cè)棋盤上一些小的pattern就可以進(jìn)行識(shí)別。
- 這些小的pattern可能存在于棋盤的不同位置(指可能存在于棋盤的左上角或中間等位置)充边。
(注:由于棋盤不同于圖片庸推,圖片進(jìn)行降采樣以后仍然可以識(shí)別特征而圍棋棋盤不可以,所以Alpha Go所使用的的CNN架構(gòu)中沒有池化層浇冰。)
??下圖為該應(yīng)用的原理:
5.4 語音辨識(shí)
??卷積核只在Frequency方向上移動(dòng)贬媒,這是因?yàn)樵跁r(shí)間上移動(dòng)卷積核意義不大,比如同樣說“你好”肘习,男女的聲音很可能只是在Frequency上有差別际乘。
5.5 文本識(shí)別
??同樣的卷積核只橫向移動(dòng),這是因?yàn)槊總€(gè)詞向量的不同維度之間是獨(dú)立的漂佩。因此在CNN的實(shí)際應(yīng)用中要根據(jù)實(shí)際情況選擇卷積核的移動(dòng)方式脖含。
參考資料
ref:理解CNN中的通道 channel
ref:深度卷積神經(jīng)網(wǎng)絡(luò)圖像風(fēng)格變換 Deep Photo Style Transfer