1. 程式人生 > >資料增強方法總結

資料增強方法總結

資料增強主要是為了減少網路的過擬合現象,通過對訓練圖片進行變換可以得到泛化能力更強的網路,更好的適應應用場景。

方法

常用的資料增強方法有:

  • 旋轉 | 反射變換(Rotation/reflection): 隨機旋轉影象一定角度; 改變影象內容的朝向;
  • 翻轉變換(flip): 沿著水平或者垂直方向翻轉影象;
  • 縮放變換(zoom): 按照一定的比例放大或者縮小影象;
  • 平移變換(shift): 在影象平面上對影象以一定方式進行平移;
  • 可以採用隨機或人為定義的方式指定平移範圍和平移步長, 沿水平或豎直方向進行平移. 改變影象內容的位置;
  • 尺度變換(scale): 對影象按照指定的尺度因子, 進行放大或縮小; 或者參照SIFT特徵提取思想, 利用指定的尺度因子對影象濾波構造尺度空間. 改變影象內容的大小或模糊程度;
  • 對比度變換(contrast): 在影象的HSV顏色空間,改變飽和度S和V亮度分量,保持色調H不變. 對每個畫素的S和V分量進行指數運算(指數因子在0.25到4之間), 增加光照變化;
  • 噪聲擾動(noise): 對影象的每個畫素RGB進行隨機擾動, 常用的噪聲模式是椒鹽噪聲和高斯噪聲;
  • 顏色變化:在影象通道上新增隨機擾動。
  • 輸入影象隨機選擇一塊區域塗黑,參考《Random Erasing Data Augmentation》

在Keras中已經方便的實現了資料擴增,如果嘗試效果可以直接使用keras,如果在caffe中使用,可以線下生成資料或者修改Image_data層進行資料擴增。

Keras中資料擴增

# 資料擴增
train_datagen = ImageDataGenerator(
        rescale=1./255,
        shear_range=0.1,
        zoom_range=0.1,
        rotation_range=10.,
        width_shift_range=0.1,
        height_shift_range=0.1,
        horizontal_flip=True)