卷积神经网络(CNN)
卷積神經(jīng)網(wǎng)絡(luò)(CNN)
一、CNN簡介
? 卷積神經(jīng)網(wǎng)絡(luò)(CNN)是一種常見的深度學(xué)習(xí)架構(gòu),受生物自然視覺認(rèn)知機制啟發(fā)而來,20世紀(jì) 90 年代,LeCun et al. 等人發(fā)表論文,確立了CNN的現(xiàn)代結(jié)構(gòu)。
? 人類識別圖像的過程:瞳孔攝入像素;大腦皮層某些細(xì)胞初步處理,發(fā)現(xiàn)形狀邊緣、方向;抽象判定形狀(如圓形、方形);進(jìn)一步抽象判定(如判斷物體是氣球)
CNN模仿人類識別圖像的多層過程:
二、CNN網(wǎng)絡(luò)結(jié)構(gòu)
CNN流程圖:
? 主要是通過卷積、池化進(jìn)行特征提取
(1)卷積層
? 卷積是CNN的核心,是用卷積核掃描圖像,得到相應(yīng)的特征。卷積核可以理解成過濾器(或圖像掃描器、特征掃描器、局部感受野)。
四個超參數(shù):Stride (S) Filter size(F) Filter number(K) Padding§
計算過程:
Output size的計算:
Input volume size (W) = 6 Stride (S) = 1 Filter(F) = 4 Padding§ = 0 --> output size = 3
Input volume size (W) = 6 Stride (S) = 2 Filter(F) = 4 Padding§ = 2 --> output size = 4
? 如果模型的參數(shù)越多,模型越復(fù)雜,容易過擬合。針對這個問題,卷積層可以通過參數(shù)共享和稀疏連接進(jìn)行優(yōu)化。
卷積層的特點:參數(shù)共享,稀疏連接
a. 參數(shù)共享:
e.g.
W=227, F=11, S=4, P=0, K=96
輸出數(shù)據(jù): output size: 555596
參數(shù)不共享: 有555596*(11113)=290400*364=105705600個參數(shù)。
參數(shù)共享后: 共有96x11x11x3=34,848個不同的權(quán)重,或34,944個參數(shù)(+96個偏差)。
b. 稀疏連接:
? 關(guān)注局部信息,減少模型的存儲需求,減少計算量。
? 例如,當(dāng)處理一張圖像時,輸入的圖像可能包含成千上萬個像素點,但是我們可以通過只占用幾十到上百個像素點的核來檢測一些小的有意義的特征,例如圖像的邊緣。這意味著我們需要存儲的參數(shù)更少,不僅減少了模型的存儲需求,而且提高了它的統(tǒng)計效率。這也意味著為了得到輸出我們只需要更少的計算量。這些效率上的提高往往是很顯著的。
(2)激活函數(shù):
? 把卷積層輸出結(jié)果做非線性映射
? 常用的非線性激活函數(shù)有sigmoid、tanh、relu等,前兩者sigmoid/tanh比較常見于全連接層,后者relu常見于卷積層。
? 對于輸入的負(fù)值,輸出全為0,對于正值,原樣輸出
(3)池化層
? 對輸入的特征圖進(jìn)行壓縮,一方面使特征圖變小,簡化網(wǎng)絡(luò)計算復(fù)雜度;一方面進(jìn)行特征壓縮,提取主要特征。
? 常用的池化方法:最大池化、平均池化
W2=(W1?F)/S+1W2=(W1-F)/S+1 W2=(W1?F)/S+1
? 注意:在池化層中很少使用零填充。
? 池化層特點:降采樣、平移不變性
? a. 降采樣
? b. 平移的不變性:即當(dāng)輸入做出少量平移時,經(jīng)過池化函數(shù)后的大多數(shù)輸出并不會發(fā)生改變
? 池化層負(fù)責(zé)對輸入數(shù)據(jù)的空間維度進(jìn)行降采,但可能會造成數(shù)據(jù)丟失。
(4)全連接層
? 將輸出的特征圖進(jìn)行Flatten扁平化,將二維矩陣變?yōu)橐痪S,再乘以權(quán)重,最后將輸出值傳給分類器(如softmax分類器)
? 使用全連接層可能帶來的缺點:過擬合、Flatten造成空間結(jié)構(gòu)的缺失、參數(shù)巨大、對輸入有固定要求
(5)其他:
- 正則化:DropOut等
- 優(yōu)化:初始化權(quán)重、隨機梯度下降、批量標(biāo)準(zhǔn)化等?
- 卷積神經(jīng)網(wǎng)絡(luò)的優(yōu)缺點:
- 優(yōu)點:
- 共享卷積核,對高維數(shù)據(jù)處理無壓力
- 無需手動選取特征,訓(xùn)練好權(quán)重,即得特征
- 分類效果好
- 缺點:
- 需要調(diào)參,需要大樣本量,訓(xùn)練最好要用GPU
- 黑盒,物理含義不明確,可解釋性較差
- 優(yōu)點:
三、CNN經(jīng)典架構(gòu)與常用框架
(1)經(jīng)典架構(gòu)
- LeNet-5:1998年由Yann LeCun等人提出,在手寫數(shù)字識別上低于1%的錯誤率
- AlexNet:2012年,Alex Krizhevsky提出AlexNet網(wǎng)絡(luò),一舉奪得ImageNet圖像分類大賽冠軍,CNN的新生
- ZF Net:2013 ILSVRC比賽冠軍
- GoogLeNet:2014 ILSVRC比賽冠軍
- VGGNet: 2014 ILSVRC比賽中的模型,圖像識別略差于GoogLeNet,但是在很多圖像轉(zhuǎn)化學(xué)習(xí)問題(比如object detection)上效果奇好。
- ResNe:2015年被提出,在ImageNet比賽classification任務(wù)上獲得第一名
(2)常用框架
- Caffe:源于Berkeley的主流CV工具包,支持C++、python、matlab,Model Zoo中有大量預(yù)訓(xùn)練好的模型供使用
- TensorFlow:Google的深度學(xué)習(xí)框架,TensorBoard可視化很方便,數(shù)據(jù)和模型并行化好,速度快
- Torch:Facebook用的卷積神經(jīng)網(wǎng)絡(luò)工具包,通過時域卷積的本地接口,使用非常直觀,定義新網(wǎng)絡(luò)層簡單
四、CNN應(yīng)用
? 圖像分類、物體檢測、物體追蹤、姿態(tài)預(yù)估、文本檢測識別、視覺 saliency 檢測、行動識別、場景標(biāo)記
總結(jié)
以上是生活随笔為你收集整理的卷积神经网络(CNN)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java并发编程基础--ThreadLo
- 下一篇: 目标检测学习笔记--DSSD算法