Deformable DETR
Deformable DETR sustituye la cross-attention densa de DETR por un muestreo disperso y multiescala alrededor de cada punto de referencia, que es lo que hizo entrenables en la práctica a los detectores transformer. LibreYOLO incluye cinco tamaños para detección, solo inferencia.
- Tareas
- detection
- Tamaños
- r50ss, r50ssdc5, r50, r50refine, r50twostage at 800 px
- Instalación
pip install libreyolo- Nivel de compatibilidad
- Solo inferencia, desde v. Solo permite predecir, validar y exportar. Las funciones de entrenamiento no se aplican.
- Licencias
- Código Apache-2.0, pesos Apache-2.0. Uso comercial
Instalación
Deformable DETR no necesita ningún extra opcional. Todo lo que importa está en la instalación base, con un núcleo de atención deformable multiescala en PyTorch puro.
pip install libreyoloInstalar libreyolo[hub-kernels] es opcional. Una vez presente el paquete
kernels, LibreYOLO descarga en tiempo de ejecución un kernel compilado de
atención deformable multiescala desde el Hugging Face Hub y lo usa en lugar del
núcleo en PyTorch puro; LIBREYOLO_HUB_KERNELS=0 lo vuelve a desactivar.
Predicción
Los pesos se descargan de Hugging Face en el primer uso y se guardan en la caché local.
from libreyolo import LibreYOLO, SAMPLE_IMAGE model = LibreYOLO("LibreDeformableDETRr50.pt")result = model(SAMPLE_IMAGE, save=True) for box in result.boxes: print(box.cls, box.conf, box.xyxy)libreyolo predict model=LibreDeformableDETRr50.pt source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg save=TrueEl objeto Results devuelto es el mismo que devuelven todas las familias, así
que cambiar a otro detector es un cambio de una línea. conf y max_det
filtran la selección de queries; iou se acepta por paridad de API pero no
tiene efecto, porque el decoder es un predictor de conjuntos sin paso de NMS.
Consulta predicción para fuentes, streaming y manejo de
resultados.
Deformable DETR es solo de inferencia en LibreYOLO. Upstream lo entrena con
matching húngaro y una focal loss de clasificación; esa receta no está
implementada aquí, así que train() lanza NotImplementedError.
Variantes
Cinco checkpoints cubren las configuraciones publicadas, todas a la misma
resolución de entrada. r50ss restringe la atención a una sola escala de
características; r50ssdc5 añade encima una etapa C5 dilatada en el backbone.
r50 es la configuración multiescala por defecto, que muestrea en cuatro
niveles de mapas de características. r50refine añade refinamiento iterativo de
los bounding boxes a lo largo de las capas del decoder, y r50twostage genera
sus propuestas de región iniciales a partir de la salida del encoder en lugar de
usar queries aprendidas.
Validación
val() devuelve un diccionario de claves metrics/ que cubren precisión,
recall, mAP 50 y mAP 50-95, medidas contra cualquier dataset en el formato con
el que entrenaste.
from libreyolo import LibreYOLO model = LibreYOLO("LibreDeformableDETRr50.pt") # val() devuelve un dict normal, no un objetometrics = model.val(data="my-dataset.yaml") print(metrics["metrics/mAP50-95"])print(metrics["metrics/mAP50"])print(metrics["metrics/precision"], metrics["metrics/recall"])libreyolo val model=LibreDeformableDETRr50.pt data=my-dataset.yamlExportación
| Tarea | ONNX | TorchScript | ExecuTorch | TensorRT | OpenVINO | Paddle | MNN | RKNN | ncnn | TFLite | CoreML | Core AI |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Detection | Detection to ONNX: compatible | Detection to TorchScript: compatible | Detection to ExecuTorch: compatible | Detection to TensorRT: compatible | Detection to OpenVINO: compatible | Detection to Paddle: no compatible | Detection to MNN: no compatible | Detection to RKNN: no compatible | Detection to ncnn: no compatible | Detection to TFLite: no compatible | Detection to CoreML: no compatible | Detection to Core AI: no compatible |
Un artefacto exportado se vuelve a cargar con LibreYOLO() según su extensión
de archivo, así que un archivo .onnx o .engine se comporta como un
checkpoint y devuelve el mismo Results.
Exportación lista los argumentos que acepta cada formato.
from libreyolo import LibreYOLO model = LibreYOLO("LibreDeformableDETRr50.pt")model.export(format="onnx", imgsz=800)model.export(format="tensorrt", imgsz=800, half=True)libreyolo export model=LibreDeformableDETRr50.pt format=onnx imgsz=800libreyolo export model=LibreDeformableDETRr50.pt format=tensorrt imgsz=800 half=Truefrom libreyolo import LibreYOLO, SAMPLE_IMAGE # La factoría enruta según la extensión del archivo, así que un artefacto# exportado se carga como cualquier checkpoint y devuelve el mismo# objeto Results.model = LibreYOLO("LibreDeformableDETRr50.onnx")result = model(SAMPLE_IMAGE) print(result.boxes.xyxy)Checkpoints
Todos los archivos de pesos publicados de esta familia.
| Archivo | Entrada (px) | Licencia de los pesos |
|---|---|---|
| Detection | ||
| LibreDeformableDETRr50ss.pt | 800 | apache-2.0 |
| LibreDeformableDETRr50ssdc5.pt | 800 | apache-2.0 |
| LibreDeformableDETRr50.pt | 800 | apache-2.0 |
| LibreDeformableDETRr50twostage.pt | 800 | apache-2.0 |
| LibreDeformableDETRr50refine.pt | 800 | apache-2.0 |
Todos los archivos anteriores existen hoy en la organización de LibreYOLO y se descargan la primera vez que se usan.
Licencia
Comprueba la licencia en el repositorio de Hugging Face de los pesos concretos que descargues. Cada checkpoint de la organización de LibreYOLO incluye una, y no siempre es la misma en toda una familia. Ese repositorio es la fuente autorizada; el resumen siguiente describe qué se aplicaba cuando se verificó esta página por última vez.
Esta es una descripción de las licencias implicadas, no asesoramiento legal. Si la respuesta es importante a nivel comercial, lee las licencias y busca tu propio asesoramiento.
- Trabajo original
- Deformable DETR, SenseTime
- Licencia del proyecto original
- Apache-2.0
- Fuente del proyecto original
- github.com/fundamentalvision/Deformable-DETR
- Código de LibreYOLO
- MIT
- Pesos
- Apache-2.0, republicados en huggingface.co/LibreYOLO
- Interpretación
- Apache-2.0 is a permissive license, so these weights can be used in commercial and closed-source products. It asks you to keep its license text and attribution notices with any copy of the weights you redistribute, and it grants a patent license. It places no obligation on your own application code, and weights you train yourself on your own data are yours. The five checkpoints are converted from SenseTime's own Hugging Face mirrors, each of which declares apache-2.0 in its model card; that declaration, not the original repository's Google Drive release links, is the redistribution basis.
Cita
@article{zhu2020deformable,
title={Deformable DETR: Deformable Transformers for End-to-End Object Detection},
author={Zhu, Xizhou and Su, Weijie and Lu, Lewei and Li, Bin and Wang, Xiaogang and Dai, Jifeng},
journal={arXiv preprint arXiv:2010.04159},
year={2020}
}Copiado del bloque de cita de los autores en github.com/fundamentalvision/Deformable-DETR#citing-deformable-detr.