資料增強
線下:事先執行所有轉換,實質上會增加的資料集的大小,适用于較小的資料集。
線上:在送入機器學習之前,在小批量(mini-batch)上執行這些轉換,适用于較大的資料集,一些機器學習架構支援線上增強,可以在GPU上加速。
主要有以下幾類:
- 幾何變換:例如平移、旋轉、翻轉、縮放等。(有小目标,必須裁剪
- 顔色變換:①噪聲:為了讓模型更加魯棒,可以考慮在訓練集内加入高斯噪聲、椒鹽噪聲等對模型進行幹擾。② 顔色擾動:改變亮度、灰階、飽和度、對比度等,色調歸一化
- 類别不平衡(待補充):重采樣;執行個體平衡增強
- 去模糊:中值/高斯/動态模糊、去霧算法(GCANet、FFA-Net、AOD-Net等等)、MSRCR等
- 目标遮擋或重疊:Cutout、Random Erasing、Mixup、Cutmix等
- 其他:使用copy-paste 、泊松融合等增加資料量,使用标簽平滑等防止過拟合,……
細節補充
-
執行個體平衡增強
執行個體平衡增強(Instance-Balanced Augmentation)技術,即對圖像按照特定的尺度(如 1.5 倍和 2 倍大小)進行縮放操作,即定義了一批大小不同的「滑窗」。同時也會定義滑窗的步長。定義後,使用滑動視窗在樣本圖像中滑動,産生滑動區域。在這些滑窗中,選擇包含少量目标的最優資料加入到訓練集中。
選擇滑窗注意:①參考資料集已有樣本的類别分類情況選擇滑窗目标;②可根據分辨率和尺度等對選出的滑窗目标加入一些随機擾動,達到增強原有資料集的目的
- 遮擋重疊方法比較
Cutout:利用固定大小的矩形對圖像進行遮擋,在矩形範圍内,所有的值都被設定為0,或者其他純色值。而且擦除矩形區域存在一定機率不完全在原圖像中的(文中設定為50%)。motivation是“遮擋”,即删除的矩形區域可以看成是被遮擋的位置
Random Erasing:通過均勻分布取樣得到擦除矩形面積,以及長寬值。選擇一個滿足所有矩形部分都在圖像内的左上角坐标,将這個矩形區域都設定為統一的和圖像其他區域無關的純色值。
(最主要的差別在于在cutout中,擦除矩形區域存在一定機率不完全在原圖像中的。而在Random Erasing中,擦除矩形區域一定在原圖像内。Cutout變相的實作了任意大小的擦除,以及保留更多重要區域。)
Mixup:兩張圖像每個位置的像素根據一定比例進行疊加,label根據像素疊加比例進行配置設定。/從訓練樣本中随機抽取兩個樣本進行簡單的随機權重求和,同時樣本的标簽也對應權重求和,然後預測結果與權重求和之後的标簽求損失,在反向求導更新參數。
Cutmix:随機删除一個矩形區域,并通過另一張圖像的同一位置像素值填充,label根據像素所占比例進行配置設定
-
github資料增強
Image augmentation for machine learning experiments.
Fast image augmentation library and an easy-to-use wrapper around other libraries.
Image augmentation library in Python for machine learning.
參考:
- 重新整理PascalVOC紀錄,阿裡圖靈實驗室怎樣目标檢測
- Cutout、Random Erasing、Mixup、Cutmix
- 目标檢測比賽思路、tricks集錦、資料彙總
- 目标檢測類算法比賽的經驗總結