資料增強方法總結
阿新 • • 發佈:2019-01-28
資料增強主要是為了減少網路的過擬合現象,通過對訓練圖片進行變換可以得到泛化能力更強的網路,更好的適應應用場景。
方法
常用的資料增強方法有:
- 旋轉 | 反射變換(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)