facebook/detr-resnet-50
DETR modelo de detección de objetos de extremo a extremo con ResNet-50 backbone. DETR (DEtection TRansformer) es un modelo entrenado de extremo a extremo en la detección de objetos COCO 2017 (118k imágenes anotadas). Fue introducido en el artículo 'End-to-End Object Detection with Transformers' por Carion et al. y lanzado por primera vez en este repositorio. El equipo de Hugging Face ha escrito la tarjeta del modelo ya que el equipo que lanzó DETR no lo hizo.
Como usar
Aquí se explica cómo usar este modelo:
from transformers import DetrImageProcessor, DetrForObjectDetection
import torch
from PIL import Image
import requests
url = "http://images.cocodataset.org/val2017/000000039769.jpg"
image = Image.open(requests.get(url, stream=True).raw)
# puedes especificar la etiqueta de revisión si no quieres la dependencia timm
processor = DetrImageProcessor.from_pretrained("facebook/detr-resnet-50", revision="no_timm")
model = DetrForObjectDetection.from_pretrained("facebook/detr-resnet-50", revision="no_timm")
inputs = processor(images=image, return_tensors="pt")
outputs = model(**inputs)
# convierte salidas (cajas delimitadoras y logits de clase) a API COCO
# vamos a solo mantener detecciones con puntuación > 0.9
target_sizes = torch.tensor([image.size[::-1]])
results = processor.post_process_object_detection(outputs, target_sizes=target_sizes, threshold=0.9)[0]
for score, label, box in zip(results["scores"], results["labels"], results["boxes"]):
box = [round(i, 2) for i in box.tolist()]
print(
f"Detected {model.config.id2label[label.item()]} with confidence "
f"{round(score.item(), 3)} at location {box}")
Esto debería imprimir:
Detected remote con confianza 0.998 en ubicación [40.16, 70.81, 175.55, 117.98]
Detected remote con confianza 0.996 en ubicación [333.24, 72.55, 368.33, 187.66]
Detected couch con confianza 0.995 en ubicación [-0.02, 1.15, 639.73, 473.76]
Detected cat con confianza 0.999 en ubicación [13.24, 52.05, 314.02, 470.93]
Detected cat con confianza 0.999 en ubicación [345.4, 23.85, 640.37, 368.72]
Funcionalidades
- Modelo transformador encoder-decoder con una base convolucional
- Dos cabezales añadidos en las salidas del decodificador: una capa lineal para las etiquetas de clase y un MLP para las cajas delimitadoras
- Utiliza consultas de objetos para detectar objetos en una imagen
- Entrenado utilizando una pérdida de emparejamiento bipartito
- Algoritmo de emparejamiento húngaro para crear asignaciones óptimas uno a uno entre consultas y anotaciones
- Optimización mediante combinación lineal de pérdida L1 e IoU generalizada para las cajas delimitadoras
Casos de uso
- Detección de objetos en imágenes
- Explorando modelos DETR disponibles
- Desarrollo de aplicaciones basadas en la detección de objetos