日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

自动搜索数据增强方法分享——fast-autoaugment

發布時間:2024/7/23 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 自动搜索数据增强方法分享——fast-autoaugment 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

簡短的介紹下分享fast-autoaugment的原因

毫無疑問數據增強對于訓練CNN非常有效,大家也在不斷發明新的數據增強方法

拿到一份數據集,我們憑借之前的經驗組合不同的增強方法形成一個數據增強策略,通常可以得到一個還不錯的baseline。但如何更進一步,讓模型再提升1-2個百分點就很困難了。通常我是進行一些數據增強效果的可視化,選定一個潛在的優化方向(比如旋轉的幅度是否過大了),然后調整對應的超參數進行一組對比實驗。

當問題發展到這個階段時,人工優化的成本已經很高而且很可能收效甚微了。針對這個問題,開始有人嘗試借助AutoML這個新技術來進行數據增強策略的篩選。

這里面最有代表性的應該算是2019年google提出的AutoAugment,該方法借助強化學習來自動的在給定的數據集上探索最優的數據增強策略。AutoAugment在包括ImageNet,CIFAR-10等在內的多個數據集上,與人工設計的數據增強策略所訓練出的baseline相比,都取得了顯著提升。

但AutoAugment即使是在CIFAR-10這樣的小數據集上,探索出一個數據增強策略,都要花費5000個GPU hours,這顯然是個致命的缺點。

截至到今天,我發現了兩篇優秀的paper,他們都在借鑒AutoAugment的基礎上,實現了大幅的提速,分別是:

PBA: Population Based Augmentation: Efficient Learning of Augmentation Policy Schedules

Fast AutoAugment

Fast AutoAugment 提出了一種方法,避免了調整不同數據增強參數不停的重復訓練網絡這個超級消耗GPU的步驟,從而獲得了100-1000倍的速度提升,并且能夠和AutoAugment取得近似的效果,這也是我打算學習和分享這篇paper的原因。

至于PBA,由于這篇paper我還沒看,所以暫時不討論,當然PBA和Fast AutoAugment哪個效果好,也是之后值得討論的問題。

em… 前兩天google又出來一個RandAugment,一個個跟進

現有數據增強方法總結

ShearX, ShearY

TranslateX, TranslateY

Rotate

AutoContrast

調整圖像對比度。計算一個輸入圖像的直方圖,從這個直方圖中去除最亮和最暗的部分,然后重新映射圖像,以便保留的最暗像素變為黑色,即0,最亮的變為白色,即255。

Invert

將輸入圖像轉換為反色圖像。

Equalize

直方圖均衡化,產生像素值均勻分布的圖像

Solarize

反轉在閾值threshold范圍內的像素點(>threshold的像素點取反)

例如一個像素的取值為124=01111100

如果threshold=100,返回的結果為131=10000011

如果threshold=200,返回結果為124 (124<200)

Posterize

色調分離,將每個顏色通道上像素值對應變量的最低的(8-x)個比特位置0,x的取值范圍為[0,8]

Contrast

調整圖片的對比度

ImageEnhance.Contrast(img).enhance(v)

v = 1 保持原始圖像, v < 1 像素值間差距變小, v > 1 增強對比度,像素值間差異變大

Color

調整圖片的飽和度

ImageEnhance.Color(img).enhance(v)

v = 1 保持原始圖像, v < 1 飽和度減小趨于灰度圖, v > 1 飽和度增大色情更飽滿

Brightness

調整圖片的亮度

ImageEnhance.Brightness(img).enhance(v)

v = 1 保持原始圖像, v < 1 亮度減小, v > 1 亮度增大

Sharpness

調整圖片銳度

ImageEnhance.Sharpness(img).enhance(v)

v = 1 保持原始圖像, v < 1 產生模糊圖片, v > 1 產生銳化后的圖片

Cutout

Improved Regularization of Convolutional Neural Networks with Cutout

對訓練圖像進行隨機遮擋,該方法激勵神經網絡在決策時能夠更多考慮次要特征,而不是主要依賴于很少的主要特征

Cutout是一種類似于DropOut的正則化方法,被證明對于模型漲點非常有效。

Random erasing

Random erasing其實和cutout非常類似,也是一種模擬物體遮擋情況的數據增強方法。區別在于,cutout每次裁剪掉的區域大小是固定的,Random erasing替換掉的區域大小是隨機的, 使用隨機數替換。

Sample Pairing

Data Augmentation by Pairing Samples for Images Classification

Mixup

mixup: BEYOND EMPIRICAL RISK MINIMIZATION

原理可以簡單概括為隨機抽取兩個樣本進行簡單的隨機加權求和,同時樣本的標簽也對應加權求和

Bag of Freebies for Training Object Detection Neural Networks中將mixup應用在目標檢測算法上,同樣效果也很好。

CutMix

Cutmix: Regularization strategy to train strong classifiers with localizable features

Ricap

Data Augmentation using Random Image Cropping and Patching for Deep CNNs

Fast AutoAugment

搜索空間

