PekingU/rtdetr_r50vd
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 YOLOs se ven negativamente afectadas por el NMS. Recientemente, los detectores basados en Transformer 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 completamente la ventaja de excluir 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 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, 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 al desacoplar la interacción intra-escala y la fusión de escala cruzada 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 afinació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 alcanza 53.1% / 54.3% AP en COCO y 108 / 74 FPS en GPU T4, superando a los avanzados YOLOs 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 2.2% AP en precisión y aproximadamente 21 veces en FPS. Después de pre-entrenar 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_r50vd')
model = RTDetrForObjectDetection.from_pretrained('PekingU/rtdetr_r50vd')
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 en tiempo real de extremo a extremo.
- Codificador híbrido eficiente para procesamiento rápido de características de múltiples escalas.
- Selección de consultas con mínima incertidumbre para consultas iniciales de alta calidad.
- Afinación de velocidad flexible ajustando el número de capas del decodificador.
- Supera a los detectores YOLO avanzados en velocidad y precisión.
Casos de uso
- Detección de objetos en tiempo real en videos de vigilancia.
- Detección de objetos para sistemas autónomos y robótica.
- Mejora de la precisión en aplicaciones de análisis de imágenes en tiempo real.
- Aplicaciones que requieren detección de objetos sin necesidad de NMS.