PekingU/rtdetr_r50vd_coco_o365

PekingU
Detección de objetos

La serie YOLO se ha convertido en el marco más popular para la detección de objetos en tiempo real debido a su equilibrio razonable entre velocidad y precisión. Sin embargo, observamos que la velocidad y precisión de los YOLOs se ven negativamente afectadas por el NMS. Recientemente, los detectores basados en Transformadores de extremo a extremo (DETRs) han proporcionado una alternativa para eliminar el NMS. No obstante, el alto costo computacional limita su practicidad y les impide aprovechar al máximo la ventaja de excluir el NMS. En este documento, proponemos el Real-Time DEtection TRansformer (RT-DETR), el primer detector de objetos en tiempo real de extremo a extremo, según nuestro mejor conocimiento, que aborda este dilema. Construimos RT-DETR en dos pasos, basándonos en el avanzado DETR: primero nos enfocamos en mantener la precisión mientras mejoramos la velocidad, y luego en mantener la velocidad mientras mejoramos la precisión. Específicamente, diseñamos un codificador híbrido eficiente para procesar expeditamente características de múltiples escalas desacoplando la interacción intra-escala y la fusión entre escalas para mejorar la velocidad. Luego, proponemos la selección de consultas mínimas de incertidumbre para proporcionar consultas iniciales de alta calidad al decodificador, mejorando así la precisión. Además, RT-DETR admite una sintonización de velocidad flexible ajustando el número de capas del decodificador para adaptarse a varios escenarios sin necesidad de reentrenamiento. Nuestro RT-DETR-R50 / R101 logra 53.1% / 54.3% AP en COCO y 108 / 74 FPS en GPU T4, superando a los YOLOs avanzados anteriores tanto en velocidad como en precisión. También desarrollamos RT-DETRs escalados que superan a los detectores YOLO más ligeros (modelos S y M). Además, RT-DETR-R50 supera a DINO-R50 en un 2.2% AP en precisión y aproximadamente 21 veces en FPS. Después de preentrenarse con Objects365, RT-DETR-R50 / R101 logra 55.3% / 56.2% AP.

Como usar

Para comenzar a usar el modelo, utilice el código a continuación:

import torch
import requests
from PIL import Image
from transformers import RTDetrForObjectDetection, RTDetrImageProcessor

url = 'http://images.cocodataset.org/val2017/000000039769.jpg'
image = Image.open(requests.get(url, stream=True).raw)

image_processor = RTDetrImageProcessor.from_pretrained("PekingU/rtdetr_r50vd_coco_o365")
model = RTDetrForObjectDetection.from_pretrained("PekingU/rtdetr_r50vd_coco_o365")

inputs = image_processor(images=image, return_tensors="pt")

with torch.no_grad():
    outputs = model(**inputs)

results = image_processor.post_process_object_detection(outputs, target_sizes=torch.tensor([image.size[::-1]]), threshold=0.3)

for result in results:
    for score, label_id, box in zip(result["scores"], result["labels"], result["boxes"]):
        score, label = score.item(), label_id.item()
        box = [round(i, 2) for i in box.tolist()]
        print(f"{model.config.id2label[label]}: {score:.2f} {box}")

Funcionalidades

Detector de objetos de extremo a extremo en tiempo real
Velocidad ajustable sin necesidad de reentrenamiento
Codificador híbrido eficiente para procesar características de múltiples escalas
Selección de consultas mínimas de incertidumbre para mejorar la precisión
Soporte para ajuste flexible del número de capas del decodificador
Supera a modelos avanzados YOLO en velocidad y precisión
Compatible con COCO y Objects365 datasets

Casos de uso

Detección de objetos en tiempo real para sistemas de vigilancia
Aplicaciones de visión artificial en vehículos autónomos
Sistemas de atención médica para la detección y seguimiento de objetos
Automatización industrial y robótica
Aplicaciones de realidad aumentada y realidad virtual