將paper中的公式簡化成如下描述,按照最終的實驗設置:

我們最終要搜索的總的數據增強方案,包含若干個策略policies

每個策略包含5個子策略sub-policies

每個子策略包含兩個數據增強操作operations

每個operation對應了一種數據增強方法,有3個需要調整的參數,使用的具體數據增強方法,使用的概率p和使用的強度λ

每個子策略中的operations是串行結合在一起的。

按照paper介紹,實驗包含16個可選的operations(ShearX, ShearY, TranslateX, TranslateY, Rotate, AutoContrast, Invert,
Equalize, Solarize, Posterize, Contrast, Color, Brightness, Sharpness, Cutout, Sample Pairing),對于最后一個是否使用我目前存疑,因為我看作者給出的代碼把這個方法注釋掉了。

搜索空間與一個策略對應,因此按照實驗的配置,對應了30個特征=(5個sub-policies)* (2個operations)* (每個operation三個參數:使用的數據增強方法,p和λ)

策略的搜索算法:Bayesian Optimization

策略的搜索算法使用Bayesian Optimization,即貝葉斯優化器采樣出一組參數(對應了一個數據增強策略police),然后對這個策略的優劣進行評估(后面會介紹如何評估),將評估結果反饋給貝葉斯優化器進行學習,然后重新采樣,反復迭代這個過程直到達到停止條件(paper中設置迭代次數B=200)。

采集函數使用的是Expected Improvement (EI),代理函數使用的是tree-structured Parzen estimator (TPE) algorithm。

貝葉斯優化的原理和流程之前已經介紹過了,稍有區別的是,作者將這個數據集拆分成了K個子數據集(K=5),然后在K個子數據集上分別進行上述的貝葉斯優化過程,每次貝葉斯優化選出最優的N次采樣作為候選策略(N=10),在同一個子數據集上貝葉斯優化重復T次(T=2)。

因此,整個過程中會產生 100 = K * T * N = 5 * 2 * 10 個候選的策略集合,最終的訓練使用全部的數據集,并從候選集合中隨機挑選策略進行數據增強。

整個搜索框架如下圖所示:

流程圖如下圖所示:

評價方法:Density Matching

評價一個數據增強策略好壞的最直接且準確的方法就是用這個策略在訓練集上,使用最終要使用的網絡執行完整的訓練流程,然后看驗證集的準確率,為了減小隨機誤差通常還要進行重復實驗取平均。這個過程會非常耗時,通常會使用一個小得多的代理CNN網絡,并縮小訓練數據集的規模,來減少搜索策略的耗時,但這也會引入很大的誤差,導致效果不好。

本文的作者從另一個角度來看待數據增強方法優劣的評估問題。按文中所述:

對于任何給定的訓練集Dtrain和驗證集Dvalid,我們的目標是搜索能夠讓未增強的Dtrain與增強后的Dvalid密度匹配的數據增強策略來提高泛化能力。但是,直接比較這兩個數據集的分布以評估每個候選策略是不切實際的。因此,我們通過在Dtrain上不使用數據增強時訓練的模型,并在加上數據增強后的Dvalid上進行預測,使用預測結果的loss或者accuracy來評估一個數據集遵循另一個數據集的程度。

可以這樣理解,一個已經盡可能擬合訓練集(真實數據,未使用數據增強)的模型,如果去預測一個使用了數據增強后的測試集,并且能夠取得很好的準確率,就認為這種數據增強方法是自然的,符合真實分布的,密度匹配的。

對于密度匹配,其實就是作者試圖對提出方法進行的理論解釋,我理解就是數據分布一致的含義。就像Mixup一樣,有些方法原理其實很難解釋,效果好就行。

這個基于“密度匹配”的評估方法是這篇paper最靈魂的貢獻,實現起來也很簡單,雖然原理很難去解釋,但是這種方法巧妙的大幅降低了每次評估所需的計算量。

實驗結果

作者已經開源,方法到底好壞還要后面實際驗證過才知道。先看看paper中給出的一些結果:

TodoList

1.幾乎在所有任務上,Cutout都被證明有效,進行嘗試

2.包括AutoAugment、PBA、Fast AutoAugment、RandAugment在內的這些方法,它們在ImageNet上已經搜出的策略,遷移到自己的任務上是否也能在baseline上獲得提升。

3.閱讀其它幾篇論文,確認一個實驗目標,嘗試驗證效果。

參考文獻

圖像處理之錯切變換

Python圖像處理庫PIL的ImageOps模塊介紹

ImageEnhance

數據增強方法 | 基于隨機圖像裁剪和修補的方式(文末源碼共享)

圖像分類訓練技巧和精度提升總結

Improved Regularization of Convolutional Neural Networks with Cutout

mixup: BEYOND EMPIRICAL RISK MINIMIZATION

Population Based Augmentation: Efficient Learning of Augmentation Policy Schedules

Fast AutoAugment

總結

以上是生活随笔為你收集整理的自动搜索数据增强方法分享——fast-autoaugment的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。