資料預處理--資料擴增/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)影象上細胞核的複製?
這樣就創造了大量重疊的細胞核,似乎有助於網路更好地學到重疊細胞核的邊界。