數(shù)據(jù)增強(qiáng)策略(一)
數(shù)據(jù)增強(qiáng)匯總倉庫
一個強(qiáng)大的數(shù)據(jù)增強(qiáng)倉庫 https://github.com/aleju/imgaug
介紹了大量不同任務(wù)的數(shù)據(jù)增強(qiáng)方法,包括代碼和可視化

另一份數(shù)據(jù)增強(qiáng)的文檔是百度深度學(xué)習(xí)框架 PandlePandle 的介紹 https://paddleclas.readthedocs.io/zh_CN/latest/advanced_tutorials/image_augmentation/ImageAugment.html

以下詳細(xì)介紹幾種數(shù)據(jù)增強(qiáng)的策略
Mix up
《mixup: Beyond Empirical Risk Minimization》 https://arxiv.org/abs/1710.09412 《Bag of Tricks for Image Classification with Convolutional Neural Networks》 https://arxiv.org/abs/1812.01187
代碼
mix up 在 cifar10 的應(yīng)用(分類):https://github.com/facebookresearch/mixup-cifar10 可視化 :https://github.com/pascal1129/cv_notes/blob/master/codes/mixup.ipynb
算法原理:
幾乎無額外計算開銷的情況下穩(wěn)定提升 1 個百分點的圖像分類精度。也可以使用在目標(biāo)檢測上面

對于輸入的一個 batch 的待測圖片 images,將其和隨機(jī)抽取的圖片進(jìn)行融合,融合比例為 ,得到混合張量 inputs; 第 1 步中圖片融合的比例 是 [0,1] 之間的隨機(jī)實數(shù),符合 分布 numpy.random.beta (alpha, alpha),相加時兩張圖對應(yīng)的每個像素值直接相加,即 將第 1 步中得到的混合張量 inputs 傳遞給 model 得到輸出張量 outpus,隨后計算損失函數(shù)時,我們針對兩個圖片的標(biāo)簽分別計算損失函數(shù),然后按照比例 進(jìn)行損失函數(shù)的加權(quán)求和,即
不同的 值得到的結(jié)果

代碼示例
一份簡單的代碼實現(xiàn)如下:
https://github.com/facebookresearch/mixup-cifar10/blob/master/train.py
這里相當(dāng)于把輸入打亂后的輸入進(jìn)行權(quán)重相加
def?mixup_data(x,?y,?alpha=1.0,?use_cuda=True):
????'''Returns?mixed?inputs,?pairs?of?targets,?and?lambda'''
????if?alpha?>?0:
????????lam?=?np.random.beta(alpha,?alpha)
????else:
????????lam?=?1
????batch_size?=?x.size()[0]
????if?use_cuda:
????????index?=?torch.randperm(batch_size).cuda()
????else:
????????index?=?torch.randperm(batch_size)?#?打亂索引順序
????mixed_x?=?lam?*?x?+?(1?-?lam)?*?x[index,?:]?#?這里就相當(dāng)于不同的兩種進(jìn)行混合
????y_a,?y_b?=?y,?y[index]
????return?mixed_x,?y_a,?y_b,?lam
def?mixup_criterion(criterion,?pred,?y_a,?y_b,?lam):
????return?lam?*?criterion(pred,?y_a)?+?(1?-?lam)?*?criterion(pred,?y_b)
Cutout
論文:《Improved Regularization of Convolutional Neural Networks with Cutout》https://arxiv.org/abs/1708.04552
代碼:https://github.com/uoguelph-mlrg/Cutout
算法原理
隨機(jī)的將樣本中的部分區(qū)域 cut 掉,并且填充 0 像素值,分類的結(jié)果不變;

實驗結(jié)果

CutMix
論文:《CutMix: Regularization Strategy to Train Strong Classifiers with Localizable Features》https://arxiv.org/abs/1905.04899
代碼:https://github.com/clovaai/CutMix-PyTorch
算法原理
CutMix 是將一部分區(qū)域 cut 掉然后隨機(jī)填充訓(xùn)練集中的其他數(shù)據(jù)的區(qū)域像素值,分類結(jié)果按一定的比例分配。進(jìn)而提高了模型對抗輸入破壞的魯棒性

