Las redes neuronales convolucionales convierten imágenes en matrices numéricas para detectar bordes, formas y patrones. Aquí aprendes cómo funciona una convolución usando álgebra lineal, tensores y PyTorch, ideal si trabajas en visión por computadora o deep learning.
Si alguna vez te preguntaste cuándo ibas a usar álgebra lineal en la vida real, este es el momento. Vamos a representar una imagen como un sistema de números y a operar sobre ella para extraer información visual.
Por qué usar Google Colab y PyTorch para procesar imágenes
Para escribir el código vas a trabajar en Google Colab, un entorno gratuito que te da CPU y GPU sin instalar nada en tu equipo. Solo conectas el notebook y empiezas a programar en Python [0:18].
La librería principal aquí es PyTorch, que te permite hacer operaciones matemáticas sobre imágenes y construir tus propias redes neuronales convolucionales. Su estructura central es el tensor, una forma flexible de expresar escalares, vectores, matrices e imágenes completas.
¿Qué es un tensor en PyTorch? Es una estructura de datos que generaliza escalares, vectores y matrices. Puede tener una, dos o más dimensiones, y es el tipo de dato que PyTorch usa para procesar imágenes y entrenar modelos.
Cómo se representa una imagen como tensor
Una imagen no es más que números organizados en dimensiones. Cuando importas torch con import torch, puedes crear distintos tipos de tensores según lo que necesites representar [1:00].
- Un escalar es un solo número envuelto en la estructura tensor.
- Un vector es una lista de números, útil para representar características.
- Una matriz dos por dos guarda valores en filas y columnas.
- Un tensor tridimensional representa una imagen, por ejemplo de 64 por 64 píxeles con tres capas.
Esas tres capas corresponden a los canales RGB, y los valores suelen ir de 0 a 255 o normalizados entre 0 y 1. Así PyTorch entiende exactamente con qué tipo de dato estás trabajando.
Cómo se calcula el producto punto entre tensores
El producto punto es una de las operaciones más usadas y la base de todo lo que viene después. Si tienes el vector A igual a [1, 2, 3] y el vector B igual a [4, 5, 6], al ejecutar el producto punto obtienes 32 [2:10].
Ese número sale de multiplicar uno por cuatro, más dos por cinco, más tres por seis. Suma simple, pero es la pieza que hace funcionar a las convoluciones.
Qué es una convolución y cómo detecta bordes en una imagen
Una convolución es la suma de productos punto locales aplicados sobre una imagen. Esa operación es lo que permite pasar de una foto original a una versión donde solo se ven, por ejemplo, los bordes verticales [2:45].
Imagina una letra P representada con ceros y unos, donde cero es negro y uno es blanco. Tomas un píxel y sus vecinos inmediatos, formas una pequeña matriz local y la multiplicas por un kernel.
¿Qué es un kernel en una convolución? Es una matriz pequeña que define qué característica vas a detectar. Según los valores que contenga, puede resaltar bordes, esquinas, texturas u otros patrones dentro de la imagen.
Un ejemplo clásico es el kernel Sobel, diseñado específicamente para detectar bordes verticales. Cuando aplicas ese kernel sobre cada fragmento de la imagen, obtienes una nueva matriz que representa las intensidades de los bordes detectados.
Por qué se recorre la imagen completa
La convolución no se aplica solo a un pedacito. Tienes que deslizar el kernel por toda la imagen, fragmento por fragmento, para obtener una representación numérica completa que muestre dónde están las características que buscas [3:40].
El resultado es una nueva matriz, más pequeña o del mismo tamaño según la configuración, donde cada valor te dice qué tan fuerte es la característica en esa zona de la imagen original.
Cómo se estructura un tensor de imágenes en PyTorch
Cuando trabajas con redes neuronales, los tensores de imágenes suelen tener cuatro dimensiones. Esta forma estándar es lo que el modelo espera recibir como entrada [4:30].
- Ancho y alto: el tamaño en píxeles, por ejemplo 64 por 64.
- Canales: tres si es una imagen a color RGB, uno si es en escala de grises.
- Batch size: la cantidad de imágenes que procesas a la vez.
Si trabajas con una sola imagen, el batch size es uno. Si entrenas un modelo con lotes de imágenes, ese número corresponde al tamaño del lote. Así, una imagen RGB de 64 por 64 procesada individualmente se ve como (1, 3, 64, 64) o (64, 64, 3, 1) según la convención.
La convolución, entonces, no es una enfermedad ni un misterio matemático: es la operación que te deja resaltar lo importante dentro de una imagen. ¿Qué tipo de características te gustaría detectar primero en tu propio proyecto? Déjalo en los comentarios.