rcnn - tensorflow object detection api tutorial
Detección de objetos con R-CNN? (2)
¿Qué hace realmente R-CNN? ¿Es como usar funciones extraídas por CNN para detectar clases en un área de ventana específica? ¿Hay alguna implementación de tensorflow para esto?
R-CNN es el algoritmo de Daddy para todos los algos mencionados, realmente proporcionó la ruta para que los investigadores construyan algoritmos más complejos y mejores. Estoy tratando de explicar R-CNN y las otras variantes de la misma.
R-CNN, o red neuronal convolucional basada en la región
R-CNN consta de 3 pasos simples:
- Escanee la imagen de entrada para detectar posibles objetos usando un algoritmo llamado Búsqueda selectiva, generando ~ 2000 propuestas de región
- Ejecutar una red neuronal convolucional (CNN) en la parte superior de cada una de estas propuestas de la región
- Tome la salida de cada CNN y aliméntela en a) un SVM para clasificar la región yb) un regresor lineal para apretar el cuadro delimitador del objeto, si tal objeto existe.
Fast R-CNN:
Rápido R-CNN fue seguido inmediatamente R-CNN. Fast R-CNN es más rápido y mejor en virtud de los siguientes puntos:
- Realización de extracción de características sobre la imagen antes de proponer regiones, por lo tanto, solo se ejecuta una CNN sobre toda la imagen en lugar de 2000 CNN en más de 2000 regiones superpuestas
- Reemplazar el SVM con una capa de softmax, extendiendo así la red neuronal para predicciones en lugar de crear un nuevo modelo.
Intuitivamente tiene mucho sentido eliminar capas de 2000 conv y en su lugar tomar una convolución y crear cuadros encima de eso.
Más rápido R-CNN:
Uno de los inconvenientes de Fast R-CNN fue el lento algoritmo de búsqueda selectiva y Faster R-CNN introdujo algo llamado Region Proposal Network (RPN).
Aquí está el funcionamiento de la RPN:
En la última capa de una CNN inicial, una ventana deslizante de 3x3 se mueve a través del mapa de características y la asigna a una dimensión inferior (por ejemplo, 256 d). Para cada ubicación de ventana deslizante, genera múltiples regiones posibles basadas en el ancla de relación fija k cajas (cajas de límite predeterminadas)
Cada propuesta de región consiste en:
- Una puntuación de "objetividad" para esa región y
- 4 coordenadas que representan el recuadro delimitador de la región En otras palabras, observamos cada ubicación en nuestro último mapa de características y consideramos k diferentes recuadros alrededor de él: una caja alta, una caja ancha, una caja grande, etc.
Para cada uno de esos cuadros, publicamos si creemos que contiene un objeto o no, y cuáles son las coordenadas para ese cuadro. Esto es lo que parece en una ubicación de ventana deslizante:
Los puntajes 2k representan la probabilidad de softmax de cada uno de los k cuadros delimitadores en "objeto". Observe que, aunque el RPN genera coordenadas de cuadro delimitador, no trata de clasificar ningún objeto potencial: su único trabajo aún es proponer regiones de objeto. Si un recuadro delimitador tiene un puntaje de "objetividad" por encima de un cierto umbral, las coordenadas de ese recuadro se pasan como una propuesta de región.
Una vez que tenemos nuestras propuestas para la región, las enviamos directamente a lo que es esencialmente una Fast R-CNN. Agregamos una capa de agrupamiento, algunas capas totalmente conectadas y, finalmente, una capa de clasificación de softmax y un regresor de cuadro delimitador. En cierto sentido, Faster R-CNN = RPN + Fast R-CNN.
Vinculación de alguna implementación de Tensorflow:
https://github.com/smallcorgi/Faster-RCNN_TF
https://github.com/CharlesShang/FastMaskRCNN
Puedes encontrar mucha implementación de Github.
PD Pedí prestado mucho material del blog de Joyce Xu Medium.
R-CNN está usando el siguiente algoritmo:
- Obtenga propuestas de la región para la detección de objetos (utilizando la búsqueda selectiva).
- Para cada región, recorte el área de la imagen y ejecútela a través de una CNN que clasifique el objeto.
Hay algoritmos más avanzados que se basan en esto como fast-R-CNN y R-CNN más rápido.
rápido-R-CNN:
- Ejecuta toda la imagen a través de la CNN
- Para cada región de la región, las propuestas extraen el área utilizando la capa "roi polling" y luego clasifican el objeto.
R-CNN más rápido:
- Ejecuta toda la imagen a través de la CNN
- Usando las características detectadas usando la CNN, encuentre propuestas de región usando una red de propuestas de objetos.
- Para cada propuesta de objeto, extraiga el área utilizando la capa "roi polling" y luego clasifique el objeto.
Hay una gran cantidad de implantación en tensorflow específicamente para R-CNN más rápido, que es la variante más reciente de Google más rápido tensorflow de R-CNN.
Buena suerte