Bigotes, patas y cola: cómo una red neuronal reconoce gatos y otros objetos. Bigotes, patas y cola: cómo una red neuronal reconoce gatos y otros objetos El dibujo se convierte en gato

Bigotes, patas y cola: cómo una red neuronal reconoce gatos y otros objetos. Bigotes, patas y cola: cómo una red neuronal reconoce gatos y otros objetos El dibujo se convierte en gato

09.09.2023

¿Qué es lo que más aman los niños? Por supuesto, dibujos animados. Es en esta sección donde hemos recopilado una variedad de dibujos animados nacionales y extranjeros. Entre la gran selección, seguramente habrá uno que a su hijo le encantará especialmente. Si tiene mucho que hacer o simplemente quiere relajarse, y el niño pide atención constante, y si no la hay, comienza a “estropear”, entonces los dibujos animados vendrán al rescate. Al encender una caricatura para un niño, puede distraerlo durante al menos media hora, o incluso dos o tres.


Una forma de arte como la animación existe desde hace bastante tiempo. Durante este tiempo, la calidad ha mejorado, lo cual es una buena noticia. A los niños de cualquier generación les encantan los dibujos animados; a todos, cuando eran niños, les encantaban los dibujos animados. Muchos adultos a la vez tuvieron que esperar en la televisión y ver lo que se mostraba. Algunas personas alguna vez tuvieron suerte si sus padres compraban casetes o discos. Y la nueva generación ya puede ver lo que quiera sin gastar dinero de la billetera de sus padres, porque casi en todos los hogares ya hay una computadora e Internet, con la ayuda de la cual se puede abrir una enorme ficha de dibujos animados para todos los gustos y colores. .


Para los más pequeños, los clásicos soviéticos, famosos por su sencillez, amabilidad y agradables imágenes, son perfectos. Por ejemplo, "Crocodile Gena", "Prostokvashino", "¡Bueno, espera un minuto!", "Músicos de Bremen", "Flying Ship", "Winnie the Pooh", "Baby and Carlson" y muchos otros. Incluso puedes sentarte con tu hijo y recordar su infancia. También para los niños pequeños existen muchos dibujos animados educativos modernos, que se diferencian no solo por sus imágenes más vívidas, sino también por su contenido.


Para los niños que ya están terminando el jardín de infantes o estudiando en la escuela primaria, son adecuados los dibujos animados entretenidos, donde los héroes salvan a alguien o incluso al mundo entero. Estos incluyen dibujos animados extranjeros sobre superhéroes de cómics, hechiceras o hadas, así como dibujos animados nacionales sobre héroes.


Aquellos niños que ya están avanzando lenta y seguramente hacia la adolescencia, es posible que ya comiencen a interesarse por los dibujos animados que tienen una trama especialmente diferente. En estos dibujos animados, de forma relajada, los niños se ven obligados a pensar en cosas serias y experimentar muchas emociones. Son aptos para que los vea toda la familia, porque gracias a la trama bien pensada, no serán menos interesantes para los adultos. Estos dibujos animados se pueden colocar de forma segura en el mismo estante que las películas familiares.


A los adolescentes, a pesar de que se consideran adultos, todavía les encanta ver dibujos animados. Para los adolescentes ya son más atrevidos y no tan inofensivos como los niños. Están dominados por el entretenimiento, los chistes de adultos y los problemas de los adolescentes. Se trata principalmente de dibujos animados extranjeros de varias partes, como "Los Simpson", "Padre de familia", "Futurama", etc.


No te olvides de los adultos. Sí, también dibujan para adultos, solo que son algo similares a los adolescentes, pero son más groseros, puede haber malas palabras, connotaciones íntimas y se abordan problemas de los adultos (vida familiar, trabajo, préstamos, crisis de la mediana edad, etc.). ).


Los dibujos animados son una forma de arte en la que las manos del autor están completamente libres, porque puedes representar absolutamente cualquier cosa y al mismo tiempo añadir una historia encantadora. Te invitamos a verlos ahora mismo y divertirte mucho.

El reconocimiento de imágenes es un ejemplo clásico del uso de redes neuronales. Recordemos cómo se produce el proceso de formación de redes, dónde surgen las dificultades y por qué utilizar la biología en el desarrollo. Detalles bajo el corte.

Dmitry Soshnikov, un evangelista técnico de Microsoft, miembro de la Asociación Rusa de Inteligencia Artificial, profesor de programación de IA lógica y funcional en el Instituto de Aviación de Moscú, el Instituto de Física y Tecnología de Moscú y la Escuela Superior de Economía, así como nuestros cursos, ayúdanos en la historia.

Imaginemos que tenemos muchas imágenes que debemos ordenar en dos pilas utilizando una red neuronal. ¿Cómo se puede hacer esto? Por supuesto, todo depende de los objetos en sí, pero siempre podemos destacar algunas características.

Necesitamos conocer la mayor cantidad de información posible sobre los datos de entrada y tenerla en cuenta en la entrada manual, incluso antes de entrenar la red. Por ejemplo, si nuestra tarea es detectar gatos multicolores en una imagen, lo importante no será el color, sino la forma del objeto. Cuando nos deshacemos del color y cambiamos a una imagen en blanco y negro, la red aprenderá mucho más rápido y con más éxito: tendrá que reconocer varias veces menos información.

Para reconocer objetos arbitrarios, como gatos y ranas, el color es obviamente importante: una rana es verde, pero los gatos no. Si dejamos los canales de color, para cada paleta la red aprende a reconocer los objetos en la imagen nuevamente, porque este canal de color alimenta a otras neuronas.

¿Qué pasa si queremos destruir el famoso meme sobre los gatos y el pan enseñando a una red neuronal a detectar un animal en cualquier imagen? Parecería que los colores y la forma son aproximadamente iguales. ¿Qué hacer entonces?

Bancos de filtros y visión biológica

Usando diferentes filtros, puedes resaltar diferentes partes de la imagen, que luego se detectan y examinan como propiedades individuales. Por ejemplo, alimente el aprendizaje automático tradicional o las redes neuronales como entrada. Si una red neuronal tiene información adicional sobre la estructura de los objetos con los que trabaja, la calidad de su trabajo aumenta.

En el campo de la visión por computadora, se han desarrollado bancos de filtros: conjuntos de filtros para resaltar las características principales de los objetos.

En biología se utiliza una “arquitectura” similar. Los científicos creen que la visión humana no determina la imagen completa, sino que resalta los rasgos característicos, los rasgos únicos mediante los cuales el cerebro identifica el objeto. En consecuencia, para un reconocimiento de objetos rápido y correcto, se pueden determinar las características más singulares. Por ejemplo, en los gatos puede ser un bigote: líneas horizontales en forma de abanico en la imagen.

Peso compartido

Para evitar que la red tenga que aprender por separado a reconocer gatos en diferentes partes de la imagen, "dividimos" los pesos responsables del reconocimiento entre diferentes fragmentos de señales de entrada.

Esto requiere una arquitectura de red especializada:

  • redes convolucionales para trabajar con imágenes
  • Redes recurrentes para trabajar con texto/secuencias.
Redes neuronales que se utilizan eficazmente en el reconocimiento de imágenes, que utilizan capas de convolución especiales (Capas de convolución).

La idea principal es esta:

  • Usamos el peso compartido para crear una "ventana de filtro" que recorre la imagen.
  • Un filtro aplicado a una imagen ayuda a resaltar fragmentos que son importantes para el reconocimiento.
  • Mientras que en la visión artificial tradicional los filtros se diseñaban a mano, las redes neuronales nos permiten diseñar filtros óptimos mediante el aprendizaje.
  • El filtrado de imágenes se puede combinar de forma natural con el cálculo de redes neuronales


La convolución se utiliza para el procesamiento de imágenes, al igual que en el procesamiento de señales.

Describamos la función de convolución con los siguientes parámetros:

  • kernel - kernel de convolución, matriz de peso
  • pad: cuántos píxeles se deben agregar a la imagen alrededor de los bordes
  • zancada - frecuencia de aplicación del filtro. Por ejemplo, para stride=2 tomaremos cada segundo píxel de la imagen vertical y horizontalmente, reduciendo la resolución a la mitad.
En: def convolve(imagen, kernel, pad = 0, zancada = 1): filas, columnas = imagen.forma filas_salida = filas // columnas salida_zancada = columnas // resultado zancada = np.zeros((filas_salida, columnas_salida)) if pad > 0: imagen = np.pad(imagen, pad, "constante") kernel_size = kernel.size kernel_length = kernel.shape half_kernel = kernel_length // 2 kernel_flat = kernel.reshape(kernel_size, 1) offset = buildins.abs( half_kernel-pad) para r en el rango (desplazamiento, filas - desplazamiento, zancada): para c en el rango (desplazamiento, columnas - desplazamiento, zancada): rr = r - half_kernel + pad cc = c - half_kernel + parche de pad = resultado de la imagen = np.dot(patch.reshape(1, kernel_size), kernel_flat) devuelve resultado
En: def show_convolution(kernel, stride = 1): """Muestra el efecto de convolución con el kernel dado.""" fig = pylab.figure(figsize = (9,9)) gs = gridspec.GridSpec(3, 3, height_ratios=) start=1 para i en el rango(3): image = images_train conv = convolve(image, kernel, kernel.shape//2, stride) ax = fig.add_subplot(gs[i]) pylab.imshow (imagen, interpolación="más cercana") ax.set_xticks() ax.set_yticks() ax = fig.add_subplot(gs) pylab.imshow(kernel, cmap="gray", interpolation="más cercana") ax.set_xticks() ax.set_yticks() ax = fig.add_subplot(gs) pylab.imshow(conv, interpolation="más cercano") ax.set_xticks() ax.set_yticks() pylab.show()
En: blur_kernel = np.array([, , , ], dtype="float32") blur_kernel /= 273

Filtros

Difuminar

El filtro de desenfoque le permite suavizar las irregularidades y enfatizar la forma general de los objetos.


En: show_convolution(blur_kernel)

Bordes verticales

Puede crear un filtro que resalte las transiciones verticales de brillo en una imagen. Aquí, el color azul indica la transición del negro al blanco, el amarillo, al revés.


En: vertical_edge_kernel = np.array([, , , ], dtype="float32") vertical_edge_kernel /= 166
En: show_convolution(vertical_edge_kernel)

Bordes horizontales

Se puede crear un filtro similar para resaltar los trazos horizontales en una imagen.


En: horizontal_bar_kernel = np.array([, [-2, -8, -13, -8, -2], , [-2, -8, -13, -8, -2], ], dtype=" float32") kernel_bar_horizontal /= 132
En: show_convolution(horizontal_bar_kernel)

Filtro de bucle

También puedes crear un filtro de 9x9 que resaltará los contornos de la imagen.


En: blob_kernel = np.array([, , , , , , , , ], dtype="float32") blob_kernel /= np.sum(np.abs(blob_kernel))
En: show_convolution(blob_kernel)
Así es como funciona el ejemplo clásico de reconocimiento de números: cada número tiene sus propios rasgos geométricos característicos (dos círculos, un ocho, una barra en la mitad de la imagen, una unidad, etc.), mediante los cuales la red neuronal puede determinar qué tipo de objeto que es. Creamos filtros que caracterizan cada dígito, ejecutamos cada filtro sobre la imagen y reducimos el error al mínimo.


Si aplica un enfoque similar para buscar gatos en una imagen, rápidamente quedará claro que un animal de cuatro patas tiene muchos signos para entrenar una red neuronal, y todos son diferentes: colas, orejas, bigotes, narices, pelaje y coloración. Y es posible que cada gato no tenga nada en común con otro. Una red neuronal con una pequeña cantidad de datos sobre la estructura de un objeto no podrá comprender que un gato está acostado y el otro está parado sobre sus patas traseras.

La idea básica de una red convolucional.

  • Creamos una capa convolucional en la red neuronal, que garantiza que el filtro se aplique a la imagen.
  • Entrenamos pesos de filtro usando el algoritmo de retropropagación.
Por ejemplo, tenemos una imagen. i, 2 filtros de convolución w con salidas oh. Los elementos de la imagen de salida se calcularán de la siguiente manera:

Entrenamiento con pesas

El algoritmo es como sigue:
  • Se aplica un filtro con los mismos pesos a todos los píxeles de la imagen.
  • En este caso, el filtro “recorre” toda la imagen.
  • Queremos entrenar estos pesos (comunes a todos los píxeles) utilizando un algoritmo de retropropagación.
  • Para ello, es necesario reducir la aplicación del filtro a una única multiplicación de matrices.
  • A diferencia de una capa completamente conectada, habrá menos pesos para entrenar y más ejemplos.
  • El truco - im2col

im2col

Comencemos con una imagen x, donde cada píxel corresponde a una letra:

Más recientemente, el desarrollador Christopher Hesse mostró al mundo su creación: el proyecto. Con la ayuda de una red neuronal, los gatos dibujados se convierten en gatos "reales". La idea se basa en un sistema de aprendizaje automático de Google llamado TensorFlow. Edges2cats se divide en dos "campos". En el primero, el usuario dibuja un gato (o algo similar), y en el segundo, la red neuronal intenta que el dibujo se parezca a un animal real.

A los internautas les gustó la diversión sencilla. Comenzaron a publicar sus nuevas mascotas en masa en Twitter. En algunos casos, la “imagen” creada por la red neuronal parecía muy realista, como si estuviéramos mirando la fotografía de un ser vivo real. Algunos usuarios intentaron hacer lindos a los gatos (a veces incluso funcionó), pero en muchos casos nacían verdaderos monstruos.

Tenga en cuenta que el sistema de reconocimiento ocular no siempre funciona correctamente, por lo que en algunas imágenes los animales no tienen ojos, mientras que en otras la pupila puede estar ubicada donde debería estar la nariz.





© 2023 skypenguin.ru - Consejos para el cuidado de mascotas