沒有足夠多的數據怎麼辦?計算機視覺數據增強方法總結

2020-12-13 TechWeb

當沒有足夠多的數據量時該怎麼辦?學者們針對這一問題已經研發看各種巧妙的解決方案,以避在深度學習模型中數據少的問題。近來,在做活體檢測和打 Kaggle 比賽過程中查找了很多相關文獻和資料,現整理後與大家分享。一般有以下幾種方法解決的數據量少的問題:

Transfer learning: 其的工作原理是在大型數據集(如 ImageNet)上訓練網絡,然後將這些權重用作新的分類任務中的初始權重。通常,僅複製卷積層中的權重,而不複製包括完全連接的層的整個網絡。這是非常有效的,因為許多圖像數據集共享低級空間特徵,而大數據可更好地學習這些特徵。

Self/Semi Supervised learning: 傳統上,要麼選擇有監督的路線,然後只對帶有標籤的數據進行學習;要麼將選擇無監督的路徑並丟棄標籤,以進行 Self Supervised learning,而 Semi Supervised learning 這類方法就是訓練模型的時候,僅需要使用少量標籤和大量未標籤的數據。

Few/One-shot and Zero-shot learning: Few/One-Shot Learning 目的在於從每個類別中的少量樣本/一個樣本中學習有關對象的特徵,而 Zero-Shot Learning 的核心目標在於用訓練好的模型對訓練集中沒有出現過的類別進行相應的預測。近些年 Few/One-Shot Learning 和 Zero-Shot Learning 技術發展迅速,模型的性能得到了大幅度的提升。

Regularization technique: 如 dropout、batch normalization 等等正則化方法也能夠緩解數據量過少帶來的過擬合現象。

Data Augmentation: 數據增強是根據已有的數據生成新的數據。與上述技術相反,數據增強從問題的根源(訓練數據集)著手解決問題。使用數據增強方法擴展數據集不僅有助於利用有限的數據,還可以增加訓練集的多樣性,減少過度擬合併提高模型的泛化能力。

在本文中,我們將重點關注 Data Augmentation,因為計算機視覺是當前研究領域中最活躍的領域之一,所以,本文更聚焦於圖像增強,但是其中很多技術技術都可以應用於其他領域。我們把圖像的數據增強分為以下 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

基本圖像處理的擴增

常見的就是對圖像進行幾何變換,圖像翻轉,裁剪,旋轉和平移等等,還可以使用對比度,銳化,白平衡,色彩抖動,隨機色彩處理和許多其他技術來更改圖像的色彩空間。

此外,還可以使用遮擋類的方法,如 CutOut、RandomRrase、GridMask。Cutmix 就是將一部分區域 cut 掉但不填充 0 像素而是隨機填充訓練集中的其他數據的區域像素值,分類結果按一定的比例分配,CutMix 的操作使得模型能夠從一幅圖像上的局部視圖上識別出兩個目標,提高訓練的效率。

而 Mosaic 數據增強方法是 YOLOV4 論文中提出來的,主要思想是將四張圖片進行隨機裁剪,再拼接到一張圖上作為訓練數據,這樣做的好處是豐富了圖片的背景。

基礎的圖形擴增方法在很多深度學習框架中都有實現,例如:torchvision。還有一些更加全面豐富的數據擴增庫,如 albumentations 等等。

特徵空間擴增

論文標題: On Feature Normalization and Data Augmentation(MoEx)

論文連結: https://arxiv.org/abs/2002.11102

代碼連結: https://github.com/Boyiliee/MoEx

在上面的示例中,我們在圖像空間上進行變換,此外,還可以在特徵空間中變換。藉助神經網絡,我們可以非常有效地以低維或高維的形式表示圖像,這樣,中間的潛在張量包含有關數據集的所有信息,並且可以提取出來做各種事情,包括數據增強。MoEx 這篇文章作者在特徵空間進行增強的嘗試。具體做法如下圖所示:

1. 對 hA 做 normalization 的到 hˆA,然後計算 hB 的 µB,σB

2. 接著對 hˆA 反歸一化如下:

