Detección de objetos y segmentación de instancias en Python con Detectron2 PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.

Detección de objetos y segmentación de instancias en Python con Detectron2

Introducción

La detección de objetos es un campo amplio en la visión por computadora y una de las aplicaciones más importantes de la visión por computadora "en la naturaleza". Por un lado, se puede usar para construir sistemas autónomos que guíen a los agentes a través de los entornos, ya sean robots que realizan tareas o automóviles autónomos, pero esto requiere la intersección con otros campos. Sin embargo, la detección de anomalías (como productos defectuosos en una línea), la ubicación de objetos dentro de las imágenes, la detección facial y varias otras aplicaciones de detección de objetos se pueden realizar sin cruzar otros campos.

La detección de objetos no está tan estandarizada como la clasificación de imágenes, principalmente porque la mayoría de los nuevos desarrollos generalmente los realizan investigadores, mantenedores y desarrolladores individuales, en lugar de grandes bibliotecas y marcos. Es difícil empaquetar los scripts de utilidades necesarios en un marco como TensorFlow o PyTorch y mantener las pautas de la API que guiaron el desarrollo hasta el momento.

Esto hace que la detección de objetos sea algo más compleja, normalmente más detallada (pero no siempre) y menos accesible que la clasificación de imágenes. Uno de los principales beneficios de estar en un ecosistema es que le brinda una forma de no buscar información útil sobre buenas prácticas, herramientas y enfoques para usar. Con la detección de objetos, la mayoría tiene que investigar mucho más en el paisaje del campo para obtener un buen agarre.

Detectron2 de Meta AI: segmentación de instancias y detección de objetos

detector2 es el paquete de detección de objetos, segmentación y estimación de posturas de código abierto de Meta AI (anteriormente FAIR, Facebook AI Research), todo en uno. Dada una imagen de entrada, puede devolver las etiquetas, los cuadros delimitadores, las puntuaciones de confianza, las máscaras y los esqueletos de los objetos. Esto está bien representado en la página del repositorio:

Está destinado a ser utilizado como una biblioteca en la parte superior de la cual puede construir proyectos de investigación. ofrece un zoológico modelo y la mayoría de las implementaciones se basan en Mask R-CNN y R-CNN en general, junto con RetinaNet. También tienen un bastante decente documentación. ¡Ejecutemos un script de inferencia ejemplar!

Primero, instalemos las dependencias:

$ pip install pyyaml==5.1
$ pip install 'git+https://github.com/facebookresearch/detectron2.git'

A continuación, importaremos las utilidades de Detectron2: aquí es donde entra en juego el conocimiento del dominio del marco. Puedes construir un detector usando el DefaultPredictor clase, pasando un objeto de configuración que lo configura. los Visualizer ofrece soporte para visualizar resultados. MetadataCatalog y DatasetCatalog pertenecen a la API de datos de Detectron2 y ofrecen información sobre conjuntos de datos integrados, así como sus metadatos.

Importemos las clases y funciones que usaremos:

import torch, detectron2
from detectron2.utils.logger import setup_logger
setup_logger()

from detectron2 import model_zoo
from detectron2.engine import DefaultPredictor
from detectron2.config import get_cfg
from detectron2.utils.visualizer import Visualizer
from detectron2.data import MetadataCatalog, DatasetCatalog

Usar requests, descargaremos una imagen y la guardaremos en nuestra unidad local:

import matplotlib.pyplot as plt
import requests
response = requests.get('http://images.cocodataset.org/val2017/000000439715.jpg')
open("input.jpg", "wb").write(response.content)
    
im = cv2.imread("./input.jpg")
fig, ax = plt.subplots(figsize=(18, 8))
ax.imshow(cv2.cvtColor(im, cv2.COLOR_BGR2RGB))

Esto resulta en:

Detección de objetos y segmentación de instancias en Python con Detectron2 PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.

Ahora, cargamos la configuración, promulgamos cambios si es necesario (los modelos se ejecutan en GPU de forma predeterminada, por lo que si no tiene una GPU, querrá configurar el dispositivo en 'cpu' en la configuración):

cfg = get_cfg()

cfg.merge_from_file(model_zoo.get_config_file("COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x.yaml"))
cfg.MODEL.ROI_HEADS.SCORE_THRESH_TEST = 0.5
cfg.MODEL.WEIGHTS = model_zoo.get_checkpoint_url("COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x.yaml")


Aquí, especificamos qué modelo nos gustaría ejecutar desde el model_zoo. Hemos importado un modelo de segmentación de instancias, basado en la arquitectura Mask R-CNN, y con una red troncal ResNet50. Dependiendo de lo que le gustaría lograr (detección de puntos clave, segmentación de instancias, segmentación panóptica o detección de objetos), cargará el modelo apropiado.

