二、计算机视觉与卷积神经网络
- 一、神經網絡到卷積神經網絡
- 二、卷積神經網絡的構成
- 三、卷積神經網絡的訓練
- 四、卷積神經網絡的特點
- 五、正則化與Dropout
一、神經網絡到卷積神經網絡
人工神經網絡可以用于計算機視覺嗎?
可以
為什么利用卷積神經網絡?
人工神經網絡全連接結構對內存要求非常高,而且大量的參數會導致過擬合,參數過多學習能力太強,會把所有樣本點記下來,以至于在測試集的泛化性能很差。
卷積神經網絡的特點:
- 仍然保持了層級結構,利用多層網絡來構成一個深層的網絡結構
- 不同于全連接層,卷積神經網絡是由卷積層+池化層+非線性層+全連接層構成
輸入:原始圖像
輸出:經過softmax輸出的屬于每個類別的概率
二、卷積神經網絡的構成
1、數據輸入層——數據預處理
利用L2損失的話,如果不進行尺度縮放,則會使得在梯度下降的時候,下降方向呈z字型,出現震蕩、收斂緩慢、準確度下降的情況。
為什么進行去均值化:
如果不進行去均值的步驟,在訓練的時候很容易飽和,如果利用sigmoid函數作為激活函數,未進行去均值之前,數據可能處于sigmoid函數的兩側,使得輸出為0/1,此時梯度幾乎為0,無法進行反向傳播,網絡無法進行學習。如果進行去均值之后,數據處于sigmoid曲線的中心,此時處于激活狀態。
例如圖像的對比度,如果完成圖像顏色的分辨,如果顏色分布非常均勻,則可以很好的學習出數據,但如果數據有偏移,也就是全都是紅色,只不過紅的顏色不同,如果減掉均值的話,可以使得數據有正有負。
經過PCA之后,去掉了相關性,將數據投影到方差最大的方向,whitened是再次進行尺度歸一化
有的特征維度很高,可以在保留大部分特征的情況下, 進行降維,做完PCA之后,進行白化操作,(也就是將每個維度的特征的方差歸一化到1),因為進行歸一化之后再進行PCA降維,可能每個維度的方差由不同了,所以要再次對特征的方差進行縮放。
圖像分類只用了去均值操作:
去均值有兩種方法:將100w組圖像的均值取出,在每個圖像上減掉
- 因為圖像的像素值本就處于[0,255]區間內,不用進行歸一化,
2、卷積計算層
補零:
1、當x=0的時候,wx=0,不會影響輸出,如果補別的結果會影響輸出
2、補零也會使得卷積之后特征圖等于原圖大小,信息保留更全面,更利用之后的融合
- 局部關聯
圖像具有局部關聯性,某點的像素和距離它較遠的像素不具備很大的相關性,所以可以用局部連接來對圖像進行特征提取。
- 權值共享
如果對整幅圖像的每個小塊分別用不同的卷積核來提取特征,則參數太多,可以利用同一組參數,也就是卷積核來對一副圖像滑動進行特征提取,也就是一個窗口提取一副圖像中相同的特征,換句話說就是,無論貓出現在圖像中的哪個位置,都不會影響最后的判斷。
- 特征提取過程
利用同一卷積核和圖像做滑動卷積,提取出一個特征圖譜,分別利用多個卷積核對同一幅圖像做卷積,得到多個特征圖。
3、激活層
將卷積層的輸出結果做非線性映射,判斷信號是否要往后傳,或者以多大的程度往后傳。
特征:
- 非線性
- 幾乎處處可微
- 計算簡單
- 非飽和性
- 接近恒等變換
- 單調性
Relu如果輸入都是小于0的話,那就掛掉了,全都抑制了,該神經元再也激活不了了,但是這種概率很小,因為數據都是一批一批送進來的,不會都落到抑制區。
所以提出了Leacky Relu,降低完全抑制的概率。
4、池化層
降低數據量,提供平移、旋轉穩定性,減小過擬合
5、全連接層
三、卷積神經網絡的訓練
池化層如何求導:
池化相當于max(x1,x2,x3,x4)max(x1,x2,x3,x4),如果最大值為x4的話,分段函數求導之后,只有x4處為1,其他地方的求導都為0。
四、卷積神經網絡的特點
五、正則化與Dropout
神經網絡的強學習能力可能會導致過擬合,利用Dropout來解決。
Dropout:隨機失活,也就是將神經元隨機失活,置為0,此時和該神經元相連的線也就沒用了。
在每一次做訓練的時候,會將某些神經元關掉,該神經元就不起作用了,
import numpy as np p=0.5def train_step(X):# 3層神經網絡的前向計算# H1包含了Relu的過程H1=np.maximum(0,np.dot(w1,x)+b1)'''第一次dropout'''# 生成0~1直接的隨機數,小于0.5的置為False,大于0.5的置為TrueU1=np.random.rand(*H1.shape)<p# H1和U1數值相乘,保留U1中為True的值H1 *=U1'''第二次dropout'''H2=np.maximum(0,np.dot(w2,x)+b2)U2 = np.random.rand(*H2.shape) < pH2 *=U2out=np.dot(w3,H2)+b3...# 預測過程 # 以數學期望的形式往后傳遞 # 一個時間發生的概率為p,數學期望E=X.P def predict(X):# 加上dropout的前向計算H1=np.maximum(0,np.dot(w1,x)+b1)*pH2=np.maximum(0,np.dot(w2,x)+b2)*pout=np.dot(w3,H2)+b3U1是一個bool型的numpy數組,生成隨機概率分布,如果大于0.5就留下來,
實際實現:把預測階段的時間轉移到訓練上
用戶關心的是測試的速度,與訓練的速度無關。
所以要把預測階段的時間轉移到訓練階段,以數學期望的方式來轉移。訓練過程除以p,等于預測過程乘以p。
Dropout的作用:防止過擬合
網絡學到的東西(比如有耳朵、毛茸茸等等)可能是冗余的信息,只有一部分信息是真正有用的,而哪些信息是有用的呢?
Dropout是隨機失活的,也就是說有時候的訓練沒有該神經元,也就是沒有部分信息。如果有耳朵的信息判定的結果是一只貓,沒有耳朵的信息判定結果也是一只貓,那么耳朵這個信息就是冗余的。
《Dropout: A Simple Way to Prevent Neural Networks from Overfitting》
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的二、计算机视觉与卷积神经网络的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 香港账户怎么开户,有以下三种方法
- 下一篇: 卷积神经网络经典模型要点