Diferencia entre "kernel" y "filter" en CNN

37

¿Cuál es la diferencia entre los términos "núcleo" y "filtro" en el contexto de las redes neuronales convolucionales?

ryguy
fuente
55
¡Ellos son lo mismo! Filtro o núcleo es un grupo simple de pesos compartidos en todo el espacio de entrada.
yasin.yazici

Respuestas:

42

En el contexto de redes neuronales convolucionales, kernel = filter = feature detector.


Aquí hay una gran ilustración del tutorial de aprendizaje profundo de Stanford (también bien explicado por Denny Britz ).

ingrese la descripción de la imagen aquí

El filtro es la ventana deslizante amarilla, y su valor es:

[101010101]
Franck Dernoncourt
fuente
2
¿Hay un nombre específico para el filtro? Como un "Desenfoque" o un "
Detección de bordes
2
@PratikKhadloya no, esos nombres se dan subjetivamente por los investigadores en base a lo que parece ser el filtro de detección.
shadowtalker
1
@Frank Dernoncourt acuerdo con este enlace towardsdatascience.com/... que son diferentes cuando tenemos un par de canales. En realidad, cuando hay múltiples canales Cada filtro en realidad pasa a ser una colección de granos, con la existencia de un núcleo para cada canal de entrada única a la capa, y cada kernel ser único. Yo estaría feliz de tener su idea
sariii
6

Un mapa de características es el mismo como un filtro o "núcleo" en este contexto particular. Los pesos del filtro determinan lo que se detectan características específicas.

Entonces, por ejemplo, Franck ha proporcionado una gran visual. Observe que su filtro / detector de características tiene x1 a lo largo de los elementos diagonales y x0 a lo largo de todos los demás elementos. Esta ponderación del núcleo detectaría píxeles en la imagen que tienen un valor de 1 a lo largo de las diagonales de la imagen.

Observe que la característica enrevesada resultante muestra valores de 4 donde la imagen tiene un "1" a lo largo de los valores diagonales del filtro 3x3 (detectando así el filtro en esa sección específica de 3x3 de la imagen), y valores más bajos de 2 en las áreas de la imagen donde ese filtro no coincidía tan fuertemente.

JohnnyUtah
fuente
5

k×k×doCCHin×Hin×C32×32Imagen RGB). Tiene sentido usar una palabra diferente para describir una matriz 2D de pesos y otra diferente para la estructura 3D de los pesos, ya que la multiplicación ocurre entre matrices 2D y luego los resultados se suman para calcular la operación 3D.

Actualmente hay un problema con la nomenclatura en este campo. ¡Hay muchos términos que describen lo mismo e incluso términos usados ​​indistintamente para diferentes conceptos! Tome como ejemplo la terminología utilizada para describir la salida de una capa de convolución: mapas de características, canales, activaciones, tensores, planos, etc.

Basado en wikipedia, "En el procesamiento de imágenes, un núcleo es una matriz pequeña".

Basado en wikipedia, "Una matriz es una matriz rectangular dispuesta en filas y columnas".

k1×k2×C

Bueno, no puedo argumentar que esta es la mejor terminología, pero es mejor que simplemente usar los términos "núcleo" y "filtro" indistintamente. Además, necesitamos una palabra para describir el concepto de las distintas matrices 2D que forman un filtro.

Jim
fuente
1

Las respuestas existentes son excelentes y responden integralmente a la pregunta. Solo quiero agregar que los filtros en las redes convolucionales se comparten en toda la imagen (es decir, la entrada está enrevesada con el filtro, como se visualiza en la respuesta de Franck). El campo receptivo de una neurona particular son todas las unidades de entrada que afectan a la neurona en cuestión. El campo receptivo de una neurona en una red convolucional es generalmente más pequeño que el campo receptivo de una neurona en una red densa por cortesía de los filtros compartidos (también llamado intercambio de parámetros ).

Parámetro compartir confiere un cierto beneficio en CNNs, es decir, una propiedad denominada equivariance a la traducción . Esto quiere decir que si la entrada es perturbado o traducido, la salida también se modifica de la misma manera. Ian Goodfellow ofrece un gran ejemplo en el libro de aprendizaje profundo sobre cómo los profesionales pueden capitalizar en equivariance CNNs:

Al procesar los datos de series de tiempo, esto significa que la convolución produce una especie de línea de tiempo que muestra cuando di ff Erent características aparecen en el input.If nos movemos un evento posterior en el tiempo, en la entrada, exactamente la misma representación de la misma aparecerán en la salida, solo mas tarde Lo mismo ocurre con las imágenes, convolución crea un mapa 2-D de donde determinadas características aparecen en la entrada. Si movemos el objeto en la entrada, su representación se moverá la misma cantidad en la salida. Esto es útil para cuando se sabe que alguna función de un pequeño número de píxeles vecinos es útil cuando se aplica a varias ubicaciones de entrada. Por ejemplo, cuando el tratamiento de imágenes, es útil para detectar bordes en la capa primera de una red de convolución. Los mismos bordes aparecen más o menos en todas partes de la imagen, por lo que es práctico para compartir parámetros en toda la imagen.

Pranav Vempati
fuente