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

Utilizando un dataset de segmentación de objetos

25/31
Recursos

Aportes 2

Preguntas 0

Ordenar por:

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

Con endswith() es más sencillo el código en el filtrado de los archivos mask:

dataset_path = './'
filenames = os.listdir(dataset_path)
filenames.sort()

image_list = []
mask_list = []

for filename in filenames:
    if len(filename.split('.')) > 1 and filename.endswith('png'):
        if filename.split('.')[0].endswith('L'):
            mask_list.append(dataset_path + filename)
        else:
            image_list.append(dataset_path + filename)
Trabajar con un dataset de segmentación de objetos implica seguir una serie de pasos para preparar y utilizar adecuadamente los datos en un modelo de segmentación. Aquí te explico el flujo general de cómo trabajar con un dataset de segmentación, desde la carga hasta el entrenamiento del modelo: \--- \### 1. \*\*Preparación y Carga del Dataset\*\* \- \*\*Formato del Dataset\*\*: Asegúrate de que el dataset está en un formato compatible con tu modelo o framework (por ejemplo, TensorFlow, PyTorch). \- \*\*División del Dataset\*\*: Divide el dataset en subconjuntos de entrenamiento, validación y prueba. Esto permite evaluar el rendimiento del modelo en datos que no ha visto durante el entrenamiento. \- \*\*Carga de Imágenes y Máscaras\*\*: Las imágenes de entrada y las máscaras de segmentación se cargan en pares, asegurando que cada máscara corresponde a su imagen original. \### 2. \*\*Preprocesamiento\*\* \- \*\*Redimensionamiento\*\*: Es posible que necesites redimensionar las imágenes y máscaras a un tamaño estándar para facilitar el entrenamiento (por ejemplo, 256x256 o 512x512). \- \*\*Normalización de Imágenes\*\*: Escala los valores de píxeles de la imagen a un rango adecuado para el modelo (por ejemplo, 0-1). \- \*\*Codificación de Máscaras\*\*: Las máscaras deben estar en un formato que el modelo pueda interpretar, como enteros que representen clases. \- \*\*Aumento de Datos (Data Augmentation)\*\*: Aplica transformaciones como rotación, volteo, recorte, y cambios de brillo para aumentar la variedad de los datos de entrenamiento. Herramientas como Albumentations o torchvision son útiles para estos fines. \### 3. \*\*Configuración del Modelo\*\* \- Selecciona una arquitectura adecuada para segmentación, como \*\*U-Net\*\*, \*\*Mask R-CNN\*\*, \*\*DeepLabV3\*\*, o \*\*FCN (Fully Convolutional Network)\*\*. Cada una de estas arquitecturas tiene su enfoque particular y es útil para diferentes tipos de segmentación. \- Si tienes un dataset limitado, puedes optar por un \*\*modelo pre-entrenado\*\* y hacer \*\*fine-tuning\*\* en tu dataset específico para mejorar el rendimiento. \### 4. \*\*Entrenamiento del Modelo\*\* \- \*\*Configura los Hiperparámetros\*\*: Define el número de épocas, el tamaño del lote, la tasa de aprendizaje, y la función de pérdida. Para segmentación, se utiliza comúnmente una variante de la \*\*cross-entropy\*\* adaptada a problemas de segmentación. \- \*\*Inicia el Entrenamiento\*\*: Usa tus imágenes y máscaras para entrenar el modelo. Supervisa el desempeño del modelo en el conjunto de validación. \- \*\*Ajuste de Hiperparámetros\*\*: Según los resultados en el conjunto de validación, ajusta los hiperparámetros para mejorar la precisión del modelo. \### 5. \*\*Evaluación del Modelo\*\* \- \*\*Métricas de Segmentación\*\*: Evalúa el modelo utilizando métricas como \*\*IoU (Intersection over Union)\*\*, \*\*Mean IoU (mIoU)\*\*, \*\*Accuracy\*\*, y \*\*Dice Coefficient\*\*. Estas métricas ayudan a medir la precisión del modelo en cada clase y en toda la imagen. \- \*\*Evaluación Visual\*\*: Observa visualmente los resultados para asegurarte de que el modelo está segmentando adecuadamente los objetos. \### 6. \*\*Predicción con Nuevas Imágenes\*\* \- \*\*Inferencia en Imágenes Nuevas\*\*: Usa el modelo para predecir máscaras en imágenes que no fueron parte del entrenamiento. Esto te permite ver cómo el modelo generaliza a nuevos datos. \- \*\*Post-Procesamiento (opcional)\*\*: Algunas veces es útil aplicar técnicas de post-procesamiento, como suavizado o eliminación de segmentos pequeños, para mejorar la calidad de la segmentación. \--- \### Ejemplo de Implementación en PyTorch Un ejemplo simple de cómo puedes cargar y procesar un dataset de segmentación en PyTorch: ```python import torch import torchvision.transforms as T from torch.utils.data import Dataset, DataLoader from PIL import Image import numpy as np class SegmentationDataset(Dataset): def \_\_init\_\_(self, image\_paths, mask\_paths, transform=None): self.image\_paths = image\_paths self.mask\_paths = mask\_paths self.transform = transform def \_\_len\_\_(self): return len(self.image\_paths) def \_\_getitem\_\_(self, idx): image = Image.open(self.image\_paths\[idx]).convert("RGB") mask = Image.open(self.mask\_paths\[idx]) if self.transform: image = self.transform(image) mask = torch.from\_numpy(np.array(mask)).long() return image, mask \# Ejemplo de uso: image\_paths = \["path/to/image1.jpg", "path/to/image2.jpg"] mask\_paths = \["path/to/mask1.png", "path/to/mask2.png"] transform = T.Compose(\[ T.Resize((256, 256)), T.ToTensor() ]) dataset = SegmentationDataset(image\_paths, mask\_paths, transform=transform) dataloader = DataLoader(dataset, batch\_size=2, shuffle=True) \# Entrenamiento con el dataloader for images, masks in dataloader: \# Aquí puedes pasar images y masks al modelo pass ``` Este flujo ayuda a estructurar el proceso de entrenamiento y a preparar un modelo de segmentación adecuado para diversas aplicaciones, desde segmentación médica hasta visión en automóviles autónomos.