深度學習算法 數據預處理之數據增強基礎

數據增強也叫做數據擴增,就是在不實質上增加原始數據量的情況下,通過裁剪、旋轉、縮放、對稱等操作,在原有數據上產生更多的等價數據量作爲深度學習的數據集。比如裁剪:對於一張256*256的圖,裁剪成224*224的圖片,可以產生32*32張不同的圖片,數據量近似擴充了1000倍(實際情況可能因爲圖片相似度過高,打些折扣),如果再輔以其他手段,就會有更好的多樣性。

數據增強可以分爲:有監督的數據增強(又分爲單樣本和多樣本的數據增強方法)和無監督的數據增強(分爲生成新的數據和學習增強策略兩個方向)。

一、有監督的數據增強

(1)有監督的數據增強,即需要有特定的數據變換規則,對於單樣本,可以進行:幾何變換類,如翻轉(水平、垂直)、旋轉(隨機)、裁剪(隨機)、變形、縮放等操作;顏色變換類,如噪聲、模糊、顏色擾動、擦除、填充等。

需要注意的是:1)對於翻轉和旋轉操作,經常用於對方向不敏感的任務,比如圖像分類。裁剪會改變圖片的大小,縮放變形會使圖片失真。2)通常情況下,網絡的訓練要求輸入的大小固定,當數據集中的圖像大小不一時,可以選擇裁剪或縮放至網絡要求的固定大小的方式,後者因爲有失真,效果通常會比前者差。

基於噪聲的數據增強就是在原來的圖片基礎上,隨機疊加一些噪聲,常用的如高斯噪聲,也可以在面積大小選定、位置隨機的矩形區域上去除像素產生黑色矩形框,從而產生一些彩色噪聲,以Coarse Dropout方法爲代表,也可以對圖片上隨機選定的一塊區域擦除圖像信息。

顏色變換就是在某一個顏色通道上,通過增加或減少 某些顏色分量,或者改變顏色通道的順序。

顏色變換的git項目https://github.com/aleju/imgaug

2.多樣本數據增強:就是利用多個樣本來產生新的樣本

(1)SMOTE是通過人工合成新樣本來處理樣本不平衡問題,從而提升分類器性能。

樣本不平衡現象是指數據集中各類別的數據量不近似相等,樣本類別之間相差較大時,會影響分類器的分類效果。假設小樣本數據數量極小,分類器沒有很好學習到小樣本的特徵,會導致分類效果很差。

SMOTE方法是基於插值的方法,爲小樣本類合成新的樣本,主要流程是:1)定義一個特徵空間,將每個樣本對應到特徵空間的某一點,根據樣本不平衡比例確定一個採樣倍率N;2)對每個小樣本類中的樣本(x,y),按歐式距離找出k個最近鄰樣本,在K箇中隨機選取一個樣本點(xn,yn),在特徵空間中樣本點與最近鄰點之間的連線段上隨機選取一點作爲新樣本點,公式可表達爲:

;3)重複前兩個步驟,直到大小樣本數量平衡。算法原理示意如下圖:(python中,SMOTE算法已經封裝到了imbalanced-learn庫中)

(2)SamplePairing方法的做法是,從訓練集中隨機抽取兩張圖片,分別經過基礎數據增強操作(如隨機翻轉等)處理後,經像素取平均值的形式疊加合成一個新的樣本,標籤爲原樣本標籤中的一種,兩張圖片不限制爲同一類別,對醫學圖像比較有效。示意如下:

經SamplePairing之後,可以訓練集規模從N擴增到N*N,另外,這種抽樣配對的方法可能引入不同標籤的訓練樣本,導致在各數據集上使用該方法訓練的誤差比較明顯,而在驗證集上誤差降低。思路簡單、性能上提升效果好,但可解釋性不強。

具體參考論文:Inoue H. Data Augmentation by Pairing Samples for Images Classification[J]. 2018

(3)mixup是基於鄰域風險最小化原則的數據增強方法,它使用線性插值得到新樣本數據。(xn,yn)是插值生成的新數據,(xi,yi)和(xj,yj)是訓練集隨機選取的兩個數據,新數據的生成方式如下式,λ值介於0~1:

。該方法可以改進深度學習模型在ImageNet數據集、CIFAR數據集、語音數據集中的泛化誤差,降低模型對已損壞標籤的記憶,增強模型對抗樣本的魯棒性和訓練生成對抗網絡的穩定性。

上述三種多樣本增強方式都是將離散樣本點連續化來擬合真實數據的分佈,所生成的樣本點均位於特徵空間中仍位於已知小樣本點所圍成的區域內,如果能夠在給定範圍之外適當插值,也許能夠實現更好的數據增強效果。

二、無監督的數據增強

分爲以下兩類:

1、通過模型學習數據的分佈,隨機生成與訓練數據集分佈一致的圖片,比如GAN生成對抗網絡模型。

論文:Generative Adversarial Networks[J]. Advances in Neural Information Processing Systems, 2014, 3:2672-2680.

GAN(generative adversarial networks),包含生成網絡G和判別網絡D兩個網絡。基本原理是:G是一個生成圖片的網絡,接收隨機的噪聲z,通過噪聲生成圖片;D是一個判別網絡,判別一張圖片是不是“real”,還是G生成的圖片。

2、通過模型,學習適合當前任務的數據增強方法,如AutoAugment。

論文:AutoAugment: Learning Augmentation Policies from Data.[J]. arXiv: Computer Vision and Pattern Recognition, 2018

AutoAugment的基本思路是使用增強學習從數據本身去尋找最佳的圖像生成策略,先組合各種數據增強操作,測試效果,獲得最佳效果的方式,對於不同的任務有不同的增強方法。

 

常用的翻轉flipping、平移translations、加噪noise等操作可以使用python numpy、pyplot 、PIL等模塊在圖片像素矩陣上完成操作。

參考博客:https://blog.csdn.net/xjp_xujiping/article/details/102497316

https://blog.csdn.net/weixin_33924220/article/details/89618955

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章