2019-CVPR-AutoAugment: Learning Augmentation Strategies from Datahtml
來源:ChenBong 博客園git
AutoML除了網絡結構的自動搜索, 有一個分支作的是數據加強的自動搜索.github
深度學習/CV領域大部分的工做都是在設計更好的網絡結構, 不多有工做關注在數據加強的改進上, 例如ImageNet數據集上普遍使用仍是2012年ImageNet比賽中提出的數據加強方法.算法
數據加強包含不一樣的操做, 每一個操做執行的前後順序, 執行機率, 執行的強度, 都是須要手工設計的, 不一樣的數據集對不一樣的數據加強組合有不一樣的需求(例如水平翻轉在MNIST 手寫數字數據集上是不適用的), 自動數據加強就是針對不一樣的數據集, 搜索適合該數據集的數據加強pipeline (順序, 機率, 強度等)網絡
本文的數據加強op的搜索空間包含16個操做, 每一個操做都有機率範圍[0-1], 等距離散化爲11個值; 有的操做還包含強度範圍, 等距離散化爲10個值 (例如, Invert 反色: 像素值v=>255-v 不包含強度範圍);dom
本文的數據加強pipeline由5個policy組成, 每一個policy又由5個sub-policy組成, 每一個sub-policy包含2個op, 但搜索目標是針對該數據集的最佳policy, 所以搜索空間大體爲 \((16×10×11)^{10}≈2.9×10^{32}\) , 最終的pipeline由最佳的5個policy鏈接起來, 組成最終的pipeline (長度爲50個op)ide
做者使用強化學習做爲搜索算法, 控制器是一個RNN, 每次控制器RNN從搜索空間中選擇1個policy(10個op), 在一個固定的網絡上訓練到收斂, 網絡的準確率做爲控制器RNN的獎勵, 更新控制器RNN, 以產生更好的policy性能
(其實能夠看作接近窮舉的搜索, 做者也說了, 除了使用強化學習, 也可使用其餘的超參優化算法例如EA等)學習
爲了減小搜索開銷, 做者不是在完整的訓練集(50000 個樣本)上進行訓練-搜索最佳策略, 而是在一個訓練集的子集(4000 個樣本)上訓練-搜索最佳策略, 該數據集稱爲 "Reduce CIFAR-10"; 這麼作的動機是, 做者發現, 對於固定的訓練時間, 在子數據集上訓練更多的epoch的效果比在完整數據集上訓練較少的epoch效果更好.測試
而後再將在reduce CIFAR-10上找到的最佳策略應用到 CIFAR-10, reduce CIFAR-10, CIFAR-100 數據集上, 這裏的模型用的是Wide-ResNet-28-10, 訓練120個epoch
在 Reduce CIFAR-10上找到的最佳策略, 最終的pipeline:
在CIFAR-10上,AutoAugment主要挑選基於顏色的轉換。例如,在CIFAR-10上最常挑選的變換是Equalize、AutoContrast、Color和Brightness. 像ShearX和ShearY這樣的幾何變換不多出如今好的policy中。此外,在一個成功的policy中幾乎從未應用過反轉這一變換。
如下的最佳策略都是在 Reduce CIFAR-10上找到的:
本文的方法是第1個在CIFAR-10數據集上突破<2%錯誤率的方法;
一樣也打破了CIFAR-100上錯誤率 12.2 的最佳紀錄
半監督實驗: 在reduce CIFAR-10數據集(4000個樣本)上訓練, 在完整的CIFAR-10上驗證, 提高的效果更爲顯著(18.8=>14.1, 17.1=>10.0)
SVHN(街景門牌號)數據集, 10個類別對應數字0-9, 73257個訓練圖像, 531131個additional 訓練圖像, 26032個測試圖像.
一樣是構建一個 reduce SVHN (1000個訓練樣本) 來搜索最佳策略, 最終的pipeline:
在reduced SVHN上搜索到最經常使用的op是 Invert, Equalize, ShearX/Y, and Rotate;
與CIFAR-10不一樣的是, CIFAR-10幾乎不選擇 Invert, ShearX/Y這樣的幾何變換和Rotate
在SVHN上選擇幾何變換/旋轉是有道理的, 由於數據集中的的樣本自然地就是傾斜/不一樣角度的
如下是其中1個policy的可視化:
SVHN上的實驗結果:
半監督實驗: 在Reduced SVHN上訓練, 在SVHN上測試, 接近SOTA的半監督方法(5.42%-3.86%)
在半監督實驗中, Cutout的數據加強不但沒有提點的做用, 反而對性能有損害
reduced ImageNet: 120個類, 6000個樣本
Wide-ResNet 40-2, 200 epoch
在reduced ImageNet上搜索到的1個policy的可視化:
和CIFAR-10相似, 主要是基於顏色的變換, 一個區別是, ImageNet中會使用幾何變換(旋轉)
最終的pipeline一樣是將最好的5個policy鏈接起來, 一共有25個sub-policy(50個op):
最後的實驗是在ResNet-50和ResNet-200上訓練270個epoch:
能夠看出, 搜索到的AutoAugment對不一樣的結構都有提點的效果, 考慮到這只是在5000張 (&&6000張?) 圖片上搜索的結果, 若是用更多的圖片進行搜索效果應該會更好
We expect the results to be even better when more compute is available so that AutoAugment can use more images to discover even better augmentation policies.
直接在感興趣的目標數據集上進行數據加強的策略搜索是資源密集的, 做者想了解是否能夠將搜索到的策略從1個數據集遷移到另外一個數據集 (將搜索到的數據加強策略直接應用到新的數據集上), 有2個目的:
將在ImageNet上搜索到的策略, 應用到5個新數據集上:
使用Inception v4, 訓練1000個epoch
能夠發現, 在ImageNet上搜索到的加強策略, 對5個不一樣數據集都有提點的做用, 且在Standford Cars數據集上取得了新的SOTA (以前的SOTA是5.9%)
在CIFAR-10上, 使用AutoAugment搜索到的policy序列(50個op), 但op的機率和強度隨機化, 結果比AutoAugment差0.4%
在CIFAR-10上, 對policy也隨機化, 即隨機抽樣相同長度的policy, 結果比AutoAugment差0.5%
以上2組消融實驗說明, AutoAugment找到的policy序列中op的機率和強度更重要
AutoAugment有價值的部分應該是跨模型, 跨數據集的可遷移性, 例如: 在Wide-ResNet-40-2 on Reduced CIFAR-10上搜索的結果, 能夠直接應用到完整CIFAR-10/100及不一樣的模型結構上; 在Wide-ResNet-40-2 on Reduced ImageNet上搜索的結果, 能夠直接應用在完整的ImageNet以及其餘5個數據集上, 甚至能夠達到新數據集的SOTA; 不管是全量數據集仍是半監督都有一致的提點的做用(Cutout 在SVHN上的半監督實驗不但沒有提點還會掉點)
和AutoAugment同一批做者團隊, 與AutoAugment的主要區別是大大減少了搜索空間, 只保留2個參數:
樣本增廣自動化-AutoAugment論文解讀 - 知乎 (zhihu.com)
AutoAugment: Learning Augmentation Strategies from Data | Cugtyt
【強化學習 108】AutoAugment - 知乎 (zhihu.com)