Finalmente, podemos construir un predictor con este cfg y ejecutarlo en las entradas! los Visualizer La clase se usa para dibujar predicciones en la imagen (en este caso, instancias segmentadas, clases y cuadros delimitadores:

predictor = DefaultPredictor(cfg)
outputs = predictor(im)

v = Visualizer(im[:, :, ::-1], MetadataCatalog.get(cfg.DATASETS.TRAIN[0]), scale=1.2)
out = v.draw_instance_predictions(outputs["instances"].to("cpu"))
fig, ax = plt.subplots(figsize=(18, 8))
ax.imshow(out.get_image()[:, :, ::-1])

Finalmente, esto da como resultado:

Consulte nuestra guía práctica y práctica para aprender Git, con las mejores prácticas, los estándares aceptados por la industria y la hoja de trucos incluida. Deja de buscar en Google los comandos de Git y, de hecho, aprenden ella!

Detección de objetos y segmentación de instancias en Python con Detectron2 PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.

Yendo más lejos: aprendizaje profundo práctico para la visión por computadora

¿Tu naturaleza inquisitiva te hace querer ir más allá? Recomendamos revisar nuestro Curso: “Aprendizaje Profundo Práctico para Visión por Computador con Python”.

Detección de objetos y segmentación de instancias en Python con Detectron2 PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.

¿Otro curso de visión artificial?

No haremos clasificación de dígitos MNIST o moda MNIST. Cumplieron su parte hace mucho tiempo. Demasiados recursos de aprendizaje se centran en conjuntos de datos básicos y arquitecturas básicas antes de permitir que las arquitecturas avanzadas de caja negra carguen con la carga del rendimiento.

queremos centrarnos en desmitificación, sentido práctico, comprensión, intuición y proyectos reales. Querer aprender cómo ¿Tu puedes hacer la diferencia? Lo llevaremos en un viaje desde la forma en que nuestros cerebros procesan imágenes hasta escribir un clasificador de aprendizaje profundo de grado de investigación para el cáncer de mama y redes de aprendizaje profundo que "alucinan", enseñándole los principios y la teoría a través del trabajo práctico, equipándolo con el conocimientos y herramientas para convertirse en un experto en la aplicación del aprendizaje profundo para resolver la visión artificial.

¿Qué hay adentro?

  • Los primeros principios de la visión y cómo se puede enseñar a las computadoras a “ver”
  • Diferentes tareas y aplicaciones de la visión artificial
  • Las herramientas del oficio que facilitarán tu trabajo
  • Encontrar, crear y utilizar conjuntos de datos para la visión por computadora
  • La teoría y aplicación de las Redes Neuronales Convolucionales
  • Manejo de cambio de dominio, co-ocurrencia y otros sesgos en conjuntos de datos
  • Transfiera el aprendizaje y utilice el tiempo de capacitación y los recursos computacionales de otros para su beneficio
  • Construyendo y entrenando un clasificador de cáncer de mama de última generación
  • Cómo aplicar una buena dosis de escepticismo a las ideas principales y comprender las implicaciones de las técnicas ampliamente adoptadas
  • Visualización del "espacio conceptual" de ConvNet usando t-SNE y PCA
  • Casos prácticos de cómo las empresas utilizan técnicas de visión artificial para lograr mejores resultados
  • Evaluación adecuada del modelo, visualización del espacio latente e identificación de la atención del modelo.
  • Realizar investigaciones de dominio, procesar sus propios conjuntos de datos y establecer pruebas modelo
  • Arquitecturas de vanguardia, la progresión de las ideas, qué las hace únicas y cómo implementarlas
  • KerasCV: una biblioteca WIP para crear canalizaciones y modelos de última generación
  • Cómo analizar y leer documentos e implementarlos usted mismo
  • Selección de modelos en función de su aplicación
  • Creación de una canalización de aprendizaje automático de extremo a extremo
  • Panorama e intuición sobre la detección de objetos con Faster R-CNN, RetinaNets, SSD y YOLO
  • Instancia y segmentación semántica
  • Reconocimiento de objetos en tiempo real con YOLOv5
  • Capacitación de detectores de objetos YOLOv5
  • Trabajando con Transformers usando KerasNLP (biblioteca WIP de fuerza industrial)
  • Integrando Transformers con ConvNets para generar subtítulos de imágenes
  • sueño profundo

Conclusión

La segmentación de instancias va un paso más allá de la segmentación semántica y observa la diferencia cualitativa entre las instancias individuales de una clase (persona 1, persona 2, etc.) en lugar de solo si pertenecen a una. En cierto modo, es una clasificación a nivel de píxeles.

En esta breve guía, echamos un vistazo rápido a cómo Detectron2 hace que la segmentación de instancias y la detección de objetos sean fáciles y accesibles a través de su API, usando una máscara R-CNN.

Sello de tiempo:

Mas de Abuso de pila