亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python圖像增強imgaug詳解

 更新時間:2022年11月12日 15:00:17   作者:hanscal  
Imgaug 是一個開源 python 包,可讓你在機器學(xué)習(xí)實驗中增強圖像,它適用于各種增強技術(shù),它有一個簡單而強大的界面,可以增強圖像、地標(biāo)、邊界框、熱圖和分割圖,這篇文章主要介紹了Python圖像增強imgaug,需要的朋友可以參考下

介紹

圖像分類器通常在訓(xùn)練更多的圖像時表現(xiàn)得更好。在圖像分類模型中,一個常見的問題是,模型不能正確地對圖像進行分類,只是因為它沒有針對同一圖像的不同方向進行訓(xùn)練。這可以通過向模型提供多種可能的圖像方向和轉(zhuǎn)換來克服。

然而,在現(xiàn)實中,收集這些不同的數(shù)據(jù)可能需要更多的時間、資源和專業(yè)知識,而且對公司來說成本可能很高。在這種情況下,圖像數(shù)據(jù)增強是一個流行的選擇,通過使用一個或多個增強技術(shù)來生成用于訓(xùn)練的各種圖像,從而為現(xiàn)有數(shù)據(jù)集增加多樣性。

盡管一些Python庫支持多種增強技術(shù),但并不是所有的技術(shù)都適合訓(xùn)練模型。用戶需要知道哪些增強技術(shù)可以幫助生成用于訓(xùn)練模型的實際附加數(shù)據(jù)。

可以使用各種技術(shù)來增強圖像數(shù)據(jù)。它可以包括:

  • 使用幾何變換(例如翻轉(zhuǎn)、裁剪、旋轉(zhuǎn)、縮放等)增強圖像數(shù)據(jù)。
  • 通過使用顏色轉(zhuǎn)換來增強圖像數(shù)據(jù),例如通過調(diào)整亮度、暗度、銳度、飽和度等。
  • 通過隨機擦除、混合圖像等來增強圖像數(shù)據(jù)。

Imgaug

Imgaug 是一個開源 python 包,可讓你在機器學(xué)習(xí)實驗中增強圖像。它適用于各種增強技術(shù)。它有一個簡單而強大的界面,可以增強圖像、地標(biāo)、邊界框、熱圖和分割圖。

首先使用 pip 安裝這個庫。

pip install imgaug

接下來,使用 pip 命令在命令提示符下安裝名為“IPyPlot”的 python 包:

pip install ipyplot

IPyPlot 是一個 Python 工具,允許在 Python Notebook 單元格中快速高效地顯示圖像。這個包將 IPython 與 HTML 相結(jié)合,以提供一種更快、更豐富、更具交互性的方式來顯示圖像。這個包的 'plot_images' 命令將用于以網(wǎng)格狀結(jié)構(gòu)繪制所有圖像。

此外,將導(dǎo)入擴充數(shù)據(jù)所需的所有必要包。

import imageio
import imgaug as ia
import imgaug.augmenters as iaa
 
增強的圖像路徑在此處定義。將使用鳥類圖像作為示例。
input_img = imageio.imread('../input/image-bird/bird.jpg')

圖像翻轉(zhuǎn)

可以使用下面的命令水平和垂直翻轉(zhuǎn)圖像。以下代碼中的“Fliplr”關(guān)鍵字水平翻轉(zhuǎn)圖像。同樣,關(guān)鍵字“Flipud”垂直翻轉(zhuǎn)圖像。

#Horizontal Flip
hflip= iaa.Fliplr(p=1.0)
input_hf= hflip.augment_image(input_img)
 
#Vertical Flip
vflip= iaa.Flipud(p=1.0) 
input_vf= vflip.augment_image(input_img)
images_list=[input_img, input_hf, input_vf]
labels = ['Original', 'Horizontally flipped', 'Vertically flipped']
ipyplot.plot_images(images_list,labels=labels,img_width=180)

每個圖像被翻轉(zhuǎn)的概率由 p 表示。默認(rèn)情況下,概率設(shè)置為 0.0。要水平翻轉(zhuǎn)輸入圖像,請使用 Fliplr(1.0) 。同樣,當(dāng)垂直翻轉(zhuǎn)圖像時,使用 Flipud(1.0) 。

圖像旋轉(zhuǎn)

通過以度為單位定義旋轉(zhuǎn),可以旋轉(zhuǎn)圖像。

rot1 = iaa.Affine(rotate=(-50,20))
input_rot1 = rot1.augment_image(input_img)
images_list=[input_img, input_rot1]
labels = ['Original', 'Rotated Image']
ipyplot.plot_images(images_list,labels=labels,img_width=180)

圖像裁剪

裁剪圖像包括從圖像的側(cè)面移除像素的列或行,可以從全尺寸輸入圖像中提取較小尺寸的子圖像。要刪除的像素數(shù)可以以絕對數(shù)或圖像大小的一部分指定。

