Redes Neuronales Convolucionales (CNN)
Las Redes Neuronales Convolucionales (CNN) son el estándar en visión artificial. Permiten detectar patrones visuales como bordes, texturas, formas y objetos completos. En esta guía aprenderás cómo funcionan, cómo se construyen y cómo se entrenan.
Tabla de contenidos
- Qué es una CNN
- Capas convolucionales
- Filtros y kernels
- Stride y padding
- Pooling
- Arquitectura típica
- Flatten y capas densas
- Ejemplo con Keras
- Ejercicios
1. Qué es una CNN
Una CNN es una red neuronal diseñada para procesar imágenes. Aprende patrones visuales mediante filtros que recorren la imagen.
- Detecta bordes
- Detecta texturas
- Detecta formas
- Detecta objetos completos
2. Capas convolucionales
Una capa convolucional aplica filtros (kernels) sobre la imagen para extraer características.
layers.Conv2D(filters=32, kernel_size=(3,3), activation='relu')
3. Filtros y kernels
Los filtros son pequeñas matrices que recorren la imagen detectando patrones.
- 3×3 (el más común)
- 5×5
- 7×7
4. Stride y padding
Stride: cuántos píxeles avanza el filtro. Padding: si se agregan bordes para mantener el tamaño.
- stride=1 → más detalle
- stride=2 → más velocidad
- padding="same" → conserva tamaño
- padding="valid" → reduce tamaño
5. Pooling
El pooling reduce el tamaño de la imagen y extrae características más robustas.
layers.MaxPooling2D(pool_size=(2,2))
6. Arquitectura típica
- Conv2D
- ReLU
- Pooling
- Conv2D
- ReLU
- Pooling
- Flatten
- Dense
7. Flatten y capas densas
Después de extraer características, la imagen se aplana y se conecta a capas densas.
layers.Flatten()
layers.Dense(64, activation='relu')
layers.Dense(10, activation='softmax')
8. Ejemplo completo con Keras
import tensorflow as tf
from tensorflow.keras import layers
model = tf.keras.Sequential([
layers.Conv2D(32, (3,3), activation='relu', input_shape=(28,28,1)),
layers.MaxPooling2D((2,2)),
layers.Conv2D(64, (3,3), activation='relu'),
layers.MaxPooling2D((2,2)),
layers.Flatten(),
layers.Dense(64, activation='relu'),
layers.Dense(10, activation='softmax')
])
model.compile(
optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy']
)
model.fit(X_train, y_train, epochs=10)
model.evaluate(X_test, y_test)
9. Ejercicios
- Define qué es una CNN.
- Explica qué es un filtro.
- ¿Qué es el pooling?
- Escribe una arquitectura CNN básica.
- Explica qué hace la capa Flatten.
# pista filtro
"Matriz que detecta patrones visuales."
# pista flatten
"Convierte la imagen en un vector."