**¿Qué es una red neuronal convolucional? Guía para ingenieros**

¿Qué es una red neuronal convolucional? Guía para ingenieros
Una Red Neuronal Convolucional (CNN) es un modelo de aprendizaje profundo diseñado para datos visuales como imágenes, vídeos y, a veces, incluso archivos de audio.
Las CNN han transformado campos como la visión por ordenador (https://www.ibm.com/topics/computer-vision), el análisis y procesamiento de imágenes (https://www.v7labs.com/blog/image-processing-guide), la detección de objetos (https://en.wikipedia.org/wiki/Object_detection) e incluso el procesamiento del lenguaje natural (PLN) (https://www.ibm.com/topics/natural-language-processing).
Las redes neuronales tradicionales como MLP (Multi-Layer Perceptron) o Fully Connected Networks tratan los datos de imagen como [vectores] planos(https://zilliz.com/learn/what-is-vector-database), lo que puede resultar limitante cuando se trata de la información espacial presente en los datos visuales. Esto puede dar lugar a una precisión deficiente debido a suposiciones erróneas (sesgo inductivo).
Las CNN abordan estos problemas preservando la estructura de la imagen, como la conectividad local y el contenido de los píxeles de los datos de la imagen, lo que las hace eficientes en el reconocimiento de patrones.
Este post destaca las ventajas de las CNN, explica su arquitectura y ofrece un ejemplo sencillo de diseño de un modelo CNN.
Razones clave para utilizar una CNN
Las CNN destacan en la extracción de características significativas a partir de datos visuales sin procesar, superando a las redes neuronales tradicionales. Las razones para usar una CNN incluyen:
Compartición de parámetros**: una CNN comparte el mismo conjunto de parámetros en diferentes regiones de entrada, lo que resulta útil para identificar eficazmente los patrones ocultos en datos de alta dimensión.
Reducción del número de parámetros**: las CNN utilizan la técnica de agrupación y convolución, que reduce significativamente el número de parámetros en comparación con las redes totalmente conectadas.
Aprendizaje de características jerárquicas**: una CNN imita la estructura jerárquica del sistema visual humano.
Las CNN superan sistemáticamente a las redes neuronales tradicionales en tareas como la detección de objetos, el procesamiento de imágenes, el reconocimiento del habla y la segmentación de imágenes. Tenga en cuenta que los últimos avances en visión por ordenador han introducido también [Transformadores] convolucionales y no convolucionales (https://en.wikipedia.org/wiki/Transformer_(machine_learning_model)).
Ventajas y desventajas de las redes neuronales convolucionales
Aunque las CNN han cambiado las reglas del juego de la visión por ordenador, debemos conocer tanto sus pros como sus contras. Vamos a sumergirnos en las ventajas y desventajas de las CNN:
Convolutional Neural Network Ventajas:
- Detección de patrones y características: Las CNN son excelentes para detectar patrones y características en imágenes, vídeos y señales de audio. Su estructura jerárquica les permite aprender características complejas a partir de datos brutos.
- Invariabilidad a las transformaciones: Las CNN son invariables a la traslación, la rotación y la escala. Esto significa que pueden reconocer objetos aunque estén en posiciones, orientaciones o tamaños diferentes en una imagen.
- Extracción automática de características: Las CNN permiten un entrenamiento de principio a fin, sin necesidad de extracción manual de características. La red aprende a encontrar características relevantes directamente a partir de los datos de entrada sin procesar.
- Escalabilidad y precisión: Las CNN pueden manejar grandes cantidades de datos y son precisas en tareas complejas. A mayor cantidad de datos, su rendimiento suele mejorar.
Desventajas de las redes neuronales convolucionales:
Coste computacional: Entrenar CNNs es caro computacionalmente y requiere mucha memoria. Su implementación puede resultar complicada si no se dispone de hardware especializado, como las GPU.
- Sobreajuste: Si no se les proporcionan suficientes datos o [técnicas de regularización] adecuadas (https://zilliz.com/learn/understanding-regularization-in-nueral-networks), las CNN pueden sobreajustarse. Esto significa que funcionarán bien con los datos de entrenamiento, pero no generalizarán a nuevos datos no vistos.
Requisitos de datos: Las CNN necesitan grandes cantidades de datos etiquetados para entrenarse. En dominios en los que los datos etiquetados son escasos o caros de obtener, esto puede suponer una gran limitación.
- Interpretabilidad: Es difícil interpretar lo que ha aprendido una CNN. La naturaleza de "caja negra" de los modelos de aprendizaje profundo dificulta la comprensión del razonamiento que hay detrás de sus predicciones, lo que puede ser un problema en aplicaciones sensibles.
Comprender estas ventajas y desventajas es crucial a la hora de decidir si utilizar CNN para una tarea concreta y a la hora de diseñar e implementar soluciones basadas en CNN.
Técnicas de regularización habituales en las CNN
Como hemos mencionado en las desventajas, las CNN pueden ser propensas a sobreajustarse, especialmente cuando trabajan con datos limitados. Las técnicas de regularización se utilizan para evitar que las CNN sobreajusten los datos de entrenamiento, de modo que el modelo pueda generalizar mejor a los datos no vistos. Estas son algunas de las técnicas de regularización más utilizadas en las CNN:
Descartar: Esta técnica "elimina" aleatoriamente (es decir, pone a cero) algunas características de salida de la capa durante el entrenamiento. El abandono obliga a la red a aprender características más robustas que no dependan de una sola neurona. De este modo, la red se vuelve menos sensible a los pesos específicos de las neuronas y mejora la generalización. Durante las pruebas se utilizan todas las neuronas, pero sus salidas se reducen para compensar las neuronas que faltan durante el entrenamiento.
Regularización L1: También conocida como Regularización Lasso, la regularización L1 añade un término de penalización a la función de pérdida que es proporcional al valor absoluto de los pesos. Esta técnica fomenta la dispersión en el modelo empujando algunos pesos a cero. La regularización L1 es útil cuando se desea crear un modelo más simple eliminando las características menos importantes.
Regularización L2: También conocida como Regularización Ridge, la regularización L2 añade un término de penalización a la función de pérdida que es proporcional al cuadrado de los pesos. Esta técnica desincentiva los pesos grandes y distribuye los valores de los pesos de forma más uniforme. La regularización L2 no da lugar a modelos dispersos como L1, pero puede ayudar a reducir el impacto de las características menos relevantes.
Tanto L1 como L2 pueden reducir el número de pesos y hacer que la red sea más eficiente. La elección entre L1 y L2 (o una combinación de ambas, conocida como regularización de red elástica) depende del problema y del conjunto de datos.
Estas técnicas de regularización funcionan cuando se utilizan correctamente, resuelven uno de los mayores problemas actuales en el aprendizaje profundo y automático.
ArquitecturaCNN y cómo funciona
Una CNN tiene grandes capacidades, lo que permite a estas redes encontrar patrones ocultos y descifrar datos visuales con una precisión excepcional.
El sistema neuronal humano tiene varias capas, y cada una es responsable de realizar una función única. Las CNN tienen una arquitectura similar, y cada capa extrae características diferentes de la imagen de entrada. A continuación se explican detalladamente todas las capas que intervienen en la arquitectura de las CNN.
Las primeras capas son capas de convolución, que se encargan de extraer las características básicas de la imagen, como los bordes y la forma.
Las siguientes capas son capas de agrupación, que son la capa de salida responsable de reducir el tamaño de los mapas de características.
Finalmente, la última capa es la capa completamente conectada (FC), que se encarga de clasificar la imagen en una de las categorías dadas.
Casi todas las arquitecturas convolucionales puras modernas tienen sólo una capa de agrupación global al final, seguida de una capa totalmente conectada.
Capa de convolución
La capa de convolución es el núcleo de una CNN, diseñada para encontrar patrones distintivos en los datos de entrada. Toma la imagen de entrada y aplica un conjunto de filtros para producir una salida llamada mapa de características. Los filtros son pequeñas matrices de pesos que escanean la imagen de entrada para identificar diferentes patrones. A medida que el filtro se desplaza por la imagen, lo hace en pasos definidos por el stride, es decir, el número de píxeles que el filtro recorre en cada paso. A veces, el relleno se utiliza para controlar el tamaño de la salida añadiendo píxeles adicionales alrededor de la entrada. Existen distintos tipos de relleno, como el válido, el relleno cero (sin relleno), el mismo relleno (el tamaño de salida es igual al de entrada) y el relleno completo (que aumenta el tamaño de salida). Tras la operación de convolución, se aplica una función de activación no lineal, normalmente ReLU (Rectified Linear Unit), para introducir la no linealidad en el modelo.
Más capas convolucionales
Como hemos mencionado antes, otra capa convolucional puede venir después de la primera capa convolucional. Cuando esto sucede, la CNN se vuelve jerárquica ya que las capas posteriores pueden ver los píxeles dentro de los campos receptivos de las capas anteriores. Esta estructura jerárquica permite a las capas ocultas de la red aprender características más complejas a medida que los datos fluyen a través de las capas.
Supongamos que queremos reconocer un rostro humano en una imagen. Una cara es una composición de varios rasgos. Son los ojos, la nariz, la boca, las cejas, etc. Cada rasgo individual de la cara es un patrón de nivel inferior en la red neuronal y la combinación de estos rasgos es un patrón de nivel superior, una jerarquía de rasgos en la corteza visual de la CNN.
En la primera capa convolucional, la red puede aprender a detectar rasgos simples como bordes, curvas y formas básicas. Podrían ser el contorno de los rasgos faciales o el contraste entre distintas partes de la cara.
La segunda capa de clasificación de imágenes puede combinar estas características básicas para reconocer formas más complejas. Por ejemplo, podría detectar formas circulares (posiblemente ojos) o líneas curvas (tal vez el contorno de la boca o las cejas).
En capas posteriores, la red podría empezar a reconocer rasgos faciales completos combinando los patrones de las capas anteriores. Una neurona puede dispararse cuando detecta una estructura similar a un ojo, otra cuando detecta un patrón similar a una nariz.
En las últimas capas, la CNN combinaría todos estos rasgos faciales para reconocer un rostro completo. En esta fase, la red no se limita a detectar rasgos individuales, sino que entiende cómo se relacionan entre sí en el contexto de un rostro.
Por último, las capas convolucionales convierten la imagen en valores numéricos para que la red neuronal pueda interpretar las imágenes de entrada y extraer patrones a varios niveles de abstracción. Este aprendizaje jerárquico de características es uno de los principales puntos fuertes de las CNN en tareas de reconocimiento de imágenes, para comprender objetos complejos y multicomponentes como los rostros.
Capa de agrupamiento
Tras la capa de convolución, a menudo encontramos una capa de agrupación. El propósito de esta capa de agrupamiento (pooling layer downsamples) es reducir el tamaño de los mapas de características preservando al mismo tiempo las características más importantes. Esto ayuda a reducir la complejidad computacional y a controlar el sobreajuste. Existen dos técnicas comunes de pooling: max pooling, que toma el valor máximo de una pequeña región del mapa de características, y average pooling, que toma el valor medio de una pequeña región.
Capa totalmente conectada (FC)
La última capa de una CNN suele ser una capa totalmente conectada que clasifica la salida de la CNN. Esta capa es similar a una capa de red neuronal tradicional, conectándose a todas las neuronas de la capa anterior. Utiliza las características de alto nivel aprendidas por las capas convolucionales para realizar la tarea final de clasificación o regresión.
La arquitectura de las redes neuronales convolucionales.png](https://assets.zilliz.com/The_Architecture_of_Convolutional_Neural_Networks_8263469ad1.png)
Terminología esencial
Cuando se trabaja con CNNs, es importante entender cierta terminología esencial. Una época se refiere a una pasada completa a través de todo el conjunto de datos de entrenamiento. Dropout es una técnica utilizada para evitar el sobreajuste mediante la eliminación aleatoria de neuronas durante el proceso de entrenamiento. La profundidad estocástica es otro método que acorta la red durante el entrenamiento eliminando aleatoriamente bloques residuales.
Pasos-Es el tamaño de paso que da el filtro durante la operación de convolución.
Acolchado-El acolchado en la CNN consiste en añadir ceros alrededor de los bordes de la imagen para preservar su dimensión espacial después de la convolución. Se hace para evitar que la imagen se reduzca y para evitar la pérdida de información después de cada operación de convolución.
Época-Una pasada completa por todo el conjunto de datos de entrenamiento.
Desactivación (regularización)-Técnica para evitar el sobreajuste mediante la eliminación aleatoria de neuronas durante el entrenamiento, lo que obliga a la red a aprender en lugar de depender de más neuronas.
Profundidad estocástica: acorta la red durante el entrenamiento eliminando los bloques residuales de forma aleatoria y omitiendo sus transformaciones mediante conexiones de salto. Mientras tanto, en el momento de la prueba, se utiliza toda la red para hacer predicciones. El resultado es una mejora del error de prueba y una reducción significativa del tiempo de entrenamiento.
Tipos de redes neuronales convolucionales
La historia y el desarrollo de las redes neuronales convolucionales se remontan a varias décadas atrás y son muchos los investigadores que han contribuido a ello. Comprender esta historia le ayudará a entender el estado actual de las CNN.
Base histórica
Kunihiko Fukushima sentó las bases de las CNN en 1980 con su trabajo sobre el "Neocognitrón", una red neuronal artificial jerárquica y multicapa. Este primer modelo podía aprender a reconocer patrones visuales de forma robusta.
Yann LeCun hizo otra importante contribución en 1989 con su trabajo "Backpropagation Applied to Handwritten Zip Code Recognition". LeCun aplicó la retropropagación para entrenar redes neuronales que reconocieran patrones en códigos postales manuscritos. Fue un gran paso hacia las aplicaciones prácticas de las redes neuronales.
LeNet-5: La arquitectura CNN original
LeCun y su equipo siguieron trabajando en ella a lo largo de los años 90 y, finalmente, presentaron LeNet-5 en 1998. LeNet-5 aplicó los principios de trabajos anteriores al reconocimiento de documentos. Se considera la arquitectura CNN original y la base de todos los trabajos futuros.
Evolución de las arquitecturas CNN
Desde LeNet-5, se han desarrollado muchas variantes de arquitecturas CNN. Nuevos conjuntos de datos como MNIST y CIFAR-10 y concursos como ImageNet Large Scale Visual Recognition Challenge (ILSVRC) han impulsado la mayor parte de esta innovación. Algunas de las arquitecturas CNN más destacadas que se han desarrollado son:
AlexNet: Desarrollada por Alex Krizhevsky, Ilya Sutskever y Geoffrey Hinton, AlexNet ganó el ILSVRC 2012. Era más profunda y amplia que las CNN anteriores, utilizaba activaciones ReLU y dropout para la regularización.
VGGNet: Desarrollada por el Visual Geometry Group de Oxford, VGGNet es conocida por su simplicidad y profundidad. Utiliza pequeños filtros convolucionales 3x3 en toda la red.
GoogLeNet (Inception): Desarrollada por Google, introdujo el módulo "Inception" que permite un cálculo más eficiente y redes más profundas.
ResNet: Desarrollado por Microsoft Research, ResNet introdujo conexiones de salto y permitió entrenar redes mucho más profundas (hasta 152 capas en el documento original).
ZFNet: Una mejora sobre AlexNet, ZFNet (llamada así por sus creadores Zeiler y Fergus) ganó ILSVRC 2013 ajustando los hiperparámetros de la arquitectura.
Cada una de estas arquitecturas aportó innovaciones que ampliaron los límites de lo que era posible con las CNN, mejorando el rendimiento en diversas tareas de visión por ordenador.
Cómo diseñar una red neuronal de convolución
Al diseñar una CNN, hay que tomar varias decisiones clave. Entre ellas, elegir el tamaño de la entrada, determinar el número de capas de convolución, seleccionar el tamaño y el número de filtros por capa de entrada, elegir el método de agrupación, decidir el número de capas totalmente conectadas y seleccionar las funciones de activación. Cada una de estas opciones puede influir significativamente en el rendimiento y la eficacia de la red.
**El tamaño de la entrada representa el tamaño de la imagen sobre la que se entrenará la CNN. El tamaño de la entrada debe ser lo suficientemente grande para que la red sea capaz de extraer las características de un objeto que pretende clasificar.
Elegir el número de capas de convolución-Esto determina cuántas características podrá aprender la red. Un mayor número de capas de convolución permite aprender características más complejas, pero el tiempo de cálculo aumenta.
Elegir el tamaño del filtro-El tamaño del filtro, junto con el paso de la convolución, determina el tamaño de las características que se extraerán de las imágenes. Un filtro de mayor dimensión extraerá un mayor número de características.
Elegir el número de filtros por capa-Determina el número de características diferentes que pueden extraerse de una imagen.
**Las dos técnicas de agrupación más comunes son la agrupación máxima y la agrupación media. El pooling máximo toma el valor máximo de una pequeña región del mapa de características, mientras que el pooling medio toma el valor medio de una pequeña región del mapa de características.
**Esto determina el número de clases que la red puede clasificar.
Elegir la función de activación-La función de activación permite el aprendizaje de patrones más complejos a partir del conjunto de datos de imágenes. Para la clasificación binaria, es normal utilizar la función sigmoidea. En el enunciado de un problema de clasificación multiclase, la capa FC utiliza la función de activación softmax. Para introducir la no linealidad en los datos, la gente utiliza sobre todo el GeLU o Swish funciones de activación en estos días.
A continuación se muestra un ejemplo sencillo de implementación de CNN con Python que clasifica las señales de tráfico. Encuentra el conjunto de datos en el sitio web de Kaggle.
Simple implementación de CNN con PyTorch
Para implementar un modelo CNN en Python, utiliza frameworks como PyTorch, TensorFlow, Keras, etc. Estos frameworks proporcionan la implementación de todas las capas necesarias para una CNN.
El proceso comienza con la importación de los módulos necesarios de la siguiente manera:
# dependencias para el cálculo
import pandas como pd
importar numpy como np
# dependencias para la lectura y visualización de imágenes
from cv2 import resize
from skimage.io import imread
import matplotlib.pyplot as plt
matplotlib inline
# dependencia para crear el conjunto de validación
from sklearn.model_selection import train_test_split
# dependencia para evaluar el modelo
from sklearn.metrics import accuracy_score
from tqdm import tqdm
# librerías y módulos PyTorch
import torch
from torch.autograd import Variable
from torch.nn import (Lineal, ReLU, CrossEntropyLoss,
Secuencial, Conv2d, MaxPool2d, Module,
Softmax, BatchNorm2d, Dropout)
from torch.optim import Adam, SGD
Una vez hecho esto, carga el conjunto de datos y las imágenes con el siguiente código:
# carga del conjunto de datos
train = pd.read_csv('Datos/train.csv')
# cargar imágenes de entrenamiento
imagen_entrenamiento = []
for nombre_imagen in tqdm(tren['Ruta']):
# definir la ruta de la imagen
ruta_imagen = 'Datos/' + str(nombre_imagen)
# lectura de la imagen
img = imread(ruta_imagen, as_gray=True)
# redimensionar la imagen
img = resize(img, (28, 28))
# normalizar los valores de los píxeles
img /= 255.0
# convertir el tipo de píxel a float 32
img = img.astype('float32')
# introducir la imagen en la lista
train_img.append(img)
# convertir la lista en un array numpy
train_x = np.array(train_img)
# definir el objetivo
tren_y = tren['ClassId'].valores
train_x.shape
Una vez cargados los datos de entrenamiento, tendrás que crear un conjunto de datos de entrenamiento y validación utilizando el método train_test_split() de sklearn.
# crear conjunto de validación
train_x, val_x, train_y, val_y = train_test_split(train_x, train_y, test_size = 0.1)
# Comprueba las formas de los conjuntos de entrenamiento y validación
(forma_entren_x, forma_entren_y), (forma_val_x, forma_val_y)
También tendrá que cambiar la forma de los datos para el modelo Torch de la siguiente manera:
# conversión de las imágenes de entrenamiento al formato torch
train_x = train_x.reshape(-1, 1, 28, 28)
train_x = torch.from_numpy(train_x)
# convertir el objetivo a formato torch
tren_y = tren_y.astype(int);
tren_y = antorcha.from_numpy(tren_y)
# conversión de las imágenes de validación a formato torch
val_x = val_x.reshape(-1, 1, 28, 28)
val_x = torch.from_numpy(val_x)
# convertir el objetivo a formato torch
val_y = val_y.astype(int);
val_y = antorcha.from_numpy(val_y)
A continuación, defina las diferentes capas de una CNN de la siguiente manera:
clase Red(Módulo):
def __init__(self):
super(Net, self).__init__()
self.cnn_layers = Secuencial(
# Definir una capa de convolución 2D
Conv2d(1, 4, kernel_size=3, stride=1, padding=1),
BatchNorm2d(4),
ReLU(inplace=True),
MaxPool2d(kernel_size=2, stride=2),
# Definir otra capa de convolución 2D
Conv2d(4, 4, kernel_size=3, stride=1, padding=1),
BatchNorm2d(4),
ReLU(inplace=True),
MaxPool2d(kernel_size=2, stride=2),
)
# capa densa final para la predicción
self.linear_layers = Secuencial(
Lineal(4 * 7 * 7, 43)
)
# Definir el pase hacia adelante
def forward(self, x):
x = self.cnn_layers(x)
x = x.view(x.size(0), -1)
x = self.linear_layers(x)
devuelve x
La red CNN anterior tiene dos capas de convolución seguidas de una capa de agrupación máxima con dimensiones espaciales de 2 por 2.
Una capa de aplanamiento puede ayudar a clasificar las capas ocultas de la imagen del signo en las clases respectivas.
A continuación, decidamos el optimizador y la función de pérdida y definamos el procedimiento de entrenamiento.
# definir el modelo
modelo = Red()
# Definir el optimizador
optimizador = Adam(model.parameters(), lr=0.07)
# definir la función de pérdida
criterio = CrossEntropyLoss()
# comprobar si la GPU está disponible
si torch.cuda.is_available():
model = model.cuda()
criterio = criterio.cuda()
print(modelo)
def entrenar(época):
model.train()
tr_loss = 0
# obtener el conjunto de entrenamiento
x_entrenamiento, y_entrenamiento = Variable(entrenar_x), Variable(entrenar_y)
# Obtener el conjunto de validación
x_val, y_val = Variable(val_x), Variable(val_y)
# convertir los datos a formato GPU
if torch.cuda.is_available():
x_train = x_train.cuda()
y_train = y_train.cuda()
x_val = x_val.cuda()
y_val = y_val.cuda()
# Borrar gradientes de los parámetros del modelo
optimizador.cero_grad()
# predicción para el conjunto de entrenamiento y validación
salida_entrenamiento = modelo(x_entrenamiento)
salida_val = modelo(x_val)
# calcular las pérdidas de entrenamiento y validación
pérdida_entrenamiento = criterio(salida_entrenamiento, y_entrenamiento)
pérdida_val = criterio(salida_val, y_val)
pérdidas_entrenamiento.append(pérdidas_entrenamiento)
val_losses.append(perdida_val)
# retropropagación y actualización de los parámetros del modelo
loss_train.backward()
optimizador.paso()
tr_loss = loss_train.item()
if epoch%2 == 0:
# imprimir la pérdida de validación
print('Época : ',época+1, '\t', 'pérdida :', pérdida_val)
Por último, entrena el modelo durante 25 épocas con los datos de entrenamiento de la siguiente manera:
# Definir el número de épocas
n_epocas = 25
# Lista vacía para almacenar las pérdidas de entrenamiento
pérdidas_entrenamiento = []
# Lista vacía para almacenar las pérdidas de validación
val_losses = []
# entrenamiento del modelo
for epoch in range(n_epochs):
train(epoch)
Al final, cada modelo estará ahí para hacer predicciones sobre los datos de prueba. Para aprender más detalles, consulte este blog para cómo escribir CNNs desde cero en PyTorch.
FAQs
¿Cuál es la diferencia entre CNN y Redes Neuronales Profundas?
Una CNN es un tipo de red neuronal que puede procesar datos visuales como imágenes, voz, vídeo, etc., mientras que las redes neuronales profundas (DNNs) son un tipo de red neuronal artificial que puede aprender patrones complejos a partir de datos.
A continuación se exponen las principales diferencias entre las CNN y las DNN.
Una CNN tiene una arquitectura específica para procesar imágenes. En cambio, una DNN no tiene ninguna arquitectura específica y puede funcionar para una gran variedad de tareas.
Una CNN aprende las características de las imágenes utilizando capas de convolución, mientras que una DNN aprende las características con la ayuda de diferentes [tipos de capas] (https://www.geeksforgeeks.org/deep-neural-network-with-l-layers/).
Una CNN es más difícil de entrenar, requiere más datos y es más cara computacionalmente que una DNN.
¿Cuáles son las tres capas de una CNN?
Las tres capas de una CNN son la capa de activación, la capa de convolución, la capa de agrupación y la capa totalmente conectada.
Capa de convolución-Esta capa se encarga de extraer características de las imágenes. Funciona escaneando las imágenes con un filtro, que es una pequeña matriz de pesos. El filtro se desplaza por la imagen y los pesos se multiplican por los valores de los píxeles de la imagen. Finalmente, produce un mapa de características que contiene las características extraídas.
La capa de agrupamiento reduce el tamaño de los mapas de características. Para ello, dos técnicas habituales son la agrupación máxima y la agrupación media.
Capa totalmente conectada: es la misma que las redes neuronales tradicionales que clasifican la salida de la CNN. Las neuronas de las capas totalmente conectadas clasifican la imagen en un conjunto de clases.
¿Qué es una red neuronal convolucional en el aprendizaje profundo?
Una red neuronal convolucional es un tipo de red neuronal profunda que procesa imágenes, discursos y vídeos para que pueda utilizarlos para hacer predicciones del mundo real sobre datos estructurados/no estructurados en el creciente mundo digital.
Una CNN ayuda a predecir emociones humanas, comportamientos, intereses, gustos, aversiones, etc., de forma fácil y eficiente.
- **Razones clave para utilizar una CNN**
- Ventajas y desventajas de las redes neuronales convolucionales
- Técnicas de regularización habituales en las CNN
- **ArquitecturaCNN y cómo funciona**
- Tipos de redes neuronales convolucionales
- **Cómo diseñar una red neuronal de convolución**
- **Simple implementación de CNN con PyTorch**
- **FAQs**
Contenido
Comienza Gratis, Escala Fácilmente
Prueba la base de datos vectorial completamente gestionada construida para tus aplicaciones GenAI.
Prueba Zilliz Cloud Gratis