訂閱
糾錯
加入自媒體

了解使用AugLy的數據增強

2022-04-24 10:47
磐創AI
關注

介紹

機器學習和深度學習模型的一個常見問題是“過度擬合”。這意味著模型在訓練數據集上的準確性非常高,但在測試數據上卻沒有較高的準確性。

為了解決過擬合問題,我們可以增加數據集的大小,即將模型暴露于新數據以獲得更好的泛化。額外的數據并不總是可用的,收集起來可能具有挑戰性,而且耗時且昂貴。在這種情況下,數據科學家使用稱為“數據增強 (DA)”的過程。

使用數據增強,我們可以通過幾種增強技術來擴展真實數據的大小。此過程在具有較小數據集和過擬合的模型的項目中是有益的。數據增強有助于提高模型的準確性。

機器學習和深度學習模型可以使用數據增強?梢栽鰪妶D像、文本、音頻和視頻類型的數據。一些深度學習框架——Keras、Tensorflow、Pytorch 等具有內置的增強功能,而許多開源 Python 庫是專門為增強而開發的。

針對不同數據類型的增強技術:

圖像:圖像的增強技術允許縮放、翻轉、旋轉、裁剪、改變亮度/對比度/清晰度/模糊、顏色過濾等等。

文本:文本的增強技術通過單詞/句子改組、同義詞替換、釋義等來支持 NLP 任務。

音頻和視頻技術可以通過引入噪聲、改變速度等來增強數據。

圖像和文本數據增強

醫療保健、農業、制造、汽車等領域的計算機視覺項目處理圖像處理,似乎受益于圖像數據增強。同樣,具有深度學習技術的自然語言處理 (NLP) 應用程序也受益于文本數據增強。本文重點介紹圖像和文本增強。

所有生成的增強圖像和文本都是獨一無二的,我們可以使用增強技術的組合來構建用于模型訓練的多樣化數據集。

重要的是要了解,使用工具擴充數據集是高效且容易的,但選擇適當的擴充選項或技術組合需要對手頭的真實數據集有很好的了解和一定程度的經驗。

有多個用于圖像和文本的 Python 數據增強庫,但我們將在本文中探索“Augly”庫和一些增強技術。

什么是AugLy ?

AugLy 是 Facebook 最近推出的用于數據增強的 Python 開源項目。AugLy 旨在提高 AI 模型在訓練和評估期間的穩健性。該庫包括四種模式(音頻、視頻、圖像和文本),并提供 100 多種數據增強方法。

在處理涉及音頻、視頻、圖像或文本數據集的機器學習或深度學習項目時,該庫可以增加數據并提高模型的性能。

AugLy 是如何工作的?

四種模式的 AugLy 庫使用相同的接口;诤瘮档募夹g以及基于類的方法可用于數據增強。強度函數定義圖像變化的強度。當調用 AugLy 函數時,這些是使用參數定義的。為了更深入地了解數據是如何轉換的,該函數為用戶提供了轉換后的信息。

現在讓我們看看 AugLy 可用的一些數據增強技術。

使用 AugLy 進行圖像數據增強

使用 pip 命令安裝 AugLy

pip install augly

上面的命令是下載使用圖像和文本模式所需的先決條件。

要安裝音頻和視頻格式的附加依賴項,請使用以下命令

pip install augly[av]

pip 不安裝 python-magic。要安裝它,請運行以下命令。某些環境需要運行 AugLy

pip install python-magic-bin

如果你在 Google Colab 上運行本教程并遇到“No matching distribution found for python-magic-bin”錯誤,請改用此命令。

!sudo apt-get install python3-magic

對于 AugLy 的圖像子庫,我們將從'augly.'中導入'imaugs'子模型。utils 用于導入示例圖像。

import os

import augly.image as imaugs

import augly.utils as utils

from IPython.display import display

在這里,我們定義了增強的圖像路徑。我們將使用鳥的示例圖像。

# Image path setting 

input = '/content/bird.jpg'

圖像縮放

imaugs 的 AugLy 的'scale()' 函數可以用來縮放圖像。該方法需要一個重要的參數來定義表示小圖像或大圖像的圖像。如果將其設置為較低的值,則圖像會很小。否則,圖像被放大。

# Image Scaling with small factor

image = imaugs.scale(input, factor=0.1)

display(image)

# Image Scaling with large factor

image = imaugs.scale(input, factor=0.7)

display(image)

圖像模糊

使用此選項,我們可以降低圖像清晰度,創建模糊圖像。

# Image Blurring

image = imaugs.blur(input, radius = 4.0)

display(image)

圖像亮度

使用此選項,可以修改輸入圖像的亮度。

# Increasing Image Brightness

image = imaugs.brightness(input, factor=1.2)

display(image)

圖像暗度

我們可以降低亮度以使具有相同亮度特征的圖像更暗。

# Making Image Darker

image = imaugs.brightness(input, factor=0.3)

display(image)

圖像對比度

我們可以使用以下命令更改圖像的對比度。

# Changing Image Contrast

image = imaugs.contrast(input, factor=2.7)

display(image)

圖像翻轉 - 水平和垂直

使用這些命令,我們可以水平和垂直翻轉圖像。

#horizontal flip

image_h = imaugs.hflip(input)

display(image_h)

#vertical flip

image_v= imaugs.vflip(input)

display(image_v)

圖像灰度要將圖像更改為灰度,我們可以使用以下命令

#Grayscale image

image = imaugs.grayscale(input)

display(image)

圖像退化(椒鹽噪聲)

要向輸入圖像添加噪聲,請使用

# Degrading Image Pixels

image = imaugs.shuffle_pixels(input, factor=0.3)

display(image)

圖像傾斜

此功能以隨機角度傾斜圖像。

# Image skew

image = imaugs.skew(input)

display(image)

圖像透視變換

我們可以通過定義 sigma 值(即標準偏差)來執行圖像轉換。較高的 sigma 值將意味著更強烈的圖像轉換。

# Image Perspective Transform

aug = imaugs.PerspectiveTransform(sigma=20.0)

image=aug(input)

display(image)

圖像縱橫比

使用這種技術,我們可以控制縱橫比,即圖像的高度和寬度。

#Changing Aspect Ratio

aug = imaugs.RandomAspectRatio()

image=aug(input)

display(image)

圖像裁剪

可以使用以下命令將圖像裁剪為必要的像素大小 -

# Cropping Image

image = imaugs.crop(input,x1=0.2,x2=0.8,y1=0.2,y2=0.8)

display(image)

使用 AugLy 創建模因

使用“meme format()”技術,AugLy 可用于創建模因。這種方法通過提供文本和圖像來生成代表模因的圖像。

例如,使用的圖像包含文本“LOL”。下面的代碼片段運行“meme_format()”函數并轉換圖像。

# Creating a meme

display(

   imaugs.meme_format(

       input,

       caption_height=75,

       meme_bg_color=(0, 0, 0),

       text_color=(255, 255, 255),

   )

'caption_height'、'meme_bg_color' 和 'text_color' 等參數用于自定義 meme 的顯示方式。黑色的 RGB 是 (0, 0, 0),而白色的 RGB 是 (256, 256, 256)。

將圖像轉換為屏幕截圖

'Compose()' 方法用于改變圖像的外觀。此函數需要更多參數來進行新轉換,例如飽和度和應用于圖像的疊加類型。

# Applying several transformations together to create a new image

aug = imaugs.Compose(

   [

       imaugs.Saturation(factor=0.7),

       imaugs.OverlayOntoScreenshot(

           template_filepath=os.path.join(

               utils.SCREENSHOT_TEMPLATES_DIR, "web.png"

           ),

       ),

       imaugs.Scale(factor=0.9),

   ]

display(aug(input))

AugLy 提供了更多的增強技術。你可以通過使用下面的命令來探索這些,了解它們,并將它們與你的圖像一起使用。

help(imaugs)

使用 AugLy 進行文本數據增強

第一步是導入包含文本數據增強方法的文本模態。

import augly.text as textaugs

然后,進行示例文本輸入。

# Sample text

txt = "Hello, Good Morning! How are you?"

在每個文本中,“simulates_typos”函數可用于通過拼寫錯誤、鍵盤距離和交換方法來增加文本數據。

aug_tx = textaugs.simulate_typos(txt)

print(aug_tx)

我們可以在每個輸入文本中添加標點符號。

print(textaugs.insert_punctuation_chars(txt))

AugLy 的“replace_bidirectional”方法反轉每個輸入文本中的每個單詞或單詞的一部分,并使用雙向標記以原始序列生成它。它單獨反轉每個單詞,即使換行也能保持單詞順序。print(textaugs.replace_bidirectional(txt))

AugLy 的“replace_upside_down”函數根據粒度將文本中的單詞倒置。print(textaugs.replace_upside_down(txt))

結論

在本文中,我們介紹了數據增強在改進機器學習和深度學習模型中的作用。此外,我們看到了不同的圖像和文本增強技術。AugLy庫支持多種增強技術。我們從 AugLy 庫中探索了其中的一些。

本文的主要內容:

· 數據增強可以克服數據短缺,因為它允許從可用的真實數據中擴展數據集。

· 數據增強可以提高模型性能并使其更加可靠。

· 可以使用數據增強庫來增強圖像、文本、音頻和視頻格式的數據。有幾個專門為數據增強而開發的開源 Python 庫。

· AugLy 是 Facebook 開發的開源數據增強庫,支持 100 多種增強技術,并且易于初學者使用,是不同類型數據的不錯選擇。

上面討論的增強的代碼可在我的 GitHub 存儲庫中找到。你可以嘗試本文中分享的增強功能或探索 AugLy 庫中的其他增強功能。

       原文標題 : 了解使用AugLy的數據增強

聲明: 本文由入駐維科號的作者撰寫,觀點僅代表作者本人,不代表OFweek立場。如有侵權或其他問題,請聯系舉報。

發表評論

0條評論,0人參與

請輸入評論內容...

請輸入評論/評論長度6~500個字

您提交的評論過于頻繁,請輸入驗證碼繼續

暫無評論

暫無評論

    人工智能 獵頭職位 更多
    掃碼關注公眾號
    OFweek人工智能網
    獲取更多精彩內容
    文章糾錯
    x
    *文字標題:
    *糾錯內容:
    聯系郵箱:
    *驗 證 碼:

    粵公網安備 44030502002758號