[综述类] 一文道尽深度学习中的数据增强方法(上)
今天帶來一次有關于深度學習中的數據增強方法的分享。
00
什么是數據增強
在深度學習項目中,尋找數據花費了相當多的時間。但在很多實際的項目中,我們難以找到充足的數據來完成任務。
為了要保證完美地完成項目,有兩件事情需要做好:
1、尋找更多的數據;
2、數據增強。
本篇主要描述數據增強。
什么是數據增強呢?data augmentation,它的意思是讓有限的數據產生更多的等價數據。
下面舉個實際的例子:
上面的左側大圖為原圖,右側小圖是對左圖做了一些隨機的裁剪、旋轉操作得來的。右邊的每張圖對于網絡來說都是不同的輸入,這樣就將數據擴充到10倍。
假如我們輸入網絡的圖片的分辨率大小是256*256,若采用隨機裁剪成224*224的方式,那么一張圖最多可以產生32*32張圖,數據量擴充將近1000倍。
但因許多圖相似度太高,實際的效果并不等價。
如果再輔助其他的數據增強方法,將獲得更多的數據集,這就是數據增強的本質。? ??
01
空間幾何變換類
1.1 翻轉
翻轉包括水平翻轉和垂直翻轉。
1.2?crop
裁剪圖片的感興趣區域(ROI),通常在訓練的時候,會采用隨機裁剪的方法,下圖為隨機裁剪4次的效果。
1.3 旋轉
對圖像做一定角度對旋轉操作,看看效果。
1.4.縮放變形
隨機選取圖像的一部分,然后將其縮放到原圖像尺度。
1.5 仿射類
仿射變換
同時對圖片做裁剪、旋轉、轉換、模式調整等多重操作。
視覺變換
對圖像應用一個隨機的四點透視變換。
分段仿射(PiecewiseAffine)
分段仿射在圖像上放置一個規則的點網格,根據正態分布的樣本數量移動這些點及周圍的圖像區域。
02
像素顏色變換類
2.1 噪聲類
隨機噪聲是在原來的圖片的基礎上,隨機疊加一些噪聲。
高斯噪聲
CoarseDropout
在面積大小可選定、位置隨機的矩形區域上丟失信息實現轉換,所有通道的信息丟失產生黑色矩形塊,部分通道的信息丟失產生彩色噪聲。
SimplexNoiseAlpha
產生連續單一噪聲的掩模后,將掩模與原圖像混合。
FrequencyNoiseAlpha
在頻域中用隨機指數對噪聲映射進行加權,再轉換到空間域。在不同圖像中,隨著指數值逐漸增大,依次出現平滑的大斑點、多云模式、重復出現的小斑塊。
2.2 模糊類
減少各像素點值的差異實現圖片模糊,實現像素的平滑化。
高斯模糊
ElasticTransformation
根據扭曲場的平滑度與強度逐一地移動局部像素點實現模糊效果。
2.3?HSV對比度變換
通過向HSV空間中的每個像素添加或減少V值,修改色調和飽和度實現對比度轉換。
2.4 ?RGB顏色擾動
將圖片從RGB顏色空間轉換到另一顏色空間,增加或減少顏色參數后返回RGB顏色空間。
2.5? 隨機擦除法
對圖片上隨機選取一塊區域,隨機地擦除圖像信息。
2.6??超像素法(Superpixels)
在最大分辨率處生成圖像的若干個超像素,并將其調整到原始大小,再將原始圖像中所有超像素區域按一定比例替換為超像素,其他區域不改變。
2.7? 轉換法(invert)
按給定的概率值將部分或全部通道的像素值從v設置為255-v。
2.8??邊界檢測(EdgeDetect)
檢測圖像中的所有邊緣,將它們標記為黑白圖像,再將結果與原始圖像疊加。
2.9??GrayScale
將圖像從RGB顏色空間轉換為灰度空間,通過某一通道與原圖像混合。
2.10? 銳化(sharpen)與浮雕(emboss)
對圖像執行某一程度的銳化或浮雕操作,通過某一通道將結果與圖像融合。
下圖分別是銳化與浮雕效果圖。
上述兩大類方法都是通過調用imgaug庫操作實現的。
git地址:https://github.com/aleju/imgaug
官方文檔:http://imgaug.readthedocs.io/en/latest/index.html
03
多樣本合成類
3.1? SMOTE
SMOTE,Synthetic Minority Over-sampling Technique,通過人工合成新樣本來處理樣本不平衡問題,提升分類器性能。
類不平衡現象是數據集中各類別數量不近似相等。如果樣本類別之間相差很大,會影響分類器的分類效果。假設小樣本數據數量極少,僅占總體的1%,所能提取的相應特征也極少,即使小樣本被錯誤地全部識別為大樣本,在經驗風險最小化策略下的分類器識別準確率仍能達到99%,但在驗證環節分類效果不佳。
基于插值的SMOTE方法為小樣本類合成新的樣本,主要思路為:
(1)定義好特征空間,將每個樣本對應到特征空間中的某一點,根據樣本不平衡比例確定采樣倍率N;
(2)對每一個小樣本類樣本(x,y),按歐氏距離找K個最近鄰樣本,從中隨機選取一個樣本點,假設選擇的近鄰點為(xn,yn)。在特征空間中樣本點與最近鄰樣本點的連線段上隨機選取一點作為新樣本點,滿足以下公式:
(3)重復選取取樣,直到大、小樣本數量平衡。
在python中,SMOTE算法已經封裝到了imbalanced-learn庫中,如下圖為算法實現的數據增強的實例,左圖為原始數據特征空間圖,右圖為SMOTE算法處理后的特征空間圖。
3.2? SamplePairing
SamplePairing方法的處理流程如下圖所示,從訓練集中隨機抽取兩張圖片分別經過基礎數據增強操作(如隨機翻轉等)處理后經像素取平均值的形式疊加合成一個新的樣本,標簽為原樣本標簽中的一種。
經SamplePairing處理后可使訓練集的規模從N擴增到N*N,在CPU上也能完成處理。
訓練過程是交替禁用與使用SamplePairing處理操作的結合:
(1)使用傳統的數據增強訓練網絡,不使用SamplePairing 數據增強訓練。
(2)在ILSVRC數據集上完成一個epoch或在其他數據集上完成100個epoch后,加入SamplePairing 數據增強訓練。
(3)間歇性禁用 SamplePairing。對于 ILSVRC 數據集,為其中的300000 個圖像啟用SamplePairing,然后在接下來的100000個圖像中禁用它。對于其他數據集,在開始的8個epoch中啟用,在接下來的2個epoch中禁止。
(4)在訓練損失函數和精度穩定后進行微調,禁用SamplePairing。
實驗結果表明,因SamplePairing數據增強操作可能引入不同標簽的訓練樣本,導致在各數據集上使用SamplePairing訓練的誤差明顯增加,而在檢測誤差方面使用SamplePairing訓練的驗證誤差有較大幅度降低。
盡管SamplePairing思路簡單,性能上提升效果可觀,符合奧卡姆剃刀原理,遺憾的是的可解釋性不強,目前尚缺理論支撐。目前僅有圖片數據的實驗,還需下一步的實驗與解讀。
3.3? mixup
mixup是基于鄰域風險最小化(VRM)原則的數據增強方法,使用線性插值得到新樣本數據。
在鄰域風險最小化原則下,根據特征向量線性插值將導致相關目標線性插值的先驗知識,可得出簡單且與數據無關的mixup公式:
其中(xn,yn)是插值生成的新數據,(xi,yi) 和 (xj,yj)是訓練集中隨機選取的兩個數據,λ的取值滿足貝塔分布,取值范圍介于0到1,超參數α控制特征目標之間的插值強度。
mixup的實驗豐富,實驗結果表明可以改進深度學習模型在ImageNet數據集、CIFAR數據集、語音數據集和表格數據集中的泛化誤差,降低模型對已損壞標簽的記憶,增強模型對對抗樣本的魯棒性和訓練對抗生成網絡的穩定性。
mixup處理實現了邊界模糊化,提供平滑的預測效果,增強模型在訓練數據范圍之外的預測能力。
隨著超參數α增大,實際數據的訓練誤差就會增加,而泛化誤差會減少。說明mixup隱式地控制著模型的復雜性。隨著模型容量與超參數的增加,訓練誤差隨之降低。
盡管有著可觀的效果改進,但mixup在偏差—方差平衡方面尚未有較好的解釋。在其他類型的有監督學習、無監督、半監督和強化學習中,mixup還有很大的發展空間。
小結:mixup、SMOTE、SamplePairing三者思路上有相同之處,都是試圖將離散樣本點連續化來擬合真實樣本分布,但所增加的樣本點在特征空間中仍位于已知小樣本點所圍成的區域內。但在特征空間中,小樣本數據的真實分布可能并不限于該區域中,在給定范圍之外適當插值,也許能實現更好的數據增強效果。
更多,歡迎到知乎專欄去投稿與交流,配套資料將放出在github,可掃描二維碼進入。
打一個小廣告,我的計算機視覺公開課《AI 圖像識別項目從入門到上線》上線了,將講述從零基礎到完成一個實際的項目到微信小程序上線的整個流程,歡迎交流捧場。
參考文獻:
[1] Chawla N V, Bowyer K W, Hall L O, et al. SMOTE: synthetic minority over-sampling technique[J]. Journal of Artificial Intelligence Research, 2002, 16(1):321-357.
[2] Inoue H. Data Augmentation by Pairing Samples for Images Classification[J]. 2018.
[3] Zhang H, Cisse M, Dauphin Y N, et al. mixup: Beyond Empirical Risk Minimization[J]. 2017.
如果想加入我們,后臺留言吧
微信
Longlongtogo
公眾號內容
1 圖像基礎|2 深度學習|3 行業信息
往期精彩
?
【深度學習圖像項目實戰-從入門到上線1】怎樣學會科學的調研并啟動一個項目
?
【技術綜述】如何Finetune一個小網絡到移動端(時
空性能分析篇)
【技術綜述】計算機審美,學的怎么樣了?
【干貨·課程】言有三的深度學習從入門到上線課程
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的[综述类] 一文道尽深度学习中的数据增强方法(上)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【干货·课程】言有三的深度学习从入门到上
- 下一篇: 深度学习之路孤单吗?我们带你进组织!