Introducción a Computer Vision

1

¿Qué es la visión computarizada y cuáles son sus tipos?

Detección de objetos

2

Introducción a object detection: sliding window y bounding box

3

Generando video de sliding window

4

Introducción a object detection: backbone, non-max suppression y métricas

5

Visualización de IoU en object detection

6

Tipos de arquitecturas en detección de objetos

7

Arquitecturas relevantes en object detection

8

Utilizando un dataset de object detection

9

Carga de dataset de object detection

10

Exploración del dataset de object detection

11

Visualización de bounding boxes en el dataset de object detection

12

Aumentado de datos con Albumentation

13

Implementando Albumentation en object detection

14

Visualizando imágenes con aumentado de datos

15

Utilizando un modelo de object detection pre-entrenado

16

Probar detección de objetos con modelo pre-entrenado

17

Fine-tuning en detección de objetos

18

Fine-tuning en detección de objetos: carga de datos

19

Fine-tuning en detección de objetos: data augmentation

20

Fine-tuning en detección de objetos: entrenamiento

21

Fine-tuning en detección de objetos: visualización de objetos

Quiz: Detección de objetos

Segmentación de objetos

22

Introduciendo la segmentación de objetos

23

Tipos de segmentación y sus arquitecturas relevantes

24

¿Cómo es un dataset de segmentación?

25

Utilizando un dataset de segmentación de objetos

26

Visualización de nuestro dataset de segmentación

27

Creando red neuronal U-Net para segmentación

28

Entrenando y estudiando una red de segmentación

29

Generando predicciones con modelo de object segmentation

Quiz: Segmentación de objetos

Un paso más allá

30

El estado de la cuestión en computer vision

31

Comparte tu proyecto de detección y segmentación de objetos para conducción autónoma y certifícate

No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Aprende Inglés, Programación, AI, Ciberseguridad y mucho más.

Antes: $249

Currency
$209
Suscríbete

Termina en:

3 Días
20 Hrs
51 Min
16 Seg

Visualizando imágenes con aumentado de datos

14/31
Recursos

Aportes 4

Preguntas 0

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Data augmentation

Estuve leyendo la documentación de albumentations y conseguí las siguientes transfomaciones:

El código es el siguiente:

# Definición de transformaciones:
transforms = A.Compose([
    A.HorizontalFlip(p=0.3),
    A.RandomBrightnessContrast(p=0.3),
    A.ChannelShuffle(p=0.3),
    A.CLAHE(p=0.3),
    A.ColorJitter(brightness=(0, 1), contrast=(0, 1), saturation=(0, 1), hue=(-0.3, 0.3), p=0.3),
    A.FancyPCA(p=0.3, alpha=0.2, always_apply=False),
    A.GaussNoise(p=0.3),
    A.InvertImg(p=0.3),
    A.MultiplicativeNoise(p=0.3),
    A.PixelDropout(p=0.3)
], bbox_params = A.BboxParams(format='albumentations'))
# Creación de imágenes tranformadas:
transformed_images = []
transformed_bboxes = []

for i in range(len(transforms)):
  t_im = transforms(image=train_images[0], bboxes=bbox)
  t_bbox = (list(t_im['bboxes'][0])[:-1])
  t_bbox = [t_bbox[1], t_bbox[0], t_bbox[3], t_bbox[2]]
  transformed_images.append(t_im)
  transformed_bboxes.append(t_bbox)
# Visualzación de data augmentation
plt.figure(figsize=(10, 3))

for idx in range(0, 10):
  bboxes = list(gt_boxes.values())[idx]
  dummy_score = np.ones(shape=[bboxes.shape[0]], dtype=np.float32)
  plt.subplot(2, 5, idx+1)
  plt.axis('off')
  plot_detections(
      transformed_images[idx]['image'],
      np.array([transformed_bboxes[idx]]),
      np.ones(shape=[bboxes.shape[0]], dtype=np.int32),
      dummy_score,
      category_index
  )

plt.suptitle('Transformed images')
plt.savefig('transformed_images.png')
plt.show()

Aquí les dejo la documentación de Transformeciones con Albumentations
Saludos 😃

Debo admitir que fue un poco complejo implementar este código para utilizar multiples objetos como había hecho en clases anteriores. Pero si te interesa llegar al siguiente ejemplo:

Puedes leer mis apuntes personales Aumentando Datos con Albumentation

Ahí encontraras una profunda explicación sobre las últimas 3 clases, ejemplo en código y explicación del mismo. 😄

Para evitar repetir segmentos de código, al momento de mostrar las transformaciones, usé la siguiente función:

def _plot_tranform(transform_dict, title='Transformed image'):
  '''
  Plot the first bounding box of a transformed image

  transform_dict: Dictionary whose keys are:
  
      - 'image': numpy array with transformed image.

      - 'bboxes': list with all bounding boxes in 
                  'albumentation' format and class name appended.

                  [(xmin, ymin, xmax, ymax, label_name), (...), (...)]
  '''
  # Get the first bounding box from tranformed image
  # 'bboxes': [(xmin, ymin, xmax, ymax, label_name), ...]
  bbox1_aug = transform_dict['bboxes'][0][:-1]

  # Change bbox format to: [ymin, xmin, ymax, xmax]
  bbox1_aug = [bbox1_aug[1], bbox1_aug[0], bbox1_aug[3], bbox1_aug[2]]

  # Visualize
  plt.figure()
  _plot_detections(image=transform_dict['image'],
                  bboxes=np.array([bbox1_aug]),
                  classes=np.ones(shape=[1], dtype=np.int32),
                  scores=np.ones(shape=[1], dtype=np.float32),
                  category_index=category_index)
  plt.title(title)
  plt.show()

De esta manera cada vez que sed quiera visualizar el primer bbox de una imagen transformada se llama la funcion de esta manera:

# Plot first transformation
_plot_tranform(transform_dict=img_aug1_dict,
               title='Transformed image (aug1)')

Esta funcion permite mostrar la imagen transformada con multiples objetos:

def plot_transformed_image(transformed_image):
    transformed_bboxes_1 = []
    transformed_labels_1 = []
    for bbox in transformed_image["bboxes"]:
        label = bbox[-1]
        transformed_labels_1.append(label)
        bbox = list(bbox[:-1])
        bbox = [bbox[1], bbox[0], bbox[3], bbox[2]]
        transformed_bboxes_1.append(bbox)
    
    plt.figure()
    plot_detections(
        transformed_image["image"],
        np.array(transformed_bboxes_1),
        np.array(transformed_labels_1),
        dummy_scores,
        category_index
    )

Esta es la continuacion de mi comentario anterior.