PekingU/rtdetr_r101vd_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 la NMS. Recientemente, los detectores basados en Transformer de extremo a extremo (DETRs) han proporcionado una alternativa para eliminar la NMS. No obstante, el alto costo computacional limita su practicidad y les impide explotar completamente la ventaja de excluir la NMS. En este documento, proponemos el Transformer de Detección en Tiempo Real (RT-DETR), el primer detector de objetos en tiempo real de extremo a extremo que aborda este dilema. Construimos RT-DETR en dos pasos, basándonos en el avanzado DETR: primero nos centramos en mantener la precisión mientras mejoramos la velocidad, luego en mantener la velocidad mientras mejoramos la precisión. Específicamente, diseñamos un codificador híbrido eficiente para procesar rápidamente características de múltiples escalas mediante la desacoplamiento de la interacción intra-escala y la fusión cruzada de 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 el ajuste flexible de la velocidad ajustando el número de capas del decodificador para adaptarse a varios escenarios sin necesidad de reentrenamiento. Nuestro RT-DETR-R50 / R101 alcanza 53.1% / 54.3% AP en COCO y 108 / 74 FPS en GPU T4, superando a los avanzados YOLOs en velocidad y 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 preentrenar con Objects365, RT-DETR-R50 / R101 alcanza 55.3% / 56.2% AP.

Como usar

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_r101vd_coco_o365")
model = RTDetrForObjectDetection.from_pretrained("PekingU/rtdetr_r101vd_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

Detección en tiempo real
Exclusión de NMS
Codificador híbrido eficiente
Selección de consultas mínimas de incertidumbre
Ajuste flexible de la velocidad
Escaladable y mayor precisión

Casos de uso

Detección de objetos en tiempo real
Aplicaciones que requieren alto rendimiento y baja latencia
Escenarios que necesitan una alta precisión en la detección sin post-procesamiento adicional
Proyectos de investigación que involucran la detección de objetos en imágenes y videos