Dome-DETR
Un especialista en objetos diminutos construido sobre D-FINE: una cabeza de densidad decide dónde hay objetos, la atención del encoder se restringe a las ventanas que los contienen, y el número de queries se dimensiona a partir de esa densidad en lugar de quedar fijo. LibreYOLO lo soporta para detección.
- Tareas
- detection
- Tamaños
- s, m, l at 800 px
- Instalación
pip install libreyolo- Nivel de compatibilidad
- Compatible, desde v1.5.0. Modelos entrenables de apoyo: se mantienen operativos en CI y reciben funciones cuando surge la oportunidad.
- Proyecto original
- Dome-DETR de The Dome-DETR Authors, Apache-2.0 code; academic-research-only weights. Artículo, fuente
- Licencias
- Código Apache-2.0, pesos Apache-2.0 code; academic-research-only weights. Uso comercial
Instalación
Dome-DETR no necesita ningún extra opcional. Todo lo que necesita importar está en la instalación base.
pip install libreyoloPredicción
Los seis checkpoints convertidos se descargan automáticamente de los mirrors de LibreYOLO. Sus términos upstream restringen el uso a investigación académica.
from libreyolo import LibreYOLO, SAMPLE_IMAGE # Los pesos preentrenados se restringen a investigación académica.model = LibreYOLO("LibreDOMEDETRs-visdrone.pt", device="cpu")print(model(SAMPLE_IMAGE).boxes)El 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.
Dos capacidades están desactivadas en esta familia. La captura de grafos CUDA está deshabilitada, porque el número de queries de PAQI depende de los datos y, por tanto, el forward cambia de forma de una imagen a otra, que es justo lo que la captura de grafos no puede absorber. El aumento de datos en test (TTA) se ejecuta a un único tamaño cuadrado fijo, así que pedir un TTA multiescala no hace nada.
Variantes
Tres tamaños, s, m y l, todos a 800 por 800. El tamaño selecciona el backbone, y el dataset del que vienen los pesos selecciona la profundidad del decoder y el presupuesto de queries, así que un código de tamaño por sí solo no identifica un grafo. Los pesos de AI-TOD-V2 seleccionan entre 300 y 1500 queries por imagen, los de VisDrone entre 250 y 500, y el modelo grande ejecuta cuatro capas de decoder en AI-TOD-V2 frente a seis en VisDrone.
Dome-DETR es D-FINE con tres añadidos. DeFE predice un mapa de densidad. MWAS usa ese mapa para restringir la atención del encoder a las ventanas que de verdad contienen objetos, en lugar de atender a todas partes. PAQI dimensiona el conjunto de queries a partir de esa misma densidad en lugar de decodificar 300 fijas. La ganancia se concentra donde los objetos son más pequeños, y se reduce a medida que crecen: la ablación del propio upstream mueve el AP en objetos muy diminutos de 14.0 a 17.8, mientras que el AP en objetos medianos solo pasa de 45.4 a 46.4. Trátalo como un complemento de D-FINE para imágenes aéreas, de dron y de teledetección, no como un reemplazo.
No hay filas de benchmark de Vision Analysis registradas para esta familia.
Entrenamiento
Dome-DETR es entrenable. El entrenamiento ejecuta el objetivo completo de upstream: las funciones de pérdida de D-FINE más la supervisión de densidad y de conteo de DeFE, con las queries de padding enmascaradas fuera de los términos de clasificación y con máscaras de atención de denoising por imagen, para que el padding de una imagen no pueda filtrarse en el de otra.
from libreyolo import LibreYOLO model = LibreYOLO("LibreDOMEDETRs-visdrone.pt")model.train(data="my-dataset.yaml", epochs=160, imgsz=800, batch=4, lr0=2e-4)libreyolo train model=LibreDOMEDETRs-visdrone.pt data=my-dataset.yaml \ epochs=160 imgsz=800 batch=4 lr0=2e-4libreyolo train model=LibreDOMEDETRs-visdrone.pt data=my-dataset.yaml \ epochs=160 device=0,1 batch=4La configuración hereda la receta de D-FINE y cambia lo que MWAS exige. imgsz
es 800, lr0 es 2e-4, el grupo de parámetros del backbone se escala con
backbone_lr_mult=0.1, y multi_scale se fuerza a desactivado, porque las
ventanas de MWAS necesitan que la entrada siga siendo divisible por el stride 8.
batch vale 4 por defecto en lugar de los 16 de D-FINE: PAQI rellena cada batch
hasta su miembro más ancho, así que la memoria depende de la imagen más cargada
del batch y no de la media.
Una advertencia honesta sobre la precisión. Upstream entrena 160 epochs con
MultiStepLR(milestones=[80, 120], gamma=0.8), mientras que estos valores por
defecto ejecutan el schedule flat-cosine de D-FINE durante esos mismos 160
epochs. Ese schedule no se ha reproducido aquí, y las cifras de AP del paper
tampoco, así que léelas como resultados de los autores de upstream y no como una
promesa de que esta receta los alcanza. Proporciona el schedule de upstream si
el objetivo es igualar el paper.
Consulta entrenamiento para datasets, aumento de datos (data augmentation), multi-GPU y loggers.
Validación
val() devuelve un diccionario indexado por nombre de métrica, e imprime
resultados por clase si dejas verbose activado.
from libreyolo import LibreYOLO model = LibreYOLO("LibreDOMEDETRs-visdrone.pt")metrics = model.val(data="my-dataset.yaml") print(metrics["metrics/mAP50-95"])print(metrics["metrics/mAP50"])libreyolo val model=LibreDOMEDETRs-visdrone.pt data=my-dataset.yamlLa validación se ejecuta contra tu propio dataset, en el formato con el que entrenaste. El control de validación de COCO de la biblioteca no se aplica aquí, ya que no existe ningún checkpoint de COCO de esta familia contra el que medir.
Exportación
La exportación no está soportada, en ningún formato, y pedirla lanza un error en vez de producir un archivo.
El motivo es PAQI. Decide el número de queries por imagen a partir de propuestas filtradas por densidad y de un bucle voraz de supresión adaptativa a la densidad, así que la longitud de salida del decoder es una propiedad de la entrada y no del grafo. El trazado deja fijado el número que produjo la imagen con la que se trazó, lo que da un artefacto que devuelve resultados incorrectos de forma silenciosa para cualquier otra imagen. Una formulación estática tendría que desenrollar esa supresión sobre todos los candidatos, entre 250 y 1500, y reducirla a un top-k fijo eliminaría exactamente el recall en objetos diminutos que justifica la existencia de esta familia. Si necesitas un transformer de detección exportable, el indicado es D-FINE.
Checkpoints
| Archivo | Licencia de los pesos |
|---|---|
| Detection | |
| LibreDOMEDETRs-aitod.pt | other |
| LibreDOMEDETRm-aitod.pt | other |
| LibreDOMEDETRl-aitod.pt | other |
| LibreDOMEDETRs-visdrone.pt | other |
| LibreDOMEDETRm-visdrone.pt | other |
| LibreDOMEDETRl-visdrone.pt | other |
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
- Dome-DETR, The Dome-DETR Authors
- Licencia del proyecto original
- Apache-2.0 code; academic-research-only weights
- Fuente del proyecto original
- github.com/RicePasteM/Dome-DETR
- Código de LibreYOLO
- MIT
- Pesos
- Apache-2.0 code; academic-research-only weights, republicados en huggingface.co/LibreYOLO
- Interpretación
- The upstream source is Apache-2.0. Six mirrored checkpoints retain the publisher academic-research-only restriction.
Los seis mirrors conservan la restricción upstream de uso exclusivo para investigación académica. El código tiene su propia licencia. El repositorio upstream es Apache-2.0, el port de LibreYOLO es MIT, y los pesos que entrenes tú con tus propios datos son tuyos.