PekingU/rtdetr_r18vd_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 razonable equilibrio entre velocidad y precisión. Sin embargo, observamos que la velocidad y precisión de YOLOs se ven afectadas negativamente por el NMS. Recientemente, los detectores basados en Transformers 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 explotar completamente la ventaja de excluir NMS. En este trabajo, proponemos el Real-Time DEtection TRansformer (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 enfocamos en mantener la precisión mientras mejoramos la velocidad, seguido de 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, desacoplando la interacción intra-escala y la fusión entre escalas para mejorar la velocidad. Luego, proponemos la selección de consultas con mínima incertidumbre para proporcionar consultas iniciales de alta calidad al decodificador, mejorando así la precisión. Además, RT-DETR admite ajuste de velocidad flexible ajustando la cantidad de capas del decodificador para adaptarse a varios escenarios sin necesidad de reentrenamiento. Nuestro RT-DETR-R50 / R101 logra un 53.1% / 54.3% AP en COCO y 108 / 74 FPS en GPU T4, superando a los YOLOs avanzados en velocidad y precisión. También desarrollamos RT-DETRs escalados que superan a los detectores YOLO más livianos (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 la preentrenamiento con Objects365, RT-DETR-R50 / R101 alcanza un 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_r18vd_coco_o365")
model = RTDetrForObjectDetection.from_pretrained("PekingU/rtdetr_r18vd_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

Digno sucesor de la serie YOLO para detección de objetos en tiempo real
Eliminación del NMS para mejor rapidez y precisión
Codificador híbrido eficiente para procesar características de múltiples escalas rápidamente
Selección de consultas con mínima incertidumbre para mejorar la precisión
Ajuste flexible de velocidad ajustando las capas del decodificador
Mejor rendimiento que modelos avanzados de YOLO en términos de velocidad y precisión

Casos de uso

Detección de objetos en tiempo real para aplicaciones de seguridad y vigilancia
Sistemas de navegación autónoma y asistencia para vehículos
Análisis en tiempo real de contenido multimedia
Aplicaciones de realidad aumentada que requieren detección rápida de objetos