Path: blob/master/site/es-419/hub/tutorials/tf2_object_detection.ipynb
25118 views
Copyright 2020 The TensorFlow Hub Authors.
Licensed under the Apache License, Version 2.0 (the "License");
Colab de detección de objetos de TensorFlow Hub
¡Le damos la bienvenida al Colab de detección de objetos de TensorFlow Hub! Este cuaderno será su guía a través de los pasos para ejecutar un modelo de detección de objetos "listo para usar" en imágenes.
Importaciones y preparación
Comencemos con las importaciones de base.
Utilidades
Ejecute la siguiente celda para crear algunas utilidades que serán necesarias más adelante:
Método ayudante para cargar una imagen
Asignación del nombre del modelo para el identificador de TF Hub
Lista de tuplas con puntos clave de los usuarios para el conjunto de datos COCO 2017. Esto es necesario para modelos con puntos clave.
Herramientas de visualización
Para visualizar las imágenes con los cuadros, puntos clave y segmentación detectados adecuados, usaremos la API de detección de objetos de TensorFlow. Para instalarlo clonaremos el repositorio.
Instalar la API de detección de objetos
Ahora podemos importar las dependencias que necesitaremos más adelante
Cargue los datos de asignación de etiquetas (para trazar)
Las asignaciones de etiquetas corresponden a números de índice con nombres de categorías, de modo que cuando nuestra red convolucional predice 5
, sabemos que esto corresponde a airplane
. Aquí usamos funciones de utilidad internas, pero cualquier cosa que devuelva un diccionario que asigne números enteros a las etiquetas de cadena de texto adecuadas estaría bien.
Para simplificar, vamos a cargar desde el repositorio que cargamos el código de la API de detección de objetos.
Genere un modelo de detección y cargue pesos de modelo preentrenados
Aquí elegiremos qué modelo de detección de objetos usaremos. Seleccione la arquitectura y se cargará automáticamente. Si desea cambiar el modelo para probar otras arquitecturas más adelante, simplemente cambie la siguiente celda y ejecute las que le siguen.
Consejo: si desea obtener más detalles sobre el modelo seleccionado, puede seguir el enlace (identificador del modelo) y leer la documentación adicional en TF Hub. Después de seleccionar un modelo, imprimiremos el identificador para que sea más fácil.
Cargar el modelo seleccionado desde TensorFlow Hub
Aquí solo necesitamos el identificador del modelo que se seleccionó y usar la biblioteca Tensorflow Hub para cargarlo en la memoria.
Cargar una imagen
Probemos el modelo en una imagen simple. Para ayudar con esto, proporcionamos una lista de imágenes de prueba.
Pruebe algunas de las siguientes cosas simples si tiene curiosidad:
Intente ejecutar la inferencia en sus propias imágenes, simplemente cárguelas a Colab y cárguelas de la misma manera que se hace en la celda a continuación.
Modifique algunas de las imágenes de entrada y vea si la detección aún funciona. Algunas cosas simples que puede probar aquí incluyen voltear la imagen horizontalmente o convertirla a escala de grises (tenga en cuenta que aún se requiere que la imagen de entrada tenga 3 canales).
Cuidado: cuando se usan imágenes con un canal alfa, el modelo requiere imágenes de 3 canales y el alfa contará como un cuarto.
Inferencia
Para la inferencia solo necesitamos llamar a nuestro modelo cargado TF Hub.
Puede probar lo siguiente:
Imprima
result['detection_boxes']
e intente hacer coincidir las ubicaciones de los cuadros con los cuadros de la imagen. Observe como las coordenadas se dan en forma normalizada (es decir, en el intervalo [0, 1]).Inspeccione otras claves de salida presentes en el resultado. Se puede consultar la documentación completa en la página de documentación de los modelos (al apuntar su navegador al identificador del modelo que se imprimió anteriormente)
Visualizar los resultados
Aquí es donde necesitaremos la API de detección de objetos de TensorFlow para mostrar los cuadrados del paso de inferencia (y los puntos clave cuando estén disponibles).
Puede encontrar la documentación completa de este método aquí.
Aquí puede, por ejemplo, establecer min_score_thresh
en otros valores (entre 0 y 1) para permitir más detecciones o filtrar más detecciones.
[Opcional]
Entre los modelos de detección de objetos disponibles se encuentra Mask R-CNN y la salida de este modelo permite la segmentación de instancias.
Para visualizarlo usaremos el mismo método que hicimos antes pero con un parámetro adicional: instance_masks=output_dict.get('detection_masks_reframed', None)