技術分享:圖像數據增強方法一覽(附python代碼)

在圖像分類任務中,圖像數據增強一般是大多數人會採用的方法之一,這是由於深度學習對數據集的大小有一定的要求,若原始的數據集比較小,無法很好地滿足網絡模型的訓練,從而影響模型的性能,而圖像增強是對原始圖像進行一定的處理以擴充數據集,能夠在一定程度上提升模型的性能。

技術分享:圖像數據增強方法一覽(附python代碼)

本文是我目前正在研究一項內容,總結圖像數據增強的一些方法及其有效性。本研究的目的是學習如何增加訓練數據集的大小,通過有限或少量數據來訓練獲得具有魯棒性的卷積網絡模型。

這項研究要求列出我們可以想到的所有圖像增強方法,並列舉出所有這些組合,以嘗試和改善圖像分類模型的性能。那麼,能夠想到的一些最簡單的增強方法有翻轉、平移、旋轉、縮放,分離單個r、g、b三個顏色通道以及添加噪聲。更激動人心的增強方法是比較熱門的使用生成對抗網絡模型,有時交替使用遺傳算法和生成對抗網絡。此外,還提出了一些創造性方法,例如將類似於Instagram中的高亮濾鏡應用於圖像、應用隨機區域銳化濾鏡,以及基於聚類技術添加平均圖像等。本文將展示如何使用NumPy對圖像進行擴充。

下面是上述提到的增強技術的總結及說明,如果你能想到其它任何方法來增強圖像,並可以提高圖像分類器的性能,請在留言區評論。

技術分享:圖像數據增強方法一覽(附python代碼)

原始圖像

增強

所有的數據增強都是在沒有OpenCV庫的情況下,使用Numpy完成。

技術分享:圖像數據增強方法一覽(附python代碼)

翻轉|Flipping

對圖像進行翻轉是最流行的圖像數據增強方法之一。這主要是由於翻轉圖像操作的代碼簡單,以及對於大多數問題而言,對圖像進行翻轉操作能夠提升模型的性能。下面的模型可以被認為是看到左鞋而不是右鞋,因此通過這種數據增加,模型對於看到鞋的潛在變化會變得更加魯棒。

技術分享:圖像數據增強方法一覽(附python代碼)

技術分享:圖像數據增強方法一覽(附python代碼)

平移|Translations

很容易想象對完成檢測任務的分類器進行平移增強能夠提升其性能,好像這個分類模型試圖檢測鞋子何時在圖像中而不是是否在圖像中。這些平移操作將有助於它在無法看清整個鞋子的情況下認出鞋子來。

技術分享:圖像數據增強方法一覽(附python代碼)

左移


技術分享:圖像數據增強方法一覽(附python代碼)

技術分享:圖像數據增強方法一覽(附python代碼)

右移


技術分享:圖像數據增強方法一覽(附python代碼)

技術分享:圖像數據增強方法一覽(附python代碼)

上移


技術分享:圖像數據增強方法一覽(附python代碼)

技術分享:圖像數據增強方法一覽(附python代碼)

下移


技術分享:圖像數據增強方法一覽(附python代碼)

加噪|Noise

對圖像加噪音是一種有趣的圖像增強技術,現在我開始對這類操作變得更加熟悉。我已經看過很多關於對抗網絡訓練的有趣論文,當將一些噪音加入到圖像後,模型無法對圖像進行正確分類。我仍然在尋找能產生比下圖更好的加噪方法。添加噪聲可能有助於使得畸變更加明顯,並使得模型更加魯棒。

技術分享:圖像數據增強方法一覽(附python代碼)

加噪

技術分享:圖像數據增強方法一覽(附python代碼)

生成對抗網絡|GAN:

我閱讀了很多關於生成對抗網絡的文獻,文獻中很多都使用生成對抗網絡進行數據增強,我對此也比較感興趣,下面是我使用MNIST數據集生成的一些圖像。

技術分享:圖像數據增強方法一覽(附python代碼)

GAN生成圖像

正如我們從上圖中看到的,它們確實看起來像數字3、7和9,但實際上,將其送進數字手寫體分類器中,它們並不能被識別為對應的數字。

感謝你閱讀本文,希望你現在知道如何實現對基本數據進行擴充,以改進自己搭建的分類模型!文章原標題《Image Augmentation Examples in Python》

成都加米穀教育大數據培訓,專注於大數據人才培養,中秋國慶報名學習大數據,雙節同慶特惠學員!詳情見微頭條!


分享到:


相關文章: