¿Cuál es la mejor manera de hacer reconocimiento / clasificación de múltiples objetos en tiempo real usando OpenCV y GPU (CUDA)?

Uno de los problemas fundamentales con este tipo de problema es que no se puede aplicar la CNN fundamental para descubrir objetos dentro de estos. Porque la CNN tradicional tiende a confundirse cuando hay varias etiquetas asociadas con una imagen. La razón es que CNN realmente no puede entender que es el elemento único que diferencia un objeto en particular dentro de una imagen. Por ejemplo, en la imagen de arriba hay un plátano y naranja. Sin embargo, la CNN tradicional realmente no puede entender qué es exactamente un plátano o una naranja en una imagen. CNN puede terminar aprendiendo, por ejemplo, si hay una bolsa en una imagen, que es naranja y plátano. Porque digamos que la mayoría de las imágenes que tienen la etiqueta de plátano y naranja tienden a tener una bolsa de supermercado o un color particular.

Dicho esto, supongo que ahora tienes claro que realmente no puedes usar CNN para resolver el problema. ¿Qué podemos hacer?

Bueno, use CNN con algún algoritmo ajustado. El enfoque tradicional para la clasificación de múltiples objetos en una imagen sería usar el algoritmo de detección de objetos y ejecutar CNN además de eso. Por lo tanto, puede usar una ventana deslizante u otro algoritmo de detección de objetos de última generación y descubrir dónde están los objetos de interés. Por ejemplo, descubra un cuadro delimitador (ese cuadro verde) en cada imagen. Estos cuadros delimitadores contendrían el objeto de interés dentro de la imagen, como manzana, gato, naranjas, plátanos, etc. Y una vez que haya resuelto este cuadro delimitador, puede ejecutar CNN tradicional en la parte superior del detector de objetos y pasar estos cuadros de unión a su red para hacer la clasificación de objetos. Y, finalmente, combine todas las partes separadas de una imagen para formar la imagen completa y devolver el resultado.

La imagen de arriba ilustra el funcionamiento de RCNN.

El algoritmo que describí anteriormente se conoce como RCNN. (Redes neuronales contorneadas basadas en la región)

Entonces, ¿cuál es el problema con RCNN?

  • Algoritmos como la ventana deslizante con cierto paso es extremadamente lento para ejecutarse en imágenes de gran tamaño. Incluso los algoritmos como la búsqueda selectiva y la variante más rápida de detección de objetos son bastante lentos. RCNN generalmente propone alrededor de 2k regiones y en cada una de estas regiones CNN ejecutará y extraerá características de alto nivel para hacer la clasificación. Y estas propuestas de región tienden a ser extremadamente lentas.
  • De hecho, incluso cuando tiene la región propuesta, se tarda tan solo 5 segundos en cada imagen para hacer la clasificación y volver a armarla.
  • Necesita entrenamiento en varias etapas para ejecutar este modelo. Necesita entrenar su algoritmo detector de objetos, CNN para extraer características de alto nivel y un algoritmo más para hacer la clasificación. No voy a entrar en detalles, si quieres entrar en detalles, lee el documento que figura a continuación. Esto es solo una descripción general de la solución.

Si desea saber más sobre el RCNN, lea este documento.

[1311.2524] Jerarquías de funciones enriquecidas para la detección precisa de objetos y la segmentación semántica

Entonces, ¿cómo superamos este problema?

Bastante simple, solo modifique un poco su tubería y aceleraría el proceso. Simplemente coloque CNN al principio y proponga la propuesta al final. Y luego SVM u otros algoritmos para hacer la clasificación. Así que primero extraiga la característica de alto nivel, ejecute la detección de objetos además de eso para proponer regiones y luego haga la clasificación. Estas cosas se conocen como Fast-RCNN y fueron propuestas por Microsoft.

La imagen de arriba describe el funcionamiento de Fast-RCNN.

Ventaja de Fast-RCNN

  • Tiempo de entrenamiento más rápido. Acelere 8.8x sobre RCNN para entrenar.
  • Una imagen tarda unos 0,32 segundos en clasificarse (con las regiones propuestas)

Entonces, ¿cuál es el problema con Fast-RCNN?

  • Todavía toma alrededor de 2 segundos para hacer la propuesta de la región, que es un cuello de botella en el momento de la prueba. Y esto no es realista para uso práctico.

Lea el documento aquí …

[1504.08083] R-CNN rápido

¿Entonces, cuál es la solución?

Bueno, el problema en los dos algoritmos anteriores es la detección de objetos. Estos algoritmos son muy lentos. ¿Hay alguna manera de acelerar estos algoritmos?

La solución fácil para esto es entrenar a la RPN (Red de Propuesta de Región), un tipo de red neuronal enrevesada para hacer la detección de objetos y eventualmente pasarla a la CNN para hacer la clasificación. Habrá dos CNN en la arquitectura, uno para hacer la detección de objetos y otro para hacer la clasificación. Estos se conocen como Faster-RCNN.

La imagen de arriba ilustra el funcionamiento de rapid-rcnn.

Ventaja del Faster-RCNN

  • Aceleración de 250x en el tren y el tiempo de prueba. Toma aproximadamente 0.2 segundos hacer la clasificación de una imagen.
  • Tiempo realista para el uso práctico.

Papel…

Hacia la detección de objetos en tiempo real con redes de propuestas regionales

Nota: Mejoraré la respuesta a medida que tenga tiempo y comparta más recursos para que comprenda estas cosas aún más si no desea leer el documento. He usado esto, así que el enlace a la guía de programación llegará muy pronto. Manténganse al tanto.

Como tesorflow se ejecuta sobre CUDA, puede usar estos algoritmos para hacer las clasificaciones.

More Interesting

¿Cómo aprendiste el aprendizaje automático? ¿Por qué?

¿Cuáles son algunos ejemplos del mundo real de cómo y / o dónde se utilizan los algoritmos?

¿Cómo funciona la selección de características bayesianas?

¿Cómo almacena un sistema de aprendizaje automático su memoria aprendida?

¿Qué pensaría BF Skinner del aprendizaje automático?

¿AWS es bueno para ejecutar proyectos de aprendizaje profundo? ¿Qué tan rápido y costoso sería entrenar una red convolucional en aproximadamente 1 millón de imágenes?

¿Pueden los algoritmos de aprendizaje automático de análisis de datos reemplazar el trabajo realizado por los científicos de datos?

¿Qué área de la PNL es más prometedora y gana más tracción en la industria: la PNL sobre los datos de voz frente a texto?

¿El curso de aprendizaje automático que el profesor Andrew Ng ofrece en Coursera me será útil como desarrollador de software profesional para resolver problemas de aprendizaje automático del mundo real?

En el aprendizaje profundo, ¿se pueden obtener buenos resultados cuando usas una función lineal entre las capas ocultas?

¿Hay algún resumen de las mejores modelos para el premio de Netflix? ¿Cuáles son las ideas de alto nivel e intuitivas detrás de los modelos ganadores que finalmente fueron utilizados en el aprendizaje conjunto por los mejores equipos?

¿Debería incluirse el error de salida en la retropropagación en el bucle?

Cómo asegurarse de no analizar algo que termina sin sentido

¿Qué es una explicación intuitiva de la iteración de valores en el aprendizaje por refuerzo (RL)?

¿Cuáles son los poderes de clasificación sobre la agrupación? ¿Por qué elegiría una clasificación?