¿Qué es la detección de objeciones con Tensorflow? y cómo funciona [Ejemplos]
Publicado: 2021-06-18Tabla de contenido
Detección de objetos: ¿qué significa?
La detección de objetos es un proceso en el que un objeto puede identificarse o ubicarse en una imagen o un video con la ayuda de la visión por computadora. Si tenemos una imagen que tiene un gato y una persona y tenemos que clasificar los objetos dentro de una imagen, entonces se puede aplicar la técnica de detección de objetos, es decir, detección de objetos, y se pueden ubicar los objetos requeridos, es decir, el gato y la persona. Esto se puede lograr a través de cuadros delimitadores que se dibujan alrededor de los objetos detectados. Por lo tanto, se conoce la ubicación de los objetos deseados.
La mayoría de las personas todavía se confunden con el reconocimiento de objetos y el reconocimiento de imágenes. La diferencia entre los dos radica en el hecho de que, en el caso del reconocimiento de imágenes, se etiqueta una imagen completa, mientras que en el reconocimiento de objetos, se etiquetan los objetos dentro de la imagen.
La clase del objeto, como una persona, una mesa, etc., y las coordenadas de la ubicación de los objetos en una imagen determinada pueden identificarse mediante la técnica de detección de objetos. El rendimiento de un algoritmo de detección de objetos depende de su capacidad para localizar objetos dentro de una imagen. Un ejemplo de detección de objetos es la detección de rostros.
¿Por qué detección de objetos?
Debido a las capacidades únicas que pertenecen a la detección de objetos, el proceso se puede aplicar en muchas tareas importantes, como:
- Conteo de personas en una multitud.
- Conducción en el caso de vehículos autónomos.
- Video vigilancia.
- Detección del rostro.
- Detección de anomalías
Enfoques de detección de objetos
Los algoritmos utilizados para el método de detección de objetos pueden ser entrenados antes de su uso o sin supervisión.
Para la detección de objetos se utilizan dos enfoques, es decir, enfoques basados en aprendizaje automático y aprendizaje profundo.
- Los enfoques basados en ML analizan varias características de una imagen, como el histograma de color o los bordes, etc. A continuación, se generan modelos de regresión basados en estas características y se predice la ubicación del objeto.
- Las redes neuronales convolucionales (CNN) se emplean en el caso de enfoques basados en aprendizaje profundo para detectar un objeto a través de métodos no supervisados.
Funcionamiento de un método de detección de objetos
La tarea de detección de objetos se puede llevar a cabo mediante los siguientes pasos:
- La imagen de entrada se divide en varios segmentos pequeños. Se crean conjuntos de cuadros unidos que abarcan toda la imagen.
- Cada área segmentada se somete al proceso de extracción de características. Luego predice la presencia de objetos válidos dentro de la caja. El proceso determina si hay alguna característica visual presente en la caja.
- Se construye una sola caja para las cajas superpuestas.
Detección de objetos usando TensorFlow
TensorFlow se puede definir como una biblioteca de código abierto para el aprendizaje automático y se ha utilizado ampliamente en varias aplicaciones, como el reconocimiento de imágenes, la búsqueda por voz, el reconocimiento de objetos, etc. TensorFlow proporciona las API de Python y C++.
- Tanto los algoritmos de aprendizaje profundo como los algoritmos de aprendizaje automático están presentes en TensorFlow.
- Python se emplea como lenguaje frontal y también se ejecuta de manera eficiente en C++.
- Los desarrolladores crean un gráfico de cálculo utilizando TensorFlow.
- Las operaciones matemáticas se representan mediante nodos en un gráfico y los datos se representan a través de las conexiones.
TensorFlow fue desarrollado para realizar investigaciones sobre aprendizaje automático y redes neuronales profundas por el equipo de Google Brain dentro de la organización de investigación de inteligencia de máquinas de Google.
Una API (interfaz de programación de aplicaciones) evita que los desarrolladores escriban códigos desde cero mediante la provisión de un conjunto de operaciones comunes. La API de detección de objetos de TensorFlow se aplica para entrenar los modelos para la detección de objetos. El marco está construido sobre TensorFlow. Las características que pertenecen a la detección de objetos TensorFlow son:
- Los modelos que ya están entrenados se denominan "Zoológico modelo" y están disponibles en el marco.
- Los conjuntos de datos utilizados para entrenar los diversos modelos entrenados son:
- Conjunto de datos COCO.
- Conjunto de datos KITTI.
- Conjunto de datos de imágenes abiertas
El marco de TensorFlow de detección de objetos consta de varios modelos que tienen una arquitectura variada y, por lo tanto, diferentes precisiones de predicción. Los tipos de arquitectura de los modelos ya entrenados son:
1. MobileNet-SSD
Una red de convolución simple identifica la ubicación del cuadro delimitador en un solo paso. La arquitectura consta de una capa base (MobileNet) con varias capas de convolución. Las ubicaciones de los cuadros delimitadores se predicen a través de la operación en los mapas de características. La información presente con cada cuadro delimitador se enumera a continuación:
- Ubicaciones de desplazamiento del cuadro delimitador en las cuatro esquinas (cx, cy, w, h).
- Probabilidades de clase C (c1, c2, …cp)
SSD no predice la forma de la caja, sino las ubicaciones de la caja. El número K de cuadros delimitadores se determina para cada ubicación del mapa de características. La forma del cuadro delimitador k ya está establecida antes del entrenamiento real.
La siguiente ecuación calcula la pérdida.
L=1/N (clase L + caja L)
Donde, N: número de cajas emparejadas, clase L: pérdida softmax, caja L: error asociado a las cajas emparejadas.
2. Red Móvil
Una convolución estandarizada se factoriza en una convolución y una convolución que es puntual, es decir, 1*1 convoluciones. El cálculo se reduce con la reducción del tamaño del modelo a través de la factorización.
3. Inicio-SSD
Inception-SSD tiene la misma arquitectura que MobileNet-SSD, sin embargo, la base de la arquitectura en el caso de MobileNet-SSD era MobileNet, y aquí está el modelo Inception.
4. RCNN más rápido
La predicción de la ubicación del objeto se basa en algoritmos de propuesta de región. Las redes de detección han reducido su tiempo de ejecución gracias al avance en SSPnet y Fast R-CNN. Se genera un mapa de características convolucionales cuando una imagen de entrada se alimenta a la red neuronal en el caso de Faster RCNN.
Luego, la propuesta de región se identifica a través del mapa de características convolucionales y se distorsiona en cuadrados. Luego, los cuadrados se remodelan en un tamaño que se fija a través de una capa de agrupación ROL (capa de región de interés). Luego se usa como entrada a una capa que está completamente conectada.
La capa softmax se utiliza para predecir la clase de propuesta de región a partir del vector de características ROL. También se predicen los valores de desplazamiento del cuadro delimitador.
Selección del modelo TensorFlow de detección de objetos
El modelo de TensorFlow de detección de objetos correcto se puede elegir de la API de TensorFlow según los requisitos específicos del usuario. La red de detección de disparo único, es decir, la red SSD se puede utilizar si el usuario requiere un modelo de alta velocidad. El modelo es bastante más rápido y puede detectar la transmisión de video a un alto fps.
Sin embargo, si se requiere más precisión, FasterRCNN podría ser una mejor opción ya que la precisión del modelo es alta pero tiene una velocidad comparativamente más lenta. Por lo tanto, el usuario puede explorar las diversas oportunidades disponibles según sus requisitos.
Un ejemplo de TensorFlow para la detección de objetos
El uso de la API de TensorFlow para la detección de objetos no requiere conocimientos previos de aprendizaje automático o redes neuronales. Los archivos proporcionados por la API se utilizarán principalmente. El único requisito es conocer los fundamentos de python.
1. Descargando TensorFlow
- TensorFlow se puede descargar a través de git o manualmente.
- Descargar TensorFlow a través de git es una de las formas más fáciles de descargar. Para descargar a través de git, el sistema ya debería tener git preinstalado. Una vez que git esté instalado, se debe escribir el siguiente comando en la terminal.
- Se debe visitar el siguiente enlace y hacer clic en el botón verde. Los archivos comprimidos deben descargarse y extraerse.
- La carpeta debe cambiarse de nombre a modelos desde models-master.
- Hay que crear un entorno virtual. Uno de los principales objetivos de crear un entorno virtual de python es crear un entorno de python que esté aislado. Es para ser utilizado para proyectos bajo python. Por lo tanto, las dependencias de cada proyecto serán diferentes.
- Los siguientes comandos deben usarse en el indicador de anaconda:
En este caso, el entorno virtual se llama obj_detection
conda create -n obj_detection -> para configurar el entorno virtualmente
conda active obj_detection -> para activar el entorno virtual
2. Instalación de dependencias
- Las dependencias requeridas por la API deben instalarse en la PC local.
- Las dependencias se pueden instalar después de activar el entorno virtual.
- Se debe escribir el siguiente comando
pip instalar tensorflow
- Si hay una GPU presente, se requiere el siguiente comando
pip instalar tensorflow-gpu
- Las demás dependencias se instalarán mediante el siguiente comando
pip instalar almohada Cython lxml jupyter matplotlib contextlib2 tf_slim
3. Descarga de búferes de protocolo (Protobuff)
- Los buffers de protocolo son ciertos mecanismos para estructurar los datos en serie como el XML.
- 'Protobuff' tiene que ser descargado desde el enlace .
- Extraiga los archivos y cópielos en la subcarpeta llamada "investigación" en la carpeta "modelos" ya descargada.
- Se debe navegar a la carpeta que contiene los archivos protobuf y ejecutar el siguiente comando
protoc object_detection/protos/*.proto –python_out=.
- La ejecución exitosa del comando creará un archivo python contra cada uno de los archivos proto en la carpeta protos bajo detección de objetos en la carpeta de modelos.
Conclusión
La detección de objetos es una técnica ampliamente aplicada en varias aplicaciones en tiempo real. Hemos aprendido que la técnica se puede lograr mediante la aplicación de algoritmos de aprendizaje automático o aprendizaje profundo.
Además, con la aplicación de una API, es decir, TensorFlow, los usuarios deben tener un conocimiento previo del concepto de programación de python. Solo entonces se podrían comprender correctamente los métodos de detección de objetos que utilizan la API de TensorFlow. TensorFlow es una plataforma de código abierto para el aprendizaje automático. Por lo tanto, para comprender el mecanismo de trabajo de TensorFlow y su aplicación, es mejor conocer los conceptos de aprendizaje automático.
Si usted es un profesional de nivel medio que quiere aprender a programar en Python, implementar modelos ML junto con computación en la nube, puede consultar el curso " Maestría en Ciencias en Aprendizaje Automático e Inteligencia Artificial " proporcionado por upGrad . El curso certificado conjuntamente por IIIT Bangalore y LJMU alineará sus objetivos con la capacitación de expertos y le permitirá prepararse para ingresar a las empresas de sus sueños. Todo lo que necesitas es tener una licenciatura. Nuestro equipo de asistencia está disponible para responderle si tiene alguna consulta relacionada con el curso de upGrad.