乾貨 | 影像資料增強實戰
譯者 | 小韓
編輯 | 安可
【磐創AI導讀】:本文講解了影像資料增強實戰。想要獲取更多的機器學習、深度學習資源,歡迎大家點選上方藍字關注我們的公眾號:磐創AI。
我目前正在做影像資料增強的深度和有效性的研究。這項研究的目的是學習怎樣增加只有有限或少量資料的資料集大小,增強訓練的卷積網路模型的魯棒性。
需要列出所有可以想到的影像增強的方法,並將這些方法進行組合,嘗試和改善影像分類模型的效能。一些較簡單的增強方法有翻轉,平移,旋轉,縮放,分離r,g,b顏色通道和新增噪聲。更好一些的增強方法是生成對抗網路模型,有時交替使用遺傳演算法和生成對抗網路。 還有一些創造性的方法,比如將 Instagram 樣式的高亮濾鏡應用於影像,應用隨機區域銳化濾鏡,以及基於聚類技術新增平均影像。 本文將介紹怎樣使用 NumPy 對影像進行擴充。
下面列出了一些擴充技術的說明,如果你能想到任何其他方法來增強影像,提高影像分類器的質量,請留言一起討論。
原始影像
增強
所有的程式碼都沒有使用 OpenCV 庫,只使用了 Numpy。
# 載入影像
from PIL import Image
import numpy as np
import matplotlib.pyplot as plt
img = Image.open('./NIKE.png')
img = np.array(img)
plt.imshow(img)
plt.show()
翻轉(Flipping)
翻轉影像是最流行的影像資料增強方法之一。這主要是由於翻轉影像的程式碼比較簡單,而且對於大多數問題而言,翻轉影像會增強模型的效能。下面的模型可以被認為是看到左鞋而不是右鞋,因此通過這種資料增加,模型對於看到鞋的潛在變化變得更加有魯棒性。
# 用 Numpy 翻轉
flipped_img = np.fliplr(img)
plt.imshow(flipped_img)
plt.show()
平移(Translations)
很容易想象使用目標檢測的分類器進行平移可以增加它的效能。好像這個分類模型試圖檢測鞋子何時在影像中而不是是否在影像中。 平移操作將有助於它看不到整個鞋子的情況下檢測出鞋子。
# 向左平移
for i in range(HEIGHT, 1, -1):
for j in range(WIDTH):
if (i < HEIGHT-20):
img[j][i] = img[j][i-20]
elif (i < HEIGHT-1):
img[j][i] = 0
plt.imshow(img)
plt.show()
# 向右平移
for j in range(WIDTH):
for i in range(HEIGHT):
if (i < HEIGHT-20):
img[j][i] = img[j][i+20]
plt.imshow(img)
plt.show()
# 向上平移
for j in range(WIDTH):
for i in range(HEIGHT):
if (j < WIDTH - 20 and j > 20):
img[j][i] = img[j+20][i]
else:
img[j][i] = 0
plt.imshow(img)
plt.show()
# 向下平移
for j in range(WIDTH, 1, -1):
for i in range(278):
if (j < 144 and j > 20):
img[j][i] = img[j-20][i]
plt.imshow(img)
plt.show()
噪聲(Noise)
噪聲是一種有趣的增強技術,我開始對這類操作變得更加熟悉。我已經看過很多有趣的關於對抗網路訓練的論文,將一些噪聲加入到影像中,模型便無法正確分類。我仍然在尋找能產生比下圖更好的新增噪聲的方法。 新增噪聲可能使畸變更明顯,並使模型更加穩健。
# 新增噪聲
noise = np.random.randint(5, size = (164,278, 4), dtype = 'uint8')
for i in range(WIDTH):
for j in range(HEIGHT):
for k in range(DEPTH):
if (img[i][j][k] != 255):
img[i][j][k] += noise[i][j][k]
plt.imshow(img)
plt.show()
生成對抗網路(GAN)
我閱讀過很多將生成對抗網路用於資料增強的文獻,下面是我使用MNIST資料集生成的一些影像。
正如上圖看到的那樣,它們看起來確實像3,7和9。 我想擴充套件網路結構來支援的300x300x3尺寸的輸出,而不是28x28x1 MNIST的數字,但是遇到了一些麻煩。 但是,我對這項研究感到非常興奮,並期待繼續這項研究!
感謝您閱讀本文,希望您現在知道如何實現基本的資料擴充以改進您的分類模型!
翻譯自:https://towardsdatascience.com/image-augmentation-examples-in-python-d552c26f2873
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31555081/viewspace-2220970/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 影像語義分割資料增強——imgaug(二)
- Spring Security 實戰乾貨:理解AuthenticationManagerSpring
- transforms模組—PyTorch影像處理與資料增強方法ORMPyTorch
- 影像增強(Image enhancement)
- 資料視覺化實用乾貨分享視覺化
- 乾貨:PHP與大資料開發實踐PHP大資料
- 【真·乾貨】MySQL 索引及優化實戰MySql索引優化
- 乾貨分享!Python網路爬蟲實戰Python爬蟲
- 乾貨|優酷小程式優化實戰優化
- Spring Security 實戰乾貨:分散式物件SharedObjectSpring分散式物件Object
- 音訊資料增強及python實現音訊Python
- 乾貨滿滿!深入解析增強分析的概念及其優勢
- 技術乾貨|如何利用 ChunJun 實現資料實時同步?
- Spring Cloud 純乾貨,從入門到實戰SpringCloud
- 【乾貨】TypeScript 實戰之 extends、infer 與 dva typeTypeScript
- Spring Security 實戰乾貨:實現自定義退出登入Spring
- 影像增強之對比度拉伸
- 影像增強演算法總結演算法
- 視訊影像色彩增強的主要方法與落地實踐
- Spring Security 實戰乾貨:玩轉自定義登入Spring
- 你們要的乾貨來了——實戰 Spring BootSpring Boot
- 遲來的乾貨 | Kafka許可權管理實戰Kafka
- 乾貨:mysql索引的資料結構MySql索引資料結構
- 【乾貨】DDM實踐:資料庫秒級平滑擴容方案資料庫
- 技術乾貨|如何利用 ChunJun 實現資料離線同步?
- 什麼是資料增強?
- 虹科乾貨|Redis企業版資料庫為企業「資料安全」疊加最強Buff!Redis資料庫
- 資深Java工程師推薦新手乾貨教材 《Java Web開發實戰》Java工程師Web
- Spring Security 實戰乾貨:使用 JWT 認證訪問介面SpringJWT
- 乾貨篇:超多內容微服務架構實戰微服務架構
- Spring Security 實戰乾貨:AuthenticationManager的初始化細節Spring
- 【乾貨】MySQL資料庫開發規範MySql資料庫
- 【虹科乾貨】關於JSON資料庫JSON資料庫
- 純乾貨分享 —— 大資料入門指南大資料
- 7個實戰案例、24個學習視訊、12G乾貨資料...帶你免費入門《Python資料分析》!...Python
- MIGO 增強 提交資料庫後Go資料庫
- AI客服上線 乾貨 乾貨 全是乾貨!AI
- 實戰乾貨|Spark 在袋鼠雲數棧的深度探索與實踐Spark