成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Python中的圖像增強技術

新聞 前端
圖像增強是一種非常強大的技術,針對現有圖像人為創建各種變化以擴展圖像數據集,例如縮放現有圖像、將現有圖像旋轉幾度、剪切或裁剪圖像等等。在本文中,我們將使用 imgaug 庫探索 Python 中的圖像增強技術。

圖像增強是一種非常強大的技術,針對現有圖像人為創建各種變化以擴展圖像數據集,例如縮放現有圖像、將現有圖像旋轉幾度、剪切或裁剪圖像等等。在本文中,我們將使用 imgaug 庫探索 Python 中的圖像增強技術。

我們為什么需要圖像增強?

深度學習卷積神經網絡(CNN)需要大量圖像才能有效訓練模型。通過更好的增強有助于提高模型的性能,從而減少過度擬合。可用于分類和對象檢測數據集的最流行的數據集具有數千到數百萬個圖像。

歸納是指在模型訓練期間根據以前從未見過的數據進行評估模型的性能測試或驗證。由于 CNN 具有不變性,即使在不同大小,方向或不同照明下可見時,它也可以對對象進行分類。因此,我們可以獲取圖像的小型數據集,并通過放大或縮小,垂直或水平翻轉它們或更改亮度來改變對象的大小。這樣,我們可以創建豐富、多樣化的圖像數據集。

圖像增強可以從一小組圖像中創建豐富多樣的圖像集,以進行圖像分類,目標檢測或圖像分割。在仔細了解問題域之后,需要采用增加訓練數據集大小的增強策略。

什么時候需要應用圖像增強?

在我們訓練模型之前,可以將圖像增強用作預處理。 

  • 離線或預處理增強

增強被用作預處理步驟,以增加數據集的大小。通常,當我們有一個小的訓練數據集要擴展時,便可以完成此操作。

在較小的數據集上生成擴充很有幫助,但在應用于較大的數據集時,我們需要考慮磁盤空間。 

  • 在線或實時增強

顧名思義,增強是實時應用的。這通常適用于較大的數據集,因為我們不需要將增強的映像保存在磁盤上。

在這種情況下,我們在小批量中應用轉換,然后將其輸入模型。

在線增強模型將在每個時期看到不同的圖像。在“離線增強”中,增強圖像是訓練集的一部分,它會根據時期數多次查看增強圖像。

該模型可通過在線增強更好地推廣,因為它在通過在線數據增強進行訓練期間會看到更多樣本。

我們將使用 imgaug 類來演示圖像增強。

基本圖像處理技術

  • 翻轉:垂直或水平翻轉圖像
  • 旋轉:將圖像旋轉指定的角度。
  • 剪切:像平行四邊形一樣移動圖像的一部分
  • 裁剪:對象以不同比例出現在圖像中的不同位置
  • 放大,縮小
  • 改變亮度或對比度

現在,我們將使用 imgaug 庫探索這些數據增強技術

Imgaug

imgaug 是一個用于圖像增強以及關鍵點 / 地標,邊界框,熱圖和分段圖的庫。

  1. pip install imgaug 

在某些情況下,我們會遇到 Shapely 錯誤,在這種情況下,我們可以嘗試使用以下命令

  1. pip install imgaug — upgrade — no-deps 

我們將拍攝一張圖像,并使用基本的數據增強技術對其進行轉換實踐。

導入所需的庫:

  1. import imageio 
  2.  
  3. import imgaug as ia 
  4.  
  5. import imgaug.augmenters as iaa 
  6.  
  7. import numpy as np 
  8.  
  9. import pandas as pd 
  10.  
  11. import matplotlib.pyplot as plt 
  12.  
  13. import matplotlib.patches as patches 
  14.  
  15. import matplotlib 
  16.  
  17. %matplotlib inline 

顯示原始圖像

我們使用 imageio 顯示原始圖像

  1. image = imageio.imread(“.\car2.jpeg”) 
  2.  
  3. ia.imshow(image) 

Python中的图像增强技术

旋轉影像

我們可以通過指定旋轉角度來旋轉圖像。我們將圖像旋轉 -50 度到 30 度

  1. rotate=iaa.Affine(rotate=(-5030)) 
  2.  
  3. rotated_image=rotate.augment_image(image) 
  4.  
  5. ia.imshow(rotated_image) 

Python中的图像增强技术

給圖像添加噪點

我們將從高斯分布采樣的不同噪聲值添加到圖像。

  1. gaussian_noise=iaa.AdditiveGaussianNoise(10,20
  2.  
  3. noise_image=gaussian_noise.augment_image(image) 
  4.  
  5. ia.imshow(noise_image) 

Python中的图像增强技术

裁剪圖像

修剪會刪除圖像側面的像素列 / 行。在下面的示例中,我們將圖像的一側裁剪了 30%

  1. crop = iaa.Crop(percent=(00.3)) # crop image 
  2.  
  3. corp_image=crop.augment_image(image) 
  4.  
  5. ia.imshow(corp_image) 

Python中的图像增强技术

扭曲圖像

設置 0 到 40 度

  1. shear = iaa.Affine(shear=(0,40)) 
  2.  
  3. shear_image=shear.augment_image(image) 
  4.  
  5. ia.imshow(shear_image) 

Python中的图像增强技术

翻轉圖像

我們可以垂直或水平翻轉圖像。Fliplr 水平翻轉圖像

  1. #flipping image horizontally 
  2.  
  3. flip_hr=iaa.Fliplr(p=1.0
  4.  
  5. flip_hr_image= flip_hr.augment_image(image) 
  6.  
  7. ia.imshow(flip_hr_image) 

Python中的图像增强技术

垂直翻轉圖像

  1. flip_vr=iaa.Flipud(p=1.0
  2.  
  3. flip_vr_image= flip_vr.augment_image(image) 
  4.  
  5. ia.imshow(flip_vr_image) 

Python中的图像增强技术

改變圖像的亮度

我們使用 GammaContrast 通過縮放像素值來調整圖像亮度。在 gamma =(0.5,2.0)范圍內的值似乎是明智的。我們也可以使用 SigmoidContrast 或 LinearContrast 來更改圖像的亮度

  1. image = imageio.imread(“.\img Aug\car2.jpeg”) 
  2.  
  3. contrast=iaa.GammaContrast(gamma=2.0
  4.  
  5. contrast_image =contrast.augment_image(image) 
  6.  
  7. ia.imshow(contrast_image) 

Python中的图像增强技术

縮放圖像

我們可以使用縮放來放大或縮小圖像。我們已將圖像縮放到圖像高度 / 寬度的 150%至 80%。我們可以獨立縮放每個軸

Python中的图像增强技术

增強物體檢測

我們繪制邊界框以進行對象檢測。當我們放大圖像時,我們希望包圍盒也相應地更新。

imgaug 支持邊界框。當我們旋轉,剪切或裁剪圖像時,對象周圍的邊界框也會相應更新。

從 imgaug 導入邊界框

  1. from imgaug.augmentables.bbs import BoundingBox, BoundingBoxesOnImage 

初始化原始圖像周圍的邊界框

  1. bbs = BoundingBoxesOnImage([ 
  2.  
  3. BoundingBox(x1=10, x2=520, y1=10, y2=300
  4.  
  5. ], shape=image.shape) 

在原始圖像上方顯示邊框

  1. ia.imshow(bbs.draw_on_image(image, size=2)) 

Python中的图像增强技术

在下面的代碼中,我們使用 translate_percentage 移動圖像,擴大邊界框并將其應用于圖像上

  1. move=iaa.Affine(translate_percent={"x"0.1}, scale=0.8
  2.  
  3. image_aug, bbs_aug = move(image=image, bounding_boxes=bbs) 
  4.  
  5. ia.imshow(bbs_aug.draw_on_image(image_aug, size=2)) 

Python中的图像增强技术

應用圖像增強后在圖像外部處理邊界框

邊框有時可能會超出圖像,因此我們需要其他代碼來處理這種情況

我們旋轉圖像,并嘗試在對象周圍繪制邊框

  1. rotate_bb=iaa.Affine(rotate=(-5030)) 
  2.  
  3. image_aug, bbs_aug = rotate_bb(image=image, bounding_boxes=bbs) 
  4.  
  5. ia.imshow(bbs_aug.draw_on_image(image_aug, size=2)) 

Python中的图像增强技术

邊界框的部分在圖像外部。在下面的代碼中,我們將將邊框完全或部分移出圖像

裁剪部分位于外部的邊界框,使其完全位于圖像內部

我們創建一個 padding 函數,以 1 像素的白色邊框和 1 像素的黑色邊框填充圖像:

  1. def pad(image, by): 
  2.  
  3. image_border1 = ia.pad(image, top=1, right=1, bottom=1, left=1
  4.  
  5. mode="constant", cval=255
  6.  
  7. image_border2 = ia.pad(image_border1, top=by-1, right=by-1
  8.  
  9. bottom=by-1, left=by-1
  10.  
  11. mode="constant", cval=0
  12.  
  13. return image_border2 

然后,我們在圖像上繪制邊界框。我們首先將圖像平面擴展 BORDER 像素,然后標記圖像平面內的邊界框

  1. def draw_bbs(image, bbs, border): 
  2.  
  3. GREEN = [02550
  4.  
  5. ORANGE = [2551400
  6.  
  7. RED = [25500
  8.  
  9. image_border = pad(image, border) 
  10.  
  11. for bb in bbs.bounding_boxes: 
  12.  
  13. if bb.is_fully_within_image(image.shape): 
  14.  
  15. color = GREEN 
  16.  
  17. elif bb.is_partly_within_image(image.shape): 
  18.  
  19. color = ORANGE 
  20.  
  21. else
  22.  
  23. color = RED 
  24.  
  25. image_border = bb.shift(left=border, top=border) 
  26.  
  27. .draw_on_image(image_border, size=2, color=color) 
  28.  
  29. return image_border 

現在,我們對圖像應用相同的旋轉并繪制邊界框

  1. rotate=iaa.Affine(rotate=(-5030)) 
  2.  
  3. image_aug, bbs_aug = rotate(image=image, bounding_boxes=bbs) 
  4.  
  5. image_after = draw_bbs(image_aug, bbs_aug.remove_out_of_image().clip_out_of_image(), 100
  6.  
  7. ia.imshow(image_after) 

Python中的图像增强技术   

 

責任編輯:張燕妮 來源: AI前線
相關推薦

2022-10-25 16:36:03

機器學習深度學習數據集

2023-03-09 15:25:49

2023-08-23 10:35:11

2018-05-25 12:18:02

webhtml5javascript

2016-12-01 13:44:19

iosandroid

2016-12-01 14:23:32

iosandroid

2024-10-08 15:42:45

2022-09-21 10:50:43

pickledillPython

2023-09-27 08:51:52

PythonOCR技術

2025-01-20 08:00:00

圖像增強深度學習AI

2022-11-03 16:31:08

語音智能語音識別

2017-09-04 15:43:00

深度學習神經網絡徑向變換

2023-12-01 10:51:00

LoRaWAN醫療保健

2022-05-13 12:46:06

開源深度學習技術

2023-06-08 14:35:48

AI語音

2013-11-22 17:42:14

SAP中國商業同略會

2023-09-20 15:53:59

物聯網旅游

2022-02-28 13:56:27

PET隱私數據保護

2022-08-10 11:10:35

AR數字信息

2021-06-03 19:13:06

MySQLJson數據
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产日韩欧美一区 | 欧美激情在线播放 | 国产精品一区二区三区在线 | 国产亚洲精品精品国产亚洲综合 | 7799精品视频天天看 | 午夜免费网| 国产欧美精品 | 国产黄色网址在线观看 | 麻豆精品一区二区三区在线观看 | 久久夜色精品国产 | 一区亚洲 | 91视频进入 | 日韩毛片中文字幕 | 亚洲国产成人久久综合一区,久久久国产99 | 97超碰免费| 羞羞视频网站免费看 | 欧美成人综合 | 日韩一区二区精品 | 99精品免费久久久久久久久日本 | 91精品在线看 | 国产激情一区二区三区 | va精品| 日韩乱码av| 日本超碰在线 | 亚洲精品在线免费 | 亚洲视频一区在线 | 日本人麻豆| 欧美xxxx性| 欧美一级片免费看 | 成人av免费看 | 亚洲成人精品免费 | 三级视频网站 | 精品无码久久久久国产 | 亚洲福利视频一区二区 | 中文字幕不卡在线88 | 久久国产麻豆 | 免费色网址 | www久久国产 | 日韩欧美国产成人一区二区 | 午夜av电影| 日韩欧美国产一区二区 |