數據增強(尚未完成)


1. 為什么需要數據增強?

(1)數據增強是擴充數據樣本規模的一種有效的方法,深度學習是一種基於大數據的方法,數據的規模越大、質量越高就越好,模型也能夠擁有更好的泛化能力。然而在實際采集數據的時候,往往很難覆蓋全部的場景,比如光照條件,那么在訓練模型的時候,就需要加入光照方面的數據增強;

(2)即使擁有大量數據,也應該進行數據增強,這會有助於增加數據集中相關數據的數量。通過增強數據集,可以防止神經網絡學習到不想關的模式,避免了過擬合,根本上提升了整體性能。

假設數據集有兩個類別,如下圖,左邊是品牌A(福特),右邊是品牌B(雪佛蘭),並且已經完成了模型的訓練。

![](https://img2018.cnblogs.com/blog/1705340/201906/1705340-20190607194221102-1217156989.jpg)

輸入下面這個圖像:

神經網絡會認為它是品牌B的車。因為這是大多數機器學習算法就是這么工作的。它會尋找區分一個類和另一個類的最明顯特征。在這個例子中 ,這個特征就是所有品牌A的汽車朝向左邊,所有品牌B的汽車朝向右邊。 由此可以得出:神經網絡的好壞也取決於輸入的數據。如何避免?最簡單的解決辦法就是為數據集中的每種類別都添加朝向不同方向的汽車照片。更好的辦法是,只需要將現有的數據集中的照片水平翻轉,使汽車朝向另一側。

2. 數據增強的作用

(1)增加訓練的數據量,提高模型的泛化能力;

(2)增加數據噪聲,提升模型的魯棒性。

3. 數據增強的分類

(1)離線增強:直接對數據集進行處理,數據的數目會變成增強因子 \(\times\) 原數據集的數目 ,這種方法常常用於數據集很小的時候 ;

(2)在線增強:這種增強的方法用於,獲得 batch 數據之后,然后對這個 batch 的數據進行增強,如旋轉、平移、翻折等相應的變化,由於有些數據集不能接受線性級別的增長,這種方法常用於較大的數據集,很多機器學習框架已經支持了這種數據增強方式,並且可以使用 GPU 優化計算。

4. 常用數據增強技術(離線增強)

空間幾何變換:翻轉,旋轉,縮放,隨機裁剪,平移

像素顏色變換類:噪聲(高斯,椒鹽),CoarseDropout,SimplexNoiseAlpha,FrequencyNoiseAlpha

模糊類:高斯模糊

HSV對比度變換:

RGB顏色擾動:

隨機擦除:

超像素法:

邊界檢測:

銳化和浮雕:

多樣本合成:SMOTE、SamplePairing、Mixup

注意:引入數據增強並不一定會帶來模型性能上的提升,尤其是在數據增強的時候,需要考慮如何設置恰當的增強比例因子。實際上,只有當我們增強后的樣本,理論上和我們的實際業務場景最接近的時候,才會達到性能最好。也就是所謂的訓練集和測試集樣本分布一致的時候。 因此,在進行增強的時候不要盲目增強,需要看一下看數據集增強之后的效果如何。

如何查看數據增強后的效果?對於離線數據,保存圖片以后就能夠看到,但是對於在線的數據,則需要借助工具了。這一點tensorflow做的就很好,可以直接使用tensorboard來進行實時訓練圖片查看。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM