沒有足夠多的數(shù)據(jù)怎么辦?計算機視覺數(shù)據(jù)增強方法總結(jié)
當沒有足夠多的數(shù)據(jù)量時該怎么辦?學者們針對這一問題已經(jīng)研發(fā)看各種巧妙的解決方案,以避在深度學習模型中數(shù)據(jù)少的問題。近來,在做活體檢測和打 Kaggle 比賽過程中查找了很多相關文獻和資料,現(xiàn)整理后與大家分享。一般有以下幾種方法解決的數(shù)據(jù)量少的問題:
Transfer learning: 其的工作原理是在大型數(shù)據(jù)集(如 ImageNet)上訓練網(wǎng)絡,然后將這些權重用作新的分類任務中的初始權重。通常,僅復制卷積層中的權重,而不復制包括完全連接的層的整個網(wǎng)絡。這是非常有效的,因為許多圖像數(shù)據(jù)集共享低級空間特征,而大數(shù)據(jù)可更好地學習這些特征。
Self/Semi Supervised learning: 傳統(tǒng)上,要么選擇有監(jiān)督的路線,然后只對帶有標簽的數(shù)據(jù)進行學習;要么將選擇無監(jiān)督的路徑并丟棄標簽,以進行 Self Supervised learning,而 Semi Supervised learning 這類方法就是訓練模型的時候,僅需要使用少量標簽和大量未標簽的數(shù)據(jù)。
Few/One-shot and Zero-shot learning: Few/One-Shot Learning 目的在于從每個類別中的少量樣本/一個樣本中學習有關對象的特征,而 Zero-Shot Learning 的核心目標在于用訓練好的模型對訓練集中沒有出現(xiàn)過的類別進行相應的預測。近些年 Few/One-Shot Learning 和 Zero-Shot Learning 技術發(fā)展迅速,模型的性能得到了大幅度的提升。
Regularization technique: 如 dropout、batch normalization 等等正則化方法也能夠緩解數(shù)據(jù)量過少帶來的過擬合現(xiàn)象。
Data Augmentation: 數(shù)據(jù)增強是根據(jù)已有的數(shù)據(jù)生成新的數(shù)據(jù)。與上述技術相反,數(shù)據(jù)增強從問題的根源(訓練數(shù)據(jù)集)著手解決問題。使用數(shù)據(jù)增強方法擴展數(shù)據(jù)集不僅有助于利用有限的數(shù)據(jù),還可以增加訓練集的多樣性,減少過度擬合并提高模型的泛化能力。
在本文中,我們將重點關注 Data Augmentation,因為計算機視覺是當前研究領域中最活躍的領域之一,所以,本文更聚焦于圖像增強,但是其中很多技術技術都可以應用于其他領域。我們把圖像的數(shù)據(jù)增強分為以下 4 類:
-
Basic Image
-
Geometric Transformations
-
Color Space Transformations
-
RandomRrase/GridMask
-
Mixup/Cutmix
-
Mosaic
-
-
Feature space augmentation
-
MoEx
-
-
GAN-based Data Augmentation
-
NAS
-
AutoAugment
-
Fast AutoAugment
-
DADA
-
-
Other
-
UDA
-
基本圖像處理的擴增
常見的就是對圖像進行幾何變換,圖像翻轉(zhuǎn),裁剪,旋轉(zhuǎn)和平移等等,還可以使用對比度,銳化,白平衡,色彩抖動,隨機色彩處理和許多其他技術來更改圖像的色彩空間。
此外,還可以使用遮擋類的方法,如 CutOut、RandomRrase、GridMask。Cutmix 就是將一部分區(qū)域 cut 掉但不填充 0 像素而是隨機填充訓練集中的其他數(shù)據(jù)的區(qū)域像素值,分類結(jié)果按一定的比例分配,CutMix 的操作使得模型能夠從一幅圖像上的局部視圖上識別出兩個目標,提高訓練的效率。
而 Mosaic 數(shù)據(jù)增強方法是 YOLOV4 論文中提出來的,主要思想是將四張圖片進行隨機裁剪,再拼接到一張圖上作為訓練數(shù)據(jù),這樣做的好處是豐富了圖片的背景。
基礎的圖形擴增方法在很多深度學習框架中都有實現(xiàn),例如:torchvision。還有一些更加全面豐富的數(shù)據(jù)擴增庫,如 albumentations 等等。
特征空間擴增
論文標題: On Feature Normalization and Data Augmentation(MoEx)
論文鏈接: https://arxiv.org/abs/2002.11102
代碼鏈接: https://github.com/Boyiliee/MoEx
在上面的示例中,我們在圖像空間上進行變換,此外,還可以在特征空間中變換。借助神經(jīng)網(wǎng)絡,我們可以非常有效地以低維或高維的形式表示圖像,這樣,中間的潛在張量包含有關數(shù)據(jù)集的所有信息,并且可以提取出來做各種事情,包括數(shù)據(jù)增強。MoEx 這篇文章作者在特征空間進行增強的嘗試。具體做法如下圖所示:
1. 對 hA 做 normalization 的到 hˆA,然后計算 hB 的 µB,σB
2. 接著對 hˆA 反歸一化如下:
3. 使用新的損失函數(shù)計算 loss:
MoEx 的實驗包括:ImageNet、Speech Commands、IWSLT 2014、ModelNet40 等??梢哉f涵蓋了圖像、NLP、語音三大領域,可見其優(yōu)點很明顯,由于是在特征空間做數(shù)據(jù)增強,所以不受輸入數(shù)據(jù)類型的限制,對于圖像、音頻以及文本等數(shù)據(jù)具有通用性。
GAN-based Data Augmentation
生成建模是當前最火的技術之一,生成模型學習數(shù)據(jù)的分布,而不是數(shù)據(jù)之間的邊界,因此,可以生成全新的圖像。
GAN 由兩個網(wǎng)絡組成:生成器和鑒別器。生成器的工作是生成僅具有噪聲作為輸入的偽造數(shù)據(jù)。鑒別器接收真實圖像和偽圖像(由發(fā)生器產(chǎn)生)作為輸入,并學會識別圖像是偽圖像還是真實圖像。
隨著兩個網(wǎng)絡相互競爭,在對抗訓練的過程中,生成器在生成圖像方面變得越來越好,因為其最終目標是欺騙鑒別器,而鑒別器在區(qū)分偽造品和真實圖像方面變得越來越好,因為它的目標是不被欺騙,最終生成器生成了令人難以置信的真實偽數(shù)據(jù)。
需要說明的是,GAN 生成的數(shù)據(jù)是要因地制宜。據(jù)說在這篇文章右下角 double click 的同學會有奇效(哈哈)。
論文標題: Emotion classification with data augmentation using generative adversarial networks.
論文鏈接: https://arxiv.org/abs/1711.00648
本文在情緒識別驗證了 GAN 做數(shù)據(jù)擴增的有效性。情緒識別數(shù)據(jù)集 FER2013 包含了7種不同的情緒:憤怒,厭惡,恐懼,快樂,悲傷,驚奇和中立。,這些類是不平衡的。而本文使用 CycleGAN 將其他幾類的圖像轉(zhuǎn)換為少數(shù)類的樣本,使得模型準確性提高了 5-10%。
論文標題:Unlabeled Samples Generated by GAN Improve the Person Re-identification Baseline in vitro
論文鏈接:https://arxiv.org/abs/1701.07717
代碼鏈接:https://github.com/layumi/Person-reID_GAN
這篇文章想法在當時情況下還是比較好的。沒有 ReID 的 GAN,那就用原始數(shù)據(jù)訓練一個 GAN,然后生成圖片,沒有標簽就用 ReID 網(wǎng)絡生成 pseudo label。這樣一來,就從監(jiān)督學習轉(zhuǎn)化為了半監(jiān)督學習。
NAS-based Data Augmentation
數(shù)據(jù)增強方法在各個領域都得到了廣泛應用,不過即使在一些特定的數(shù)據(jù)集已經(jīng)找到了適合的數(shù)據(jù)增強方法,但這些方法通常也不能有效地轉(zhuǎn)移到其他數(shù)據(jù)集上去。
例如,由于不同數(shù)據(jù)集中存在不同的對稱性要求,在 CIFAR-10 數(shù)據(jù)集上訓練階段水平翻轉(zhuǎn)圖像是的有效數(shù)據(jù)增強方法,但對 MNIST 卻不適用。因而, 讓網(wǎng)絡自主的尋找數(shù)據(jù)增強方法逐漸成為一種無論是學術或者工程上都不可或缺的需求。
Google DeepMind 率先提出了利用 NAS 的方法 AutoAugment,在數(shù)據(jù)增強的策略搜索空間中利用數(shù)據(jù)集上評定特定策略的質(zhì)量,自動搜索出合適的數(shù)據(jù)增強的策略。相關的文獻還有:Fast AutoAugment 以 及 DADA 等等。
論文標題:
AutoAugment: Searching for best Augmentation policies Directly on the Dataset of Interest
論文鏈接:
https://arxiv.org/abs/1805.09501
代碼鏈接:
https://github.com/tensorflow/models/tree/master/research/autoaugment
AutoAugment 是 Google 提出的自動選擇最優(yōu)數(shù)據(jù)增強方案的研究,它的基本思路是使用強化學習從數(shù)據(jù)本身尋找最佳圖像變換策略,對于不同的任務學習不同的增強方法。流程如下:
AutoAugment 的控制器決定當前哪個增強策略看起來最好,并通過在特定數(shù)據(jù)集的一個子集上運行子實驗來測試該策略的泛化能力。在子實驗完成后,采用策略梯度法 (Proximal policy Optimization algorithm, PPO),以驗證集的準確度作為更新信號對控制器進行更新。
總的來說,控制器擁有 30 個 softmax 來分別預測 5 個子策略的決策,每個子策略又具有 2 個操作,而每個操作又需要操作類型,幅度和概率。
而數(shù)據(jù)增強操作的搜索空間一共有 16 個:ShearX/Y,TranslateX/Y,Rotate,AutoContrast,Invert,Equalize,Solarize,Posterize,Contrast,Color,Brightness,Sharpness,Cutout,Sample Pairing。
在實驗中發(fā)現(xiàn) AutoAugment 學習到的已有數(shù)據(jù)增強的組合策略,對于門牌數(shù)字識別等任務,研究表明剪切和平移等幾何變換能夠獲得最佳效果。而對于 ImageNet 中的圖像分類任務,AutoAugment 學習到了不使用剪切,也不完全反轉(zhuǎn)顏色,因為這些變換會導致圖像失真。AutoAugment 學習到的是側(cè)重于微調(diào)顏色和色相分布。
AutoAugment 的方法在很多數(shù)據(jù)集上達到 state-of-the-art 的水平。在 CIFAR-10 上,實現(xiàn)了僅 1.48% 的錯誤率,比之前 state-of-the-art 的方法又提升了 0.65%;
在 SVHN 上,將 state-of-the-art 的錯誤率從 1.30% 提高到 1.02%;在一些 reduced 數(shù)據(jù)集上,在不使用任何未標記數(shù)據(jù)的情況下實現(xiàn)了與半監(jiān)督方法相當?shù)男阅?;?ImageNet 上,實現(xiàn)了前所未有的 83.54% 的精度。
Other
在上面我們介紹了一些對有監(jiān)督的數(shù)據(jù)進行數(shù)據(jù)增強的方法,但是對有監(jiān)督的數(shù)據(jù)進行數(shù)據(jù)增強大多被認為是“蛋糕上的櫻桃”,因為雖然它提供了穩(wěn)定但是有限的性能提升,下面,將介紹一種半監(jiān)督技術中的數(shù)據(jù)增強方法。
論文標題:Unsupervised Data Augmentation for Consistency Training(UDA)
論文鏈接:https://arxiv.org/abs/1904.12848
代碼鏈接:https://github.com/google-research/uda
UDA 訓練過程如下圖所示:
1. 最小化未標記數(shù)據(jù)和增強未標記數(shù)據(jù)上預測分布之間的 KL 差異:
其中,x 是原始未標記數(shù)據(jù)的輸入,x^ 是對未標簽數(shù)據(jù)進行增強(如:圖像上進行裁剪、旋轉(zhuǎn),文本進行反翻譯)后的數(shù)據(jù)。
2. 為了同時使用有標記的數(shù)據(jù)和未標記的數(shù)據(jù),添加了標記數(shù)據(jù)的 Supervised Cross-entropy Loss 和(1)中定義的一致性/平滑性目標 Unsupervised Consistency Loss,權重因子 λ 為我們的訓練目標,最終目標的一致性損失函數(shù)定義如下:
此外,UDA 為了解決未標記的數(shù)據(jù)和標記數(shù)據(jù)不平衡導致數(shù)據(jù)過擬合的問題,提出了新的訓練技巧 Training Signal Annealing 簡稱 TSA,TSA 的思路是隨著模型被訓練到越來越多的未標記數(shù)據(jù)上,逐漸減少標記數(shù)據(jù)的訓練信號,而不會過度擬合它們。實驗結(jié)果方面,UDA 在很大程度上優(yōu)于現(xiàn)有的半監(jiān)督學習方法。
總結(jié)
眾所周知,深度學習的模型訓練依賴大量的數(shù)據(jù)。如果沒有訓練數(shù)據(jù),那么即使是優(yōu)秀的算法也基本上很難發(fā)揮作用。本文總結(jié)了幾種方法常見的解決的數(shù)據(jù)量少的問題的方法,并對 Data augment 進行了詳細的總結(jié),希望對您有所幫助。