神經(jīng)網(wǎng)絡(luò)的數(shù)據(jù)增強技術(shù)
為什么需要數(shù)據(jù)增強 :
一般而言,比較成功的神經(jīng)網(wǎng)絡(luò)需要大量的參數(shù),許許多多的神經(jīng)網(wǎng)路的參數(shù)都是數(shù)以百萬計,而使得這些參數(shù)可以正確工作則需要大量的數(shù)據(jù)進行訓練,而實際情況中數(shù)據(jù)并沒有我們想象中的那么多
數(shù)據(jù)增強的作用 :
① 增加訓練的數(shù)據(jù)量,提高模型的泛化能力
② 增加噪聲數(shù)據(jù),提升模型的魯棒性
如何獲得大量的數(shù)據(jù) :
一種方法是獲得新的數(shù)據(jù),這種方法比較麻煩,需要大量的成本,而第二種方法則是對數(shù)據(jù)進行增強,即利用已有的數(shù)據(jù)比如翻轉(zhuǎn)、平移或旋轉(zhuǎn),創(chuàng)造出更多的數(shù)據(jù),來使得神經(jīng)網(wǎng)絡(luò)具有更好的泛化效果。
數(shù)據(jù)增強的分類 :
數(shù)據(jù)增強可以分為兩類,一類是離線增強,一類是在線增強。
① 離線增強 : 直接對數(shù)據(jù)集進行處理,數(shù)據(jù)的數(shù)目會變成增強因子 x 原數(shù)據(jù)集的數(shù)目 ,這種方法常常用于數(shù)據(jù)集很小的時候
② 在線增強 : 這種增強的方法用于,獲得 batch 數(shù)據(jù)之后,然后對這個 batch 的數(shù)據(jù)進行增強,如旋轉(zhuǎn)、平移、翻折等相應(yīng)的變化,由于有些數(shù)據(jù)集不能接受線性級別的增長,這種方法長用于大的數(shù)據(jù)集,很多機器學習框架已經(jīng)支持了這種數(shù)據(jù)增強方式,并且可以使用 GPU 優(yōu)化計算。
常用的數(shù)據(jù)增強技術(shù) :
首先定義增強因子 : 指的是數(shù)據(jù)做離線增強之后增長的倍數(shù)。
① 翻轉(zhuǎn) :增強因子 2 或 3
數(shù)據(jù)翻轉(zhuǎn)是一種常用的數(shù)據(jù)增強方法,這種方法不同于旋轉(zhuǎn) 180 這種方法是做一種類似于鏡面的翻折。
② 旋轉(zhuǎn) : 增強因子 2 到 4
旋轉(zhuǎn)就是順時針或者逆時針的旋轉(zhuǎn),注意在旋轉(zhuǎn)的時候, 最好旋轉(zhuǎn) 90 - 180 度否則會出現(xiàn)尺度的問題
③ 縮放 :增強因子任意
圖像可以被放大或縮小。放大時,放大后的圖像尺寸會大于原始尺寸。大多數(shù)圖像處理架構(gòu)會按照原始尺寸對放大后的圖像 進行裁切。我們將在下一章節(jié)討論圖像縮小,因為圖像縮小會減小圖像尺寸,這使我們不得不對圖像邊界之外的東西做出假設(shè)。
下面是圖像縮放的例子。
④ 裁剪 :增強因子任意
這種方法更流行的叫法是隨機裁剪,我們隨機從圖像中選擇一部分,然后降這部分圖像裁剪出來,然后調(diào)整為原圖像的大小
⑤ 平移 : 增強因子任意
平移是將圖像沿著 x 或者 y 方向 (或者兩個方向) 移動。我們在平移的時候需對背景進行假設(shè),比如說假設(shè)為黑色等等,因為平移的時候有一部分圖像是空的,由于圖片中的物體可能出現(xiàn)在任意的位置,所以說平移增強方法十分有用。
⑥ 添加噪聲 :增強因子任意 看噪聲的類型
過擬合通常發(fā)生在神經(jīng)網(wǎng)絡(luò)學習高頻特征的時候 (因為低頻特征神經(jīng)網(wǎng)絡(luò)很容易就可以學到,而高頻特征只有在最后的時候才可以學到) 而這些特征對于神經(jīng)網(wǎng)絡(luò)所做的任務(wù)可能沒有幫助,而且會對低頻特征產(chǎn)生影響,為了消除高頻特征我們隨機加入噪聲數(shù)據(jù)來消除這些特征。
圖像增強的效果 :
圖像增強非常必要,我也有過親自的實驗,特別是有些論文中,如果不進行圖片增強,就無法達到論文中提到的效果,下面展現(xiàn)一下圖片增強的效果示意圖 :
圖中 :C10 和 C100 是沒有經(jīng)過圖片增強的,C10+ 和 C100+ 是經(jīng)過了圖片增強的,意識到它的神奇的效果了吧 (圖片增強應(yīng)該不是玄學)。