深度學習中的圖像數據預處理——圖像去均值(image mean or pixel mean)

 

 

首先引用下網上的解釋:網絡

For a grayscale image, every pixel in the mean image is computed from the average of all corresponding pixels (i.e. same coordinates) across all images of your dataset. "Mean image" subtraction means that this mean image is subtracted from any input image you feed to the neural network. The intention is to have inputs that are (on average) centred around zero.app

The mean pixel is simply the average of all pixels in the mean image. "Mean pixel" subtraction means that you subtract the *same* mean pixel value from all pixels of the input to the neural network.學習

Now the same applies to RGB images, except that every channel is processed independently (this means we don't compute averages across channels, instead every channel independently goes through the same transformations as for a grayscale image).ui

Intuitively, it feels like mean image subtraction should perform better (that is what I noticed on the auto-encoder example in DIGITS) although I don't know of research papers that back this up.this

對於灰度圖像,平均圖像中的每一個像素都是由數據集中全部圖像間的相應像素(即相同座標)的平均值計算得出的。「平均圖像」減法意味着從輸入神經網絡的任何輸入圖像中減去該平均圖像。目的是使輸入(平均)以零爲中心。編碼

平均像素只是平均圖像中全部像素的平均值。「平均像素」減法意味着從輸入到神經網絡的全部像素中減去「相同的"平均像素值。spa

這一樣適用於RGB圖像,除了每一個通道都是獨立處理的(這意味着咱們不計算通道之間的平均值,而是每一個通道獨立地進行與灰度圖像相同的轉換)。code

從直覺上講,感受像平均圖像減法應該表現的更好(這是我在DIGITS中的自動編碼器示例中注意到的),儘管我不知道有支持這種狀況的研究論文。orm

image mean:blog

舉例來講,輸入一張RGB圖像,好比N*N*3,對其求image mean,結果還是N*N*3,即對訓練集中全部圖像在同一空間位置上(也是相同通道,不跨通道)的像素求均值。

pixel mean:

而pixel mean,是把全部圖像的R通道的像素求均值,G,B通道同樣,不考慮空間位置的關係。這樣求得的結果是R_mean, G_mean, B_mean,至關於把image mean再次求平均。

減去均值的緣由:

(1)從PCA的角度

減去均值是爲了數據特徵標準化,特徵標準化指的是使數據的每個維度具備零均值和單位方差。這是歸一化中最經常使用的方法。在實際計算中,特徵標準化的具體操做是:首先計算每個維度上數據的均值(使用全體數據來計算),而後在每個維度上都減去該均值。最後在數據的每個維度上除以該維度上數據的標準差。

對於天然圖像來講,更多的是作圖像零均值化處理,並不須要估計樣本的方差。這是由於在天然圖像上進行訓練時,對每個像素單獨估計均值和方差的意義不大,由於(理論上)圖像上任一部分的統計性質都應該和其餘部分相同,圖像的這種性質被稱做平穩性(stationarity)。

對於圖像,這種歸一化能夠移除圖像的平均亮度值(intensity),不少狀況下咱們對圖像的照度並不感興趣,而更多地關注其內容,好比在物體識別任務中,圖像的總體明亮程度並不會影響圖像中存在的是什麼物體。這時對每一個數據點移除像素的均值是有意義的。

(2)從反向傳播計算的角度

在深度學習中,使用gradient descent來訓練模型的話,基本都要在數據預處理時進行數據歸一化。固然這是有緣由的。

根據公式

                                                                         

 

若是輸入層 χ 很大,在反向傳播時傳遞到輸入層的梯度就會變得很大。梯度大,學習率就得很是小,不然會越過最優。在這種狀況下,學習率的選擇須要參考輸入層的數值大小,而直接將數據歸一化操做,能夠很方便的選擇學習率。並且受 χ 和 的影響,各個梯度的數量級不相同,所以,它們須要的學習率數量級也就不相同,對於w1 適合的學習率,可能相對於w來講過小,若是仍使用適合w的學習率,會致使在w2的方向上降低地很慢,會消耗很是多的時間,而使用適合W2的學習率,對於w1來講又太大,找不到適合w1的解。

相關文章
相關標籤/搜索