新名詞:數據增廣(增強) Data Augmentation - TR_#AutoAugment

目錄

數據增強是什麼

為什麼數據增強

數組增強分類

有監督數據增強

無監督數據增強


數據增強是什麼

數據增強又稱數據擴增,是一種通過應用合理且隨機的變換(例如圖像位移、旋轉)來增加訓練集多樣性的技術。讓有限的數據產生等價於更多數據的價值,並避免不相關性特徵。

例如針對車型識別模型,合理隨機變換同車型/不同車型圖片的主體大小、位置、視角、色彩等不相關特徵,避免特徵提取的不相關傾向性,但不接受垂直飛天側身超高曝汽車圖片。

為什麼數據增強

一方面大部分實際項目難以獲得充足的數據,需要充分利用已有數據進行數據增強。另一方面,卷積神經網絡需要提取合理而有效的特徵,而非集中不相關特徵。

例如針對鳥類識別模型,原數據集中A品種和B品種鳥類佔比各50%,羽毛顏色為兩類品種的不相關特徵,但受限數據獲取難度,原數據集中A品種鳥均體現藍色,B品種鳥均體現紅色,使用顏色變換隨機擴充各品種顏色比例至50%左右,可以有效避免提取顏色為顯著特徵。

數組增強分類

數據增強可以分為,有監督數據增強和無監督數據增強。

有監督數據增強

有監督數據增強還可以分為單樣本數據增強和多樣本數據增強。

  • 單樣本數據增強:增強一個樣本時,完全圍繞樣本本身進行操作,如幾何變換、顏色變換等。
  • 多樣本數據增強:利用多個樣本來產生新的樣本,如SMOTE合成少數過採樣,SamplePairing樣本配對,mixup混合線性插值等

簡單集合變換進行增強示例:

train_transformer = transforms.Compose([
    # 隨機水平翻轉,翻轉概率為0.5
    transforms.RandomHorizontalFlip(p=0.5),  
    # 隨機垂直翻轉,翻轉概率為0.5
    transforms.RandomVerticalFlip(p=0.5),  
    transforms.ToTensor(),
    transforms.Normalize([meanR, meanG, meanB], [stdR, stdG, stdB])])

無監督數據增強

無監督數據增強還可以分為隨機生成擴增和學習策略增強。

  • 隨機生成擴增:學習數據分佈,隨機生成與分佈一致的圖片,例如GAN生成對抗網絡。
  • 學習策略增強:通過模型學習出適合任務的數據增強策略,例如AutoAugment自動增強。

GAN(generative adversarial networks)包含兩個網絡,生成網絡和對抗網絡:

  1. 生成網絡接收隨機噪聲z,通過噪聲生成圖片,記做G(z) 。
  2. 對抗網絡判別圖片是否由G生成的,訓練好的生成網絡能生成以假亂真的圖片。

AutoAugment是Google提出的自動選擇最優數據增強方案的研究,使用增強學習從數據本身尋找最佳圖像變換策略,針對不同的任務學習出不同的增強方法,核心思想:

  1. 準備16個常用的數據增強操作。
  2. 選擇n個操作,隨機產生使用概率和幅度,稱為一個sub-policy,共產生5個sub-policy。
  3. 訓練過程每一個batch的圖片隨機採用5個sub-policy操作中的一種。