3. 使用新的損失函數計算 loss:

MoEx 的實驗包括:ImageNet、Speech Commands、IWSLT 2014、ModelNet40 等。可以說涵蓋了圖像、NLP、語音三大領域,可見其優點很明顯,由於是在特徵空間做數據增強,所以不受輸入數據類型的限制,對於圖像、音頻以及文本等數據具有通用性。

GAN-based Data Augmentation

生成建模是當前最火的技術之一,生成模型學習數據的分布,而不是數據之間的邊界,因此,可以生成全新的圖像。

GAN 由兩個網絡組成:生成器和鑑別器。生成器的工作是生成僅具有噪聲作為輸入的偽造數據。鑑別器接收真實圖像和偽圖像(由發生器產生)作為輸入,並學會識別圖像是偽圖像還是真實圖像。

隨著兩個網絡相互競爭,在對抗訓練的過程中,生成器在生成圖像方面變得越來越好,因為其最終目標是欺騙鑑別器,而鑑別器在區分偽造品和真實圖像方面變得越來越好,因為它的目標是不被欺騙,最終生成器生成了令人難以置信的真實偽數據。

需要說明的是,GAN 生成的數據是要因地制宜。據說在這篇文章右下角 double click 的同學會有奇效(哈哈)。

論文標題: Emotion classification with data augmentation using generative adversarial networks.

論文連結: https://arxiv.org/abs/1711.00648

本文在情緒識別驗證了 GAN 做數據擴增的有效性。情緒識別數據集 FER2013 包含了7種不同的情緒:憤怒,厭惡,恐懼,快樂,悲傷,驚奇和中立。,這些類是不平衡的。而本文使用 CycleGAN 將其他幾類的圖像轉換為少數類的樣本,使得模型準確性提高了 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,那就用原始數據訓練一個 GAN,然後生成圖片,沒有標籤就用 ReID 網絡生成 pseudo label。這樣一來,就從監督學習轉化為了半監督學習。

NAS-based Data Augmentation

數據增強方法在各個領域都得到了廣泛應用,不過即使在一些特定的數據集已經找到了適合的數據增強方法,但這些方法通常也不能有效地轉移到其他數據集上去。

例如,由於不同數據集中存在不同的對稱性要求,在 CIFAR-10 數據集上訓練階段水平翻轉圖像是的有效數據增強方法,但對 MNIST 卻不適用。因而, 讓網絡自主的尋找數據增強方法逐漸成為一種無論是學術或者工程上都不可或缺的需求。

Google DeepMind 率先提出了利用 NAS 的方法 AutoAugment,在數據增強的策略搜索空間中利用數據集上評定特定策略的質量,自動搜索出合適的數據增強的策略。相關的文獻還有: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 提出的自動選擇最優數據增強方案的研究,它的基本思路是使用強化學習從數據本身尋找最佳圖像變換策略,對於不同的任務學習不同的增強方法。流程如下:

AutoAugment 的控制器決定當前哪個增強策略看起來最好,並通過在特定數據集的一個子集上運行子實驗來測試該策略的泛化能力。在子實驗完成後,採用策略梯度法 (Proximal policy Optimization algorithm, PPO),以驗證集的準確度作為更新信號對控制器進行更新。

總的來說,控制器擁有 30 個 softmax 來分別預測 5 個子策略的決策,每個子策略又具有 2 個操作,而每個操作又需要操作類型,幅度和概率。

而數據增強操作的搜索空間一共有 16 個:ShearX/Y,TranslateX/Y,Rotate,AutoContrast,Invert,Equalize,Solarize,Posterize,Contrast,Color,Brightness,Sharpness,Cutout,Sample Pairing。

在實驗中發現 AutoAugment 學習到的已有數據增強的組合策略,對於門牌數字識別等任務,研究表明剪切和平移等幾何變換能夠獲得最佳效果。而對於 ImageNet 中的圖像分類任務,AutoAugment 學習到了不使用剪切,也不完全反轉顏色,因為這些變換會導致圖像失真。AutoAugment 學習到的是側重於微調顏色和色相分布。

