1. 程式人生 > >資料預處理--資料擴增/Data Augmentation/影象增強

資料預處理--資料擴增/Data Augmentation/影象增強

  若增加訓練資料,則能夠提升演算法的準確率,因為這樣可以避免過擬合,更好地泛化;而避免了過擬合你就可以增大你的網路結構了。
  可以大量使用資料增廣。

1)幾何變換

  包括:彈性變換(Elastic Transform)、透視變換(Perspective Transform)、分段仿射變換(Piecewise Affine transforms)、枕形畸變(Pincushion Distortion)。
在這裡插入圖片描述

  a)隨機改變大小(resize),隨機縮放、旋轉、翻轉

  b)從原始影象(256,256)中,隨機的crop出一些影象(224,224)
  作者說,不做隨機crop,大型網路基本都過擬合(under substantial overfitting)。
  先crop,後padding再resize,這樣輸入圖片會保持長寬比。我們做過類似的實驗,摳圖直接resize到輸入尺寸,這樣圖片會損失長寬比,結果會差一點。然後,我們會先做加入Random scales,把框進行隨機擴大或者縮小。

  c)水平/豎直翻轉,flip。mirror,即水平翻轉影象。

transform_param { 
# 測試的時候就不做映象了
    mirror: false
    crop_size: 227
    mean_file: ""ilsvrc12/imagenet_mean.binaryproto""
}

  d)Rotation變換/旋轉變換
  目前主流的處理方式rotate負30度到正30度,這次我們用的是負45度到正45度。這個Rotation一般來說會有提升但是不會很大,主要是用在一些比較極端的情況下,比如人是斜著的。
  在後面做實驗的時候,發現了另外一種思路:直接把人旋轉,檢測出人的頭,或某個部位之後,按照一定的角度把人轉正。

2)加噪聲

  對主成分做一個(0, 0.1)的高斯擾動。

3)PCA Jittering(顏色改變)

  最早是由Alex在他2012年贏得的ImageNet競賽的那篇NIPS中提出的。
  a)首先按照RGB三個顏色通道計算均值和標準差,對網路的輸入資料進行規範化,
  b)隨後我們在整個訓練集上計算了協方差矩陣,進行特徵分解,得到特徵向量和特徵值,用來做PCA Jittering。
  對RGB空間做PCA,然後對主成分做一個(0, 0.1)的高斯擾動。結果讓錯誤率又下降了1%。
在這裡插入圖片描述

4)對比度和亮度

  給影象增加一些隨機的光照;
  對比度受限自適應直方圖均衡化演算法(Clahe),銳化(Sharpen),凸點(Emboss);

5)隨機色相、飽和度、明度(HSV)變換

6)彩圖到灰度轉換(Color to Gray)

7)將灰度圖重新對映到隨機顏色的影象中

8)模糊(Blur)、一般模糊(Median Blur)、非常模糊(Motion Blur)

9)通道重排

  由於資料的天然性,這一點非常重要

10)影象上細胞核的複製?

  這樣就創造了大量重疊的細胞核,似乎有助於網路更好地學到重疊細胞核的邊界。