資料增強(尚未完成)
1. 為什麼需要資料增強?
(1)資料增強是擴充資料樣本規模的一種有效的方法,深度學習是一種基於大資料的方法,資料的規模越大、質量越高就越好,模型也能夠擁有更好的泛化能力。然而在實際採集資料的時候,往往很難覆蓋全部的場景,比如光照條件,那麼在訓練模型的時候,就需要加入光照方面的資料增強;
(2)即使擁有大量資料,也應該進行資料增強,這會有助於增加資料集中相關資料的數量。通過增強資料集,可以防止神經網路學習到不想關的模式,避免了過擬合,根本上提升了整體效能。
假設資料集有兩個類別,如下圖,左邊是品牌A(福特),右邊是品牌B(雪佛蘭),並且已經完成了模型的訓練。
輸入下面這個影象:
神經網路會認為它是品牌B的車。因為這是大多數機器學習演算法就是這麼工作的。它會尋找區分一個類和另一個類的最明顯特徵。在這個例子中 ,這個特徵就是所有品牌A的汽車朝向左邊,所有品牌B的汽車朝向右邊。 由此可以得出:神經網路的好壞也取決於輸入的資料。如何避免?最簡單的解決辦法就是為資料集中的每種類別都新增朝向不同方向的汽車照片。更好的辦法是,只需要將現有的資料集中的照片水平翻轉,使汽車朝向另一側。
2. 資料增強的作用
(1)增加訓練的資料量,提高模型的泛化能力;
(2)增加資料噪聲,提升模型的魯棒性。
3. 資料增強的分類
(1)離線增強:直接對資料集進行處理,資料的數目會變成增強因子 \(\times\) 原資料集的數目 ,這種方法常常用於資料集很小的時候 ;
(2)線上增強:這種增強的方法用於,獲得 batch 資料之後,然後對這個 batch 的資料進行增強,如旋轉、平移、翻折等相應的變化,由於有些資料集不能接受線性級別的增長,這種方法常用於較大的資料集,很多機器學習框架已經支援了這種資料增強方式,並且可以使用 GPU 優化計算。
4. 常用資料增強技術(離線增強)
空間幾何變換:翻轉,旋轉,縮放,隨機裁剪,平移
畫素顏色變換類:噪聲(高斯,椒鹽),CoarseDropout,SimplexNoiseAlpha,FrequencyNoiseAlpha
模糊類:高斯模糊
HSV對比度變換:
RGB顏色擾動:
隨機擦除:
超畫素法:
邊界檢測:
銳化和浮雕:
多樣本合成:SMOTE、SamplePairing、Mixup
注意:引入資料增強並不一定會帶來模型效能上的提升,尤其是在資料增強的時候,需要考慮如何設定恰當的增強比例因子。實際上,只有當我們增強後的樣本,理論上和我們的實際業務場景最接近的時候,才會達到效能最好。也就是所謂的訓練集和測試集樣本分佈一致的時候。 因此,在進行增強的時候不要盲目增強,需要看一下看資料集增強之後的效果如何。
如何檢視資料增強後的效果?對於離線資料,儲存圖片以後就能夠看到,但是對於線上的資料,則需要藉助工具了。這一點tensorflow做的就很好,可以直接使用tensorboard來進行實時訓練圖片檢視