深度學習中的數據增強技術:Augmentation
- 2020 年 4 月 8 日
- 筆記
概念
數據增強(Data Augmentation)是一種通過利用演算法來擴展訓練數據的技術。人工智慧三要素之一為數據,但獲取大量數據成本高,但數據又是提高模型精度和泛化效果的重要因素。當數據量不足時,模型很容易過擬合,精度也無法繼續提升,因此數據增強技術應運而生:利用演算法,自動增強訓練數據。
方法
數據增強有一系列簡單方法可供選擇:
幾何變換:翻轉、旋轉、縮放、裁剪、平移等
顏色變換:對比度調節、顏色反轉、直方圖均衡、色彩平衡、亮度等
Cutout:在圖片中挖掉一個矩形塊補0
Mixup:把兩張圖片線性疊加,label轉換為one-hot形式進行相同的線性疊加
Cutmix:Cutout和Mixup的綜合版本,在圖片中挖掉的矩形塊補另一張圖片,label也疊加
AutoAugment:採用搜索的方式,搜出最適合的變換組合,複雜度高5000 GPU hours
RandAugment:減小搜索空間,所有變換採用相同的幅度
Refinement:在增強訓練後再用原始數據訓練一段時間
基於GAN的數據增強:利用原始數據分布生成新的數據
神經風格轉換:圖片風格轉換
添加雜訊:高斯雜訊、椒鹽雜訊等
看起來效果一般的增強方式:
Sample pairing:兩張圖片直接平均,label取隨意一張圖片
FMix:採用Fourier變換選取挖掉和補充的區域
發展
數據增強最簡單的方式是各種幾何變換和顏色變換,在imgaug庫(https://github.com/aleju/imgaug)中有非常多的函數。但一個關鍵問題是:針對特定的數據集、網路,哪一種增強方式是最適合的?
為了回答這個問題,Google使用和AutoML類似的RL搜索方法進行優化,CIFAR-10上就花費了5000 GPU Hours,獲得了不錯的結果,但複雜度太高,沒有實用化的可能。後來出現了RandAugment,發現犧牲一定的自由度,縮小搜索空間,效果也還可以,也可以獲得一定收益。但RandAugment遠遠不是最優解,仍然需要一定量的搜索,優化仍然在繼續。
展望
數據增強是增大數據規模,減輕模型過擬合的有效方法,最近的研究也特別活躍。但目前的研究顯示,最優的增強方式和數據集、網路都有關係,如何低成本地找到最優的增強方式,是一個非常難的問題。我也會持續跟蹤這個領域的最新進展,歡迎討論。
參考
A survey on Image Data Augmentation for Deep Learning https://link.springer.com/article/10.1186/s40537-019-0197-0
https://github.com/guanxs/data-augmentation