AutoAugment 的方法在很多數據集上達到 state-of-the-art 的水平。在 CIFAR-10 上,實現了僅 1.48% 的錯誤率,比之前 state-of-the-art 的方法又提升了 0.65%;

在 SVHN 上,將 state-of-the-art 的錯誤率從 1.30% 提高到 1.02%;在一些 reduced 數據集上,在不使用任何未標記數據的情況下實現了與半監督方法相當的性能;在 ImageNet 上,實現了前所未有的 83.54% 的精度。

Other

在上面我們介紹了一些對有監督的數據進行數據增強的方法,但是對有監督的數據進行數據增強大多被認為是「蛋糕上的櫻桃」,因為雖然它提供了穩定但是有限的性能提升,下面,將介紹一種半監督技術中的數據增強方法。

論文標題:Unsupervised Data Augmentation for Consistency Training(UDA)

論文連結:https://arxiv.org/abs/1904.12848

代碼連結:https://github.com/google-research/uda

UDA 訓練過程如下圖所示:

1. 最小化未標記數據和增強未標記數據上預測分布之間的 KL 差異:

其中,x 是原始未標記數據的輸入,x^ 是對未標籤數據進行增強(如:圖像上進行裁剪、旋轉,文本進行反翻譯)後的數據。

2. 為了同時使用有標記的數據和未標記的數據,添加了標記數據的 Supervised Cross-entropy Loss 和(1)中定義的一致性/平滑性目標 Unsupervised Consistency Loss,權重因子 λ 為我們的訓練目標,最終目標的一致性損失函數定義如下:

此外,UDA 為了解決未標記的數據和標記數據不平衡導致數據過擬合的問題,提出了新的訓練技巧 Training Signal Annealing 簡稱 TSA,TSA 的思路是隨著模型被訓練到越來越多的未標記數據上,逐漸減少標記數據的訓練信號,而不會過度擬合它們。實驗結果方面,UDA 在很大程度上優於現有的半監督學習方法。

總結

眾所周知,深度學習的模型訓練依賴大量的數據。如果沒有訓練數據,那麼即使是優秀的算法也基本上很難發揮作用。本文總結了幾種方法常見的解決的數據量少的問題的方法,並對 Data augment 進行了詳細的總結,希望對您有所幫助。

 