作者認(rèn)為 mixup 的缺點是:
Mixup samples suffer from the fact that they are locally ambiguous and unnatural, and therefore confuses the model, especially for localization。
算法基本原理:通過設(shè)計一個遮罩 M,它的大小與圖片大小一致,每個像素取值為 0 或者 1,然后通過 M 與圖 A 進(jìn)行像素點乘法運算、1-M 與圖 B 進(jìn)行像素點乘法運算,然后兩者相加得到一張新的圖片。標(biāo)簽類別根據(jù)相應(yīng)比例重新生成。


在大部分任務(wù)中均有提升

基于 CutMix 的預(yù)訓(xùn)練模型可以在 Pascal VOC 上實現(xiàn)性能提升,但它并不是專門為目標(biāo)檢測器設(shè)計的。
參考:https://blog.csdn.net/weixin_38715903/article/details/103999227
Gridmask
論文:《GridMask Data Augmentation》https://arxiv.org/abs/2001.04086
代碼:https://github.com/Jia-Research-Lab/GridMask
在不同任務(wù)上的效果

基本原理
Gridmask 的基本原理就是利用一張和原圖同樣大小的網(wǎng)格蒙版(mask,上面的值只有 0 和 1)并隨機(jī)對蒙版進(jìn)行翻轉(zhuǎn),然后與原圖進(jìn)行相乘,得到最終的結(jié)果。
該方法類似于正則化的效果,如果蒙版上 1 的數(shù)量較多,也就是保持信息的比例較大,那么模型有可能存在過擬合的風(fēng)險,反之,若保持信息的比例較少,則存在欠擬合的風(fēng)險。

這種數(shù)據(jù)增強(qiáng)的方法有 4 個參數(shù) ,其物理意義如下:

參考:https://zhuanlan.zhihu.com/p/103992528
Mosaic

Mosaic 是 YOLOv4 提出的一種數(shù)據(jù)增強(qiáng)方法,在 Cutmix 中我們組合了兩張圖像,而在 Mosaic 中我們使用四張訓(xùn)練圖像按一定比例組合成一張圖像,使模型學(xué)會在更小的范圍內(nèi)識別對象。其次還有助于顯著減少對 batch-size 的需求。
參考:https://mp.weixin.qq.com/s/Cl_BCkRVABXsBnZd9siJtw
Label Smoothing
論文:https://arxiv.org/abs/1512.00567
算法原理
Label Smoothing 是在論文《Rethinking the Inception Architecture for Computer Vision》中提到的一種對于輸出進(jìn)行正則化的方法。核心就是對 label 進(jìn)行 soft 操作,不要給 0 或者 1 的標(biāo)簽,而是有一個偏移,相當(dāng)于在原 label 上增加噪聲,讓模型的預(yù)測值不要過度集中于概率較高的類別,把一些概率放在概率較低的類別。
對于一個 K 分類的模型,輸入 x,模型計算類別為 k 的概率為
假設(shè)真實分布為 ,則交叉熵?fù)p失函數(shù)為
最小化交叉熵等價最大化似然函數(shù)。交叉熵函數(shù)對邏輯輸出求導(dǎo)
正常情況下,如果實際的標(biāo)簽 y=k (第 k 類),那么 ,那么為了使損失盡量小, p (k) 必須要盡量接近于 1,那么模型對于結(jié)果預(yù)測會更加自信。這就會導(dǎo)致兩個問題
1、over-fitting 2、使得損失函數(shù)對邏輯輸出的導(dǎo)數(shù)差異變大,降低了模型的適應(yīng)能力。
為了避免模型過于自信,引入一個獨立于樣本分布的變量
實驗中使用均勻分布代替 ,即
參考:https://www.cnblogs.com/pprp/p/12771430.html

機(jī)器視覺 CV
與你分享 AI 和 CV 的樂趣
分享數(shù)據(jù)集、電子書、免費GPU
長按二維碼關(guān)注我們
