计算机视觉数据增强方法汇总
點擊上方“3D視覺工坊”,選擇“星標”
干貨第一時間送達
前言:
在計算機視覺方向,數據增強的本質是人為地引入人視覺上的先驗知識,可以很好地提升模型的性能,目前基本成為模型的標配。最近幾年逐漸出了很多新的數據增強方法,在本文將對數據增強做一個總結。
本文介紹了數據增強的作用,數據增強的分類,數據增強的常用方法,一些特殊的方法,如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本文僅做學術分享,如有侵權,請聯系刪文。
下載1
在「3D視覺工坊」公眾號后臺回復:3D視覺,即可下載 3D視覺相關資料干貨,涉及相機標定、三維重建、立體視覺、SLAM、深度學習、點云后處理、多視圖幾何等方向。
下載2
在「3D視覺工坊」公眾號后臺回復:3D視覺github資源匯總,即可下載包括結構光、標定源碼、缺陷檢測源碼、深度估計與深度補全源碼、點云處理相關源碼、立體匹配源碼、單目、雙目3D檢測、基于點云的3D檢測、6D姿態估計源碼匯總等。
下載3
在「3D視覺工坊」公眾號后臺回復:相機標定,即可下載獨家相機標定學習課件與視頻網址;后臺回復:立體匹配,即可下載獨家立體匹配學習課件與視頻網址。
重磅!3DCVer-學術論文寫作投稿?交流群已成立
掃碼添加小助手微信,可申請加入3D視覺工坊-學術論文寫作與投稿?微信交流群,旨在交流頂會、頂刊、SCI、EI等寫作與投稿事宜。
同時也可申請加入我們的細分方向交流群,目前主要有3D視覺、CV&深度學習、SLAM、三維重建、點云后處理、自動駕駛、多傳感器融合、CV入門、三維測量、VR/AR、3D人臉識別、醫療影像、缺陷檢測、行人重識別、目標跟蹤、視覺產品落地、視覺競賽、車牌識別、硬件選型、學術交流、求職交流、ORB-SLAM系列源碼交流、深度估計等微信群。
一定要備注:研究方向+學校/公司+昵稱,例如:”3D視覺?+ 上海交大 + 靜靜“。請按照格式備注,可快速被通過且邀請進群。原創投稿也請聯系。
▲長按加微信群或投稿
▲長按關注公眾號
3D視覺從入門到精通知識星球:針對3D視覺領域的視頻課程(三維重建系列、三維點云系列、結構光系列、手眼標定、相機標定、orb-slam3等視頻課程)、知識點匯總、入門進階學習路線、最新paper分享、疑問解答五個方面進行深耕,更有各類大廠的算法工程人員進行技術指導。與此同時,星球將聯合知名企業發布3D視覺相關算法開發崗位以及項目對接信息,打造成集技術與就業為一體的鐵桿粉絲聚集區,近2000星球成員為創造更好的AI世界共同進步,知識星球入口:
學習3D視覺核心技術,掃描查看介紹,3天內無條件退款
?圈里有高質量教程資料、可答疑解惑、助你高效解決問題
覺得有用,麻煩給個贊和在看~??
總結
以上是生活随笔為你收集整理的计算机视觉数据增强方法汇总的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android6.0动态获取摄像头权限(
- 下一篇: 天地图服务http转https报错