相關焦點

  • 計算機視覺:你必須了解的圖像數據底層技術
    計算機視覺的主要目的是讓計算機能像人類一樣甚至比人類更好地看見和識別世界。計算機視覺通常使用C++、Python和MATLAB等程式語言,是增強現實(AR)的一項重要技術。
  • 數據增強實現自動化
    ,受AutoML的啟發,他們嘗試將數據增強的過程也實現自動化,使用強化學習從數據本身中找出最佳圖像轉換策略,在不依賴於生成新的和不斷擴展的數據集的情況下,提高了計算機視覺模型的性能。 計算機視覺深度學習的成功,可部分歸因於擁有大量帶標記的訓練數據——數據的質、量和多樣性提高,模型的性能也通常會增強。但是,要收集足夠多的高質量數據訓練模型來實現良好的性能,通常非常困難。
  • NLP 數據增強方法 EDA
    當數據集比較少的時候,往往會導致模型陷入過擬合。數據增強是一種比較有效的擴充數據集的方法,在計算機視覺領域有比較重要的作用。但是在 NLP 領域數據增強的方法相對少一些,本文介紹一種比較傳統的 NLP 數據增強方法 EDA。
  • 支付寶奪冠CVPR細粒度視覺分類挑戰賽:數據增強+知識蒸餾
    CVPR(國際計算機視覺與模式識別會議)是由 IEEE 主辦的一年一度的世界頂級計算機視覺學術性會議。大會包含多個 workshop,以及對應的許多計算機視覺算法競賽。其中 FGVC(細粒度視覺分類)workshop 也舉辦了多項競賽,如 Plant Pathology Challenge。
  • 深度學習領域的數據增強
    即使引入噪聲或裁剪圖像的一部分,模型仍可以對圖像進行分類,數據增強有一系列簡單有效的方法可供選擇,有一些機器學習庫來進行計算視覺領域的數據增強,比如:imgaug (https://github.com/aleju/imgaug)它封裝了很多數據增強算法,給開發者提供了方便。
  • 計算機視覺的三部曲 - 人人都是產品經理
    本文主要參考了商湯科技CEO徐立老師的分享,將計算機視覺分為三部分:成像、早期視覺和識別理解。本文也是圍繞這三部分進行討論。一、成像(Image)成像就是計算機「看」的能力,是計算機視覺的輸入,相當於人的眼睛。影響計算機成像(看),主要有幾個因素:光、物體不全、模糊。
  • 【ImageNet最後的冠軍】顏水成:像素級標註數據集將引領計算機視覺...
    在計算機視覺領域深耕16年的「老兵」顏水成與團隊拿下最后冠軍,巧合的是,5年前的PASCAL VOC收官之戰,冠軍也是他。有「水哥」之稱的顏水成可謂計算機視覺競賽領域名副其實的常勝將軍。在本次接受新智元的專訪中,他分享了自己多年來的戰鬥經歷和實戰經歷。現在已擔任副教授的他,對學生也有許多寄語。顏水成認為,計算機視覺的未來屬於多標籤、像素級、語義級分析。
  • 機器學習和計算機視覺的前20個圖像數據集
    作者 | Meiryum Ali 翻譯 | 火火醬,責編 | 晉兆雨出品 | AI科技大本營頭圖 | 付費下載於視覺中國計算機視覺使計算機能夠理解圖像和視頻的內容。計算機視覺的目標是使人類視覺系統可以實現任務自動化。計算機視覺任務包括圖像採集、圖像處理和圖像分析。圖像數據可以採用不同的形式,例如視頻序列,從多個角度的不同的攝像機查看圖像或來自醫療掃描儀的多維數據。
  • 用於半監督語義分割的基於掩碼的數據增強
    訓練一個CNN來進行語義分割需要大量的標記數據,而這些標記數據的生產既昂貴又勞動密集型。半監督學習算法通過利用未標記的數據來解決這個問題,從而減少了訓練所需的標記數據量。特別是,CutMix和ClassMix等數據增強技術從現有的標記數據生成額外的訓練數據。在本文中,作者提出了一種新的數據增強方法,稱為ComplexMix,它結合了CutMix和ClassMix的特性,提高了性能。
  • 計算機視覺基於圖像的三維重建入門介紹
    入門書籍有《視覺SLAM十四講從理論到實踐》《計算機視覺-算法與應用》《計算機視覺中的多視幾何》入門視頻教程有浙江大學譚平教授的計算機視覺課程https://www.bilibili.com/video/BV124411W775高翔博士的視覺SLAM十四講從理論到實踐https
  • 谷歌新音頻數據增強方法,直接應用於頻譜圖
    智東西(公眾號:zhidxcom)編 | 王小溪導語:谷歌AI的研究人員正在把計算機視覺應用於頻譜圖,開發出了新的數據增強技術SpecAugment,能在不需要引入額外數據的情況下,使語音識別系統性能達到最優。
  • 碼隆科技CurriculumNet:提高噪聲數據價值方法
    在最近一期周報中,碼隆科技自研的CurriculumNet算法在計算機視覺技術創新領域的應用獲得了Import AI的關注。作為數萬名業內專家的重要讀物,Import AI一直專注於人工智慧技術創新領域。其作者Jack Clark為OpenAI現任戰略及傳播總監,曾任Bloomberg唯一一位專注於神經網絡學習領域的記者。
  • 光學預處理與計算機視覺結合,UCR學者用漩渦實現混合計算機視覺系統
    使用深度學習卷積神經網絡的計算機徹底改變了計算機視覺。但卷積神經網絡(convolutional neural network,CNN)通過從預訓練數據中學習來對圖像進行分類,然而這些數據通常會記住或發展某些偏見。此外,數據還易於受到對抗性攻擊(以極細微且幾乎察覺不到的圖像扭曲出現)的幹擾,從而導致做出錯誤的決策。這些缺點限制了卷積神經網絡的用途。
  • 【視覺】醫學3D計算機視覺任務和挑戰簡述
    在主流的醫學3D數據的數據模態和視覺任務上,如計算機斷層成像(computed tomography,CT)、磁共振成像(magnetic resonance imaging,MRI)上的分類、分割和檢測等任務,深度學習已經成為一種最主要的研究方式。深度學習的成功部分取決於大量來自於工業界和學術界貢獻的醫學數據集,這使得很多基於深度學習的數據驅動方法變成了可能。
  • 增強PPT數據對比視覺效果的幾種方法——布衣公子
    酷在視覺上的對比效果更鮮明,但它們是如何實現的呢?公子結合以下案例拋磚引玉。具體的設置細節前面各圖表的講解已重複多次,此處不再贅述了,重點講述的是設計思路,大家自行練習操作!A、非字型對比圖表設計這是一次提供訂製服務時的客戶要求,經過自己琢磨出來的方法,其重點在於:①系列重疊設為100%;②系列一或系列二的數值設為負數;③修改負數的文字顯示(負數的紅色修改自定義為黑色),設計過程如圖2-95▲圖2-95
  • 還在糾結深度學習算法 計算機視覺CV的關鍵在於數據採集和標註!
    過去五年,計算機視覺CV領域一度成為國內創投圈的「寵兒」。僅2018年,該領域融資額就高達230億。然而,這樣的盛景並沒有持續多久。去年2月,計算機視覺奠基人Alan L. Yuille曾撰文表達他對當下計算機視覺CV技術發展的擔憂。他認為,計算機視覺的發展面臨瓶頸,深度學習在其中起到的作用有限,需要找到新的突破口。
  • NLP 數據增強方法回譯
    數據增強是擴充數據集的有效方法,本文介紹一種簡單可行的 NLP 數據集擴充方法——回譯,回譯在文本分類中有比較好的效果,也被成功地用在 Kaggle 惡意評論分類比賽中。1.NLP 數據增強方法 EDA介紹了一種 NLP 數據增強方法 EDA,本文介紹另一種簡單的數據增強方法
  • 騰訊優圖賈佳亞在「騰訊·雲+未來」AI大數據專場分享:計算機視覺...
    雷鋒網了解到,賈佳亞在加入騰訊後鮮少露面,本次在「騰訊雲+未來」AI大數據專場做主題演講,也是為數不多能一窺騰訊優圖實驗室及研究成果的公開場合。以下是賈佳亞在今日「騰訊雲+未來」AI大數據專場所做的主題演講《計算機視覺前沿與應用》,雷鋒網AI科技評論對速記做了不改動原意的編輯和整理。
  • 數據太少怎麼辦?試試自監督學習
    那麼試想一下,你所在的領域中,要是沒有預訓練模型,該怎麼辦?例如在醫學圖像領域,就很少有預先訓練過的模型。而最近有一篇比較有意思的論文,就對這方面問題做了研究。那有沒有不需要大量數據,還能取得較好效果的技術呢?自監督學習就是一個秘密武器。它可以被看作是機器學習的一種「理想狀態」,模型直接從無標籤數據中自行學習,無需標註數據。舉個例子,ULMFiT(一種NLP訓練方法)的關鍵就是自監督學習,極大的提高了NLP領域的技術水平。
  • 科研進階 | 加州大學伯克利分校 | 人工智慧、計算機科學:數據科學與AI深度學習:應用計算機視覺(2021.4.24開課)
    千禧年後,大數據的蓬勃發展和算力的指數級增長賦予了深度學習新的生機。深度學習如破竹之勢將機器輔助功能變為可能,讓人工智慧在各個應用領域實現落地。其中,人工智慧一個重要的研究方面就是計算機視覺。「計算機視覺是一門研究如何使機器『看』的科學,更進一步的說,就是指用攝影機和計算機代替人眼對目標進行識別、跟蹤和測量,其本質是模擬人類的感知與觀察的一個過程。」