目錄
數據增強是什么
為什么數據增強
數組增強分類
有監督數據增強
無監督數據增強
數據增強是什么
數據增強又稱數據擴增,是一種通過應用合理且隨機的變換(例如圖像位移、旋轉)來增加訓練集多樣性的技術。讓有限的數據產生等價于更多數據的價值,并避免不相關性特征。
例如針對車型識別模型,合理隨機變換同車型/不同車型圖片的主體大小、位置、視角、色彩等不相關特征,避免特征提取的不相關傾向性,但不接受垂直飛天側身超高曝汽車圖片。
為什么數據增強
一方面大部分實際項目難以獲得充足的數據,需要充分利用已有數據進行數據增強。另一方面,卷積神經網絡需要提取合理而有效的特征,而非集中不相關特征。
例如針對鳥類識別模型,原數據集中A品種和B品種鳥類占比各50%,羽毛顏色為兩類品種的不相關特征,但受限數據獲取難度,原數據集中A品種鳥均體現藍色,B品種鳥均體現紅色,使用顏色變換隨機擴充各品種顏色比例至50%左右,可以有效避免提取顏色為顯著特征。
數組增強分類
數據增強可以分為,有監督數據增強和無監督數據增強。
有監督數據增強
有監督數據增強還可以分為單樣本數據增強和多樣本數據增強。
- 單樣本數據增強:增強一個樣本時,完全圍繞樣本本身進行操作,如幾何變換、顏色變換等。
- 多樣本數據增強:利用多個樣本來產生新的樣本,如SMOTE合成少數過采樣,SamplePairing樣本配對,mixup混合線性插值等
簡單集合變換進行增強示例:
train_transformer = transforms.Compose([# 隨機水平翻轉,翻轉概率為0.5transforms.RandomHorizontalFlip(p=0.5), # 隨機垂直翻轉,翻轉概率為0.5transforms.RandomVerticalFlip(p=0.5), transforms.ToTensor(),transforms.Normalize([meanR, meanG, meanB], [stdR, stdG, stdB])])
無監督數據增強
無監督數據增強還可以分為隨機生成擴增和學習策略增強。
- 隨機生成擴增:學習數據分布,隨機生成與分布一致的圖片,例如GAN生成對抗網絡。
- 學習策略增強:通過模型學習出適合任務的數據增強策略,例如AutoAugment自動增強。
GAN(generative adversarial networks)包含兩個網絡,生成網絡和對抗網絡:
- 生成網絡接收隨機噪聲z,通過噪聲生成圖片,記做G(z) 。
- 對抗網絡判別圖片是否由G生成的,訓練好的生成網絡能生成以假亂真的圖片。
AutoAugment是Google提出的自動選擇最優數據增強方案的研究,使用增強學習從數據本身尋找最佳圖像變換策略,針對不同的任務學習出不同的增強方法,核心思想:
- 準備16個常用的數據增強操作。
- 選擇n個操作,隨機產生使用概率和幅度,稱為一個sub-policy,共產生5個sub-policy。
- 訓練過程每一個batch的圖片隨機采用5個sub-policy操作中的一種。