Logo de CursoIA
CursoIA Curso de Inteligencia Artificial

Redes convolucionales (CNN), Unidad 2 — Convolución explicada intuitivamente, 2.1 — Filtros y kernels ·

Qué aprende un filtro

Qué aprende un filtro

Introducción

Las redes convolucionales (CNNs) son fundamentales para la visión por computador y otros campos de aplicación avanzada, como el reconocimiento de patrones en imágenes. Las CNNs se basan en la utilización de filtros o kernels, que son pequeñas matrices que recorren las imágenes de entrada para extraer características relevantes. En esta unidad, nos centramos específicamente en entender qué aprende cada filtro y cómo este conocimiento puede ayudarnos a mejorar nuestras aplicaciones de visión por computador.

Explicación principal con ejemplos

Un filtro en una CNN es básicamente una matriz pequeña que se desplaza sobre la imagen de entrada para detectar ciertas características. La operación de convolución se realiza multiplicando cada elemento del kernel con el correspondiente pixel en la imagen, y luego sumando todos estos productos.

Ejemplo práctico

Imagina una imagen en escala de grises (una sola canal) donde cada punto representa la intensidad luminosa de un píxel. Podemos definir un kernel simple como:

kernel = np.array([[1, 0, -1],
                   [2, 0, -2],
                   [1, 0, -1]])

Este kernel está diseñado para detectar bordes horizontales en la imagen.

Proceso de convolución

Para aplicar el kernel a una imagen de entrada I, realizamos la siguiente operación:

result = np.sum(kernel * I)

En este ejemplo, si I es una matriz con valores que representan la intensidad de los píxeles, la suma del producto de cada elemento del kernel con el correspondiente píxel de la imagen nos da un valor numérico en el feature map. Esto se repite para todos los posibles desplazamientos del kernel sobre la imagen.

Ejemplo visual

Imaginemos una pequeña porción de la imagen con valores como sigue:

I = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]

Aplicando nuestro kernel a este fragmento:

result = (1*1) + (0*2) + (-1*3) + 
         (2*4) + (0*5) + (-2*6) +
         (1*7) + (0*8) + (-1*9)

El resultado sería:

result = 1 - 3 + 8 - 12 + 7 - 9 = -6

Este valor se coloca en la posición correspondiente del feature map.

Tipos de kernels

Existen muchos tipos diferentes de kernels diseñados para detectar características específicas:

  • Bordes: Como el ejemplo anterior, buscando cambios bruscos en los valores de intensidad.
  • Ruido suavizado (Gaussian Blur): Usado comúnmente para reducir el ruido y suavizar las imágenes.
  • Detector de color: Para detectar ciertas bandas del espectro como azul, verde o rojo.

Errores típicos / trampas

  1. Kernel too small: Un kernel muy pequeño puede no capturar la estructura necesaria para detección de características importantes.
  2. No normalizar los kernels: Si los valores en el kernel no están correctamente escalados, pueden distorsionar la salida del feature map.
  3. Mala elección de las operaciones de pooling: Los kernels y las operaciones de pooling deben estar equilibrados para evitar pérdida de información crucial.

Checklist accionable

  1. Definir claramente el objetivo: ¿Qué características busca tu kernel? Esto puede ser bordes, cantos, o texturas específicas.
  2. Normalizar los valores del kernel: Asegúrate de que los valores estén en una escala adecuada para no distorsionar la salida.
  3. Probar con kernels pequeños y grandes: Comprueba cómo afectan a las características detectadas en diferentes tamaños.
  4. Usa operaciones de pooling adecuadamente: Equilibra entre reducir la resolución y mantener la información esencial.
  5. Validar los resultados: Analiza visualmente el feature map para asegurarte de que estás captando las características correctas.

Siguientes pasos

  1. Experimenta con diferentes tipos de kernels: Aprende a detectar bordes, cantos y texturas en imágenes.
  2. Incorpora operaciones de pooling para reducir resolución: Esto te ayudará a mantener el equilibrio entre detección de características y velocidad del modelo.
  3. Usa técnicas avanzadas como Leaky ReLU o GELU para mejorar la funcionalidad de tus modelos.

Comprender qué aprenden los filtros en tu CNN es crucial para lograr mejores resultados en tus proyectos de visión por computador.

Contacto

Indica tu objetivo (ChatGPT, RAG, agentes, automatización) y tu stack (web/backend).