在這種情況下,使用從連續(xù)間隔 [0.0, 0.3] 中均勻獲取的隨機分?jǐn)?shù)裁剪圖像的每一側(cè),并在每個圖像和每側(cè)采樣一次。在這里,為頂部取 0.3 的采樣分?jǐn)?shù),這會將圖像裁剪 0.3*H,其中 H 是輸入圖像的高度。

crop1 = iaa.Crop(percent=(0, 0.3)) 
input_crop1 = crop1.augment_image(input_img)
images_list=[input_img, input_crop1]
labels = ['Original', 'Cropped Image']
ipyplot.plot_images(images_list,labels=labels,img_width=180)

圖像噪聲

該增強器將高斯噪聲添加到輸入圖像。尺度值是產(chǎn)生噪聲的正態(tài)分布的標(biāo)準(zhǔn)偏差。

noise=iaa.AdditiveGaussianNoise(10,40)
input_noise=noise.augment_image(input_img)
images_list=[input_img, input_noise]
labels = ['Original', 'Gaussian Noise Image']
ipyplot.plot_images(images_list,labels=labels,img_width=180)

圖像剪切

該增強器以 -40 到 40 度范圍內(nèi)的隨機量剪切圖像。

shear = iaa.Affine(shear=(-40,40))
input_shear=shear.augment_image(input_img)
images_list=[input_img, input_shear]
labels = ['Original', 'Image Shearing']
ipyplot.plot_images(images_list,labels=labels,img_width=180)

圖像對比度

該增強器通過縮放像素值來調(diào)整圖像對比度。

contrast=iaa.GammaContrast((0.5, 2.0))
contrast_sig = iaa.SigmoidContrast(gain=(5, 10), cutoff=(0.4, 0.6))
contrast_lin = iaa.LinearContrast((0.6, 0.4))
input_contrast = contrast.augment_image(input_img)
sigmoid_contrast = contrast_sig.augment_image(input_img)
linear_contrast = contrast_lin.augment_image(input_img)
images_list=[input_img, input_contrast,sigmoid_contrast,linear_contrast]
labels = ['Original', 'Gamma Contrast','SigmoidContrast','LinearContrast']
ipyplot.plot_images(images_list,labels=labels,img_width=180)

GammaContrast 函數(shù)使用公式 255*((v/255)**gamma 調(diào)整圖像對比度,其中 v 是像素值,gamma 從范圍 [0.5, 2.0] 中均勻采樣。

SigmoidContrast 使用公式 255*1/(1+exp(gain*(cutoff-v/255)) 調(diào)整圖像對比度 (其中v為像素值,gain 從區(qū)間[3, 10]開始均勻采樣(每張圖像一次),截斷采樣與區(qū)間 [0.4, 0.6] 一致。

LinearContrast 使用公式 127 + alpha*(v-127) 改變圖像對比度,其中 v 是像素值,alpha 從 [0.4, 0.6] 范圍內(nèi)均勻采樣。

圖像轉(zhuǎn)換

“ElasticTransformation”增強器通過使用位移場在局部移動像素來變換圖像。增強器的參數(shù)是 alpha 和 sigma。位移的強度由 alpha 控制,其中較大的值表示像素移動得更遠(yuǎn)。位移的平滑度由 sigma 控制,其中較大的值會導(dǎo)致更平滑的圖案。

elastic = iaa.ElasticTransformation(alpha=60.0, sigma=4.0)
polar = iaa.WithPolarWarping(iaa.CropAndPad(percent=(-0.2, 0.7)))
jigsaw = iaa.Jigsaw(nb_rows=20, nb_cols=15, max_steps=(3, 7))
input_elastic = elastic.augment_image(input_img)
input_polar = polar.augment_image(input_img)
input_jigsaw = jigsaw.augment_image(input_img)
images_list=[input_img, input_elastic,input_polar,input_jigsaw]
labels = ['Original', 'elastic','polar','jigsaw']
ipyplot.plot_images(images_list,labels=labels,img_width=180)

在使用“Polar Warping”增強器時,首先在極坐標(biāo)表示中應(yīng)用裁剪和填充,然后再將其扭轉(zhuǎn)回笛卡爾表示。這個增強器可以為圖像添加額外的像素。這些將被黑色像素填充。此外,“Jigsaw”增強以類似于拼圖模式的方式移動圖片內(nèi)的單元格。

圖像邊界框

Imgaug 還為圖像提供邊界框支持。如果在增強期間旋轉(zhuǎn),該庫可以旋轉(zhuǎn)圖像上的所有邊界框。

from imgaug.augmentables.bbs import BoundingBox, BoundingBoxesOnImage
bbs = BoundingBoxesOnImage([
 BoundingBox(x1=40, x2=550, y1=40, y2=780)
], shape=input_img.shape)
ia.imshow(bbs.draw_on_image(input_img))

到此這篇關(guān)于Python圖像增強imgaug的文章就介紹到這了,更多相關(guān)Python圖像增強imgaug內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論