in

Técnicas de aumento de datos en Python

Técnicas de aumento de datos en Python

Un adelanto de las técnicas de aumento de datos en Python usando imgaug

Renu Khandelwal

11 de diciembre de 2019·7 min de lectura

¿Qué es el aumento de imagen?

¿Por qué necesitamos el aumento de imagen?

Image Augmentation crea un conjunto rico y diverso de imágenes a partir de un pequeño conjunto de imágenes para clasificación de imágenes, detección de objetos o segmentación de imágenes.

¿Cuándo aplicar el Aumento de imagen?

Aumento sin conexión o preprocesado

Aumento en línea o en tiempo real

Técnicas básicas de aumento de datos

imgaug

Instalando la biblioteca

pip install imgaug
pip install imgaug — upgrade — no-deps

Importar bibliotecas requeridas

import imageio
import imgaug as ia
import imgaug.augmenters as iaa
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.patches as patches
import matplotlib
%matplotlib inline

Visualización de la imagen original

image = imageio.imread(“.car2.jpeg”)
ia.imshow(image)

Imagen original

Rotar la imagen

rotate=iaa.Affine(rotate=(-50, 30))
rotated_image=rotate.augment_image(image)

ia.imshow(rotated_image)
1*meevtzo2zKB2RtJxoEMQ g

Imagen rotada de -50 a 30 grados

Añadiendo ruido a la imagen

gaussian_noise=iaa.AdditiveGaussianNoise(10,20)
noise_image=gaussian_noise.augment_image(image)
ia.imshow(noise_image)
1*r6ZoDptRlKZpathP2jHo6g

Añadiendo ruido gaussiano

Recortando la imagen

crop = iaa.Crop(percent=(0, 0.3)) # crop image
corp_image=crop.augment_image(image)

ia.imshow(corp_image)
1* hDjY iV2W0 LsNI2ZwXFg

recortado un lado de la imagen en un 30%

Cortando la imagen

shear = iaa.Affine(shear=(0,40))
shear_image=shear.augment_image(image)
ia.imshow(shear_image)
1*NbfLw33lTwdsW aSwRBT3g

Imagen cortada de 0 a 45 grados

Voltear la imagen

#flipping image horizontally
flip_hr=iaa.Fliplr(p=1.0)
flip_hr_image= flip_hr.augment_image(image)
ia.imshow(flip_hr_image)
1*fF7QRgVt5lieNnBVtSKtBQ

Voltear la imagen horizontalmente
flip_vr=iaa.Flipud(p=1.0)
flip_vr_image= flip_vr.augment_image(image)
ia.imshow(flip_vr_image)
1*cCQAU v2YtFBoabWHrGKGQ

Voltear la imagen verticalmente

Cambiar el brillo de la imagen

image = imageio.imread(“.img Augcar2.jpeg”)
contrast=iaa.GammaContrast(gamma=2.0)
contrast_image =contrast.augment_image(image)
ia.imshow(contrast_image)

agregando contraste a la imagen

Escalando la imagen

image = imageio.imread("C:Dataimg Augcar2.jpeg")
scale_im=iaa.Affine(scale={"x": (1.5, 1.0), "y": (1.5, 1.0)})
scale_image =scale_im.augment_image(image)
ia.imshow(scale_image)
1*Rm CJXcH9cKYYcvWKkLBBg

escalar la imagen del 150% al 80% de su altura / ancho.

Aumento para la detección de objetos

from imgaug.augmentables.bbs import BoundingBox, BoundingBoxesOnImage
bbs = BoundingBoxesOnImage([
BoundingBox(x1=10, x2=520, y1=10, y2=300)
], shape=image.shape)
ia.imshow(bbs.draw_on_image(image, size=2))
1*QmVN5wbyhhHI9LK 9sD4hQ

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

cuadro delimitador en la imagen aumentada

Manejo de cuadros delimitadores fuera de la imagen después de aplicar el aumento de imagen

rotate_bb=iaa.Affine(rotate=(-50, 30))
image_aug, bbs_aug = rotate_bb(image=image, bounding_boxes=bbs)
ia.imshow(bbs_aug.draw_on_image(image_aug, size=2))
1*75YaOJXbCBBlfVXRULydcA

def pad(image, by):
image_border1 = ia.pad(image, top=1, right=1, bottom=1, left=1,
mode="constant", cval=255)
image_border2 = ia.pad(image_border1, top=by-1, right=by-1,
bottom=by-1, left=by-1,
mode="constant", cval=0)
return image_border2
def draw_bbs(image, bbs, border):
GREEN = [0, 255, 0]
ORANGE = [255, 140, 0]
RED = [255, 0, 0]
image_border = pad(image, border)
for bb in bbs.bounding_boxes:
if bb.is_fully_within_image(image.shape):
color = GREEN
elif bb.is_partly_within_image(image.shape):
color = ORANGE
else:
color = RED
image_border = bb.shift(left=border, top=border)
.draw_on_image(image_border, size=2, color=color)
return image_border
rotate=iaa.Affine(rotate=(-50, 30))
image_aug, bbs_aug = rotate(image=image, bounding_boxes=bbs)
image_after = draw_bbs(image_aug, bbs_aug.remove_out_of_image().clip_out_of_image(), 100)
ia.imshow(image_after)
1*AVLwzHCWl Ory9H4qd4Zog

Referencias:

imgaug – documentación de imgaug 0.3.0

imgaug es una biblioteca para el aumento de imágenes en experimentos de aprendizaje automático. Admite una amplia gama de aumentos …

imgaug.readthedocs.io

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

En el telefono iPhone iPad o iPod

¿Cómo cambiar su cuenta de iCloud de ID de Apple sin perder datos de iPhone o Mac? Guía paso por paso

oracle social share fb 480 2516041

oraclecompra sol