數據增強方法總結


前言:

在計算機視覺方向,數據增強的本質是人為地引入人視覺上的先驗知識,可以很好地提升模型的性能,目前基本成為模型的標配。最近幾年逐漸出了很多新的數據增強方法,在本文將對數據增強做一個總結。

本文介紹了數據增強的作用,數據增強的分類,數據增強的常用方法,一些特殊的方法,如Cutout,Random Erasing,Mixup,Hide-and-Seek,CutMix,GridMask,FenceMask和KeepAugment等方法,還介紹了一些基於多樣本的增強方法,如SMOTE, mosaic和SamplePairing。

  值得一提的是,在這些論文中,幾乎每一篇都使用CNN可視化方法來證明其增強方法的有效性,在某種程度上來說也是為了增加工作量和字數。對CNN可視化方法感興趣的讀者可在CV技術指南中閱讀這系列總結文章。

《CNN可視化技術總結》

 

數據增強的作用

1. 避免過擬合。當數據集具有某種明顯的特征,例如數據集中圖片基本在同一個場景中拍攝,使用Cutout方法和風格遷移變化等相關方法可避免模型學到跟目標無關的信息。

2. 提升模型魯棒性,降低模型對圖像的敏感度。當訓練數據都屬於比較理想的狀態,碰到一些特殊情況,如遮擋,亮度,模糊等情況容易識別錯誤,對訓練數據加上噪聲,掩碼等方法可提升模型魯棒性。

3. 增加訓練數據,提高模型泛化能力。

4. 避免樣本不均衡。在工業缺陷檢測方面,醫療疾病識別方面,容易出現正負樣本極度不平衡的情況,通過對少樣本進行一些數據增強方法,降低樣本不均衡比例。

 

數據增強的分類

根據數據增強方式,可分為兩類:在線增強和離線增強。這兩者的區別在於離線增強是在訓練前對數據集進行處理,往往能得到多倍的數據集,在線增強是在訓練時對加載數據進行預處理,不改變訓練數據的數量。

離線增強一般用於小型數據集,在訓練數據不足時使用,在線增強一般用於大型數據集。

 

常用方法

比較常用的幾何變換方法主要有:翻轉,旋轉,裁剪,縮放,平移,抖動。值得注意的是,在某些具體的任務中,當使用這些方法時需要主要標簽數據的變化,如目標檢測中若使用翻轉,則需要將gt框進行相應的調整。

比較常用的像素變換方法有:加椒鹽噪聲,高斯噪聲,進行高斯模糊,調整HSV對比度,調節亮度,飽和度,直方圖均衡化,調整白平衡等。

這些常用方法都比較簡單,這里不多贅述。

 

Cutout(2017)

該方法來源於論文《Improved Regularization of Convolutional Neural Networks with Cutout》

在一些人體姿態估計,人臉識別,目標跟蹤,行人重識別等任務中常常會出現遮擋的情況,為了提高模型的魯棒性,提出了使用Cutout數據增強方法。該方法的依據是Cutout能夠讓CNN更好地利用圖像的全局信息,而不是依賴於一小部分特定的視覺特征。

做法:對一張圖像隨機選取一個小正方形區域,在這個區域的像素值設置為0或其它統一的值。注:存在50%的概率不對圖像使用Cutout。

效果圖如下:

圖片

官方代碼:

https://github.com/uoguelph-mlrg/Cutout

 

Random Erasing(2017)

該方法來源於論文《Random Erasing Data Augmentation》

這個方法有點類似於Cutout,這兩者同一年發表的。與Cutout不同的是,Random Erasing掩碼區域的長寬,以及區域中像素值的替代值都是隨機的,Cutout是固定使用正方形,替代值都使用同一個。

具體算法如下:

圖片

 

其效果圖如下:

圖片

 

官方代碼:

https://github.com/zhunzhong07/Random-Erasing

 

Mixup(2018)

該方法來源於論文《mixup: BEYOND EMPIRICAL RISK MINIMIZATION》

主要思想是將在數據集中隨機選擇兩張圖片按照一定比例融合,包括標簽值。在論文中給出了代碼,看一眼代碼即可很好的理解。

圖片

 

效果圖如下:

一張海上帆船與熊貓的融合。

圖片

 

官方代碼:

https://github.com/facebookresearch/mixup-cifar10

 

Hide-and-Seek(2018)

該方法來自論文《Hide-and-Seek: A Data Augmentation Technique for Weakly-Supervised Localization and Beyond》

其主要思想就是將圖片划分為S x S的網格,每個網格按一定的概率(0.5)進行掩碼。其中不可避免地會完全掩碼掉一個完整的小目標。當這種思想用於行為識別時,做法是將視頻幀分成多個小節,每一小節按一定的概率進行掩碼。

注:論文提到掩碼所使用的替代值會對識別有一定的影響,經過一些理論計算,采用整個圖像的像素值的均值的影響最小。

在CNN可視化技術總結中,我們提到CNN可視化具有提高方法可信度,增加工作量,增加字數的作用,這點在這篇論文中得到了很好的體現,論文使用了CAM和卷積核可視化等可視化方法來分析該算法的合理性。

《CNN可視化技術總結--卷積核可視化》

《CNN可視化技術總結--類可視化》

圖片

效果:

圖片

官方代碼:

https://github.com/kkanshul/Hide-and-Seek

 

 

CutMix(2019)

該方法來源於《CutMix: Regularization Strategy to Train Strong Classififiers with Localizable Features》

該方法結合了Cutout、Random erasing和Mixup三者的思想,做了一些中間調和的改變,同樣是選擇一個小區域,進行掩碼,但掩碼的方式卻是將另一張圖片的該區域覆蓋到這里。看圖更能理解這種方法。

圖片

圖片

 

在理解上面這個圖后,實現方式比較簡單,公式如下:

圖片

關於這個掩碼區域大小的設置,使用如下公式確定:

其中寬和高的大小始終滿足后面這個等式。

圖片

效果如下:

圖片

官方代碼:

https://github.com/clovaai/CutMix-PyTorch

 

GridMask(2020)

該方法來源於《GridMask Data Augmentation》

主要思想是對前幾種方法的改進,由於前幾種對於掩碼區域的選擇都是隨機的,因此容易出現對重要部位全掩蓋的情況。而GridMask則最多出現部分掩蓋,且幾乎一定會出現部分掩蓋。使用的方式是排列的正方形區域來進行掩碼。

 

圖片

具體實現是通過設定每個小正方形的邊長,兩個掩碼之間的距離d來確定掩碼,從而控制掩碼細粒度。

圖片

效果如下:

圖片

官方代碼:

https://github.com/akuxcw/GridMask

 

FenceMask(2020)

該方法來源於《FenceMask: A Data Augmentation Approach for Pre-extracted Image Features》

該方法是對前面GridMask的改進,認為使用正方形的掩碼會對小目標有很大的影響。因此提出了更好的形狀,FenceMask具有更好的細粒度。

圖片

效果對比如下:

圖片

 

KeepAugment(2020)

該方法來源於《KeepAugment: A Simple Information-Preserving Data Augmentation Approach》

主要思想是對前幾種方法中隨機選擇掩碼區域的改進,通過得出Saliency map,分析出最不重要的區域,選擇這個區域進行Cutout,或者分析出最重要區域進行CutMix。

圖片

saliency map區域的計算方式與類可視化的方法一致,通過計算回傳梯度,獲得每個像素值的梯度,從而確定每個像素值對類別的影響程度。而最重要區域和最不重要區域的划分是通過這個區域的所有梯度值之和大於或小於某個相應的閾值來確定。

具體如何計算saliency map請閱讀《CNN可視化技術總結--類可視化》。

算法如下:(其中Selcetive-cut是使用Cutout, Selective-paste是使用CutMix)

圖片

 

效果如下:

圖片

 

其它的數據增強方法

 

RandAugment,FastAugment,AutoAugment這幾種方式都是屬於構造一個數據增強方式的集合,采用強化學習的方式搜索適合指定數據集的數據增強方法。這些方法的最大特點是成本大,需要的時間很長很長,因此這里不多介紹。

注:前面提到的那些方法,基本都是接近零成本,更具有普遍使用的特性,這里幾種只適合貴族

此外還有通過GAN來實現風格遷移等數據增強方式。

 

多樣本數據增強方法

前面提到的方法除了CutMix和Mixup外,基本都屬於單樣本增強,此外還有多樣本增強方法,主要原理是利用多個樣本來產生新的樣本。

 

SMOTE--該方法來自遙遠的2002年。主要應用在小型數據集上來獲得新的樣本,實現方式是隨機選擇一個樣本,計算它與其它樣本的距離,得到K近鄰,從K近鄰中隨機選擇多個樣本構建出新樣本。之所以不提論文中的構建方式,是因為該方法並不是用於圖像,但讀者可自主設計出圖像的構建方式。

 

Mosaic--該方法來源於YOLO_v4,原理是使用四張圖片拼接成一張圖片。這樣做的好處是圖片的背景不再是單一的場景,而是在四種不同的場景下,且當使用BN時,相當於每一層同時在四張圖片上進行歸一化,可大大減少batch-size。

 

SamplePairing--該方法的原理是從訓練集中隨機選擇兩張圖片,經過幾何變化的增強方法后,逐像素取平均值的方式合成新的樣本。具體如下圖所示:

圖片

 

總結

  本文介紹了常用的數據增強方法,幾種特殊的增強方法,幾種多樣本增強方法。

  理論上來說,數據增強方法還應該包括對一些用於解決正負樣本不均衡的方法,如hard negative example mining,focal loss等。

此外在網絡中使用DropOut , DropConnect 和 DropBlock,也應該算是數據增強方法,因為它們與Cutout,Hide-and-Seek和GridMask等方法類似,同樣是選擇性丟棄一些數據。

  注:在CV技術指南中回復“數據增強”可獲取數據增強相關13篇論文。

 

 

參考論文

Improved Regularization of Convolutional Neural Networks with Cutout
Random Erasing Data Augmentation
mixup: BEYOND EMPIRICAL RISK MINIMIZATION
Hide-and-Seek: A Data Augmentation Technique for Weakly-Supervised Localization and Beyond
CutMix: Regularization Strategy to Train Strong Classififiers with Localizable Features
GridMask Data Augmentation
FenceMask: A Data Augmentation Approach for Pre-extracted Image Features
KeepAugment: A Simple Information-Preserving Data Augmentation Approach
SMOTE: Synthetic Minority Over-sampling Technique
YOLOv4: Optimal Speed and Accuracy of Object Detection
Data Augmentation by Pairing Samples for Images Classifification

 

其它技術總結內容

CNN結構演變總結(一)經典模型

CNN結構演變總結(二)輕量化模型

CNN結構演變總結(三)設計原則

CNN可視化技術總結(一)-特征圖可視化

CNN可視化技術總結(二)--卷積核可視化

CNN可視化技術總結(三)--類可視化

CNN可視化技術總結(四)--可視化工具與項目

池化技術總結

NMS總結

本文來源於公眾號《CV技術指南》的技術總結部分,更多相關技術總結請掃描文末二維碼關注公眾號。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM