Guía de conjuntos de datos para detectar drones: entrena Ultralytics YOLO con UAV diminutos
Compara los conjuntos de datos DUT Anti-UAV, Drone-vs-Bird y de detección térmica de drones; después, entrena Ultralytics YOLO26 para detectar drones diminutos y reducir las falsas alarmas.

El UAV Detection and Tracking Benchmark indica que el tamaño medio de los drones en los datos de Drone-vs-Bird es de 34 x 23 píxeles. Imagina un dron de ese tamaño en un fotograma hipotético de 3840 x 2160: al redimensionarlo a los 640 píxeles que usa un detector de forma predeterminada, se reduciría a unos 5,7 x 3,8 píxeles.
Los equipos antidrones tienen que mantener visible ese objeto desde el conjunto de datos que eligen hasta el modelo que implementan. Esta guía cubre las cuatro decisiones que lo determinan con Ultralytics YOLO26: en qué conjunto de datos de detección de drones entrenar, qué tamaño de imagen usar, cuándo añadir inferencia con mosaicos SAHI y cómo evaluar el modelo según el tamaño del objeto para que un buen mAP general no oculte los drones distantes que no se detectan.

La mayoría de los «conjuntos de datos de detección de drones» responden a la pregunta equivocada#
Quienes buscan un conjunto de datos de detección de drones suelen referirse a uno de estos dos trabajos:
- Detectar drones (anti-UAV o antidrones): una cámara terrestre o aérea busca una aeronave pequeña contra el cielo, los árboles o los edificios. Necesitas imágenes de drones, idealmente también con aves y otros objetos parecidos.
- Detectar desde drones: una cámara montada en el dron apunta hacia personas, coches y edificios. VisDrone es el benchmark estándar para esto. Tiene 8629 imágenes aéreas de 10 clases, desde peatones hasta autobuses, y no incluye ninguna clase de dron.
VisDrone sigue siendo útil para los equipos antidrones, porque sus objetos son diminutos y están muy juntos. Por eso es un buen conjunto de datos público para probar ajustes de objetos pequeños, como el tamaño de imagen y el recorte en mosaicos, antes de tener tus propios datos. Para las aplicaciones aéreas en sí, consulta nuestro resumen de visión artificial en operaciones con drones. El resto de esta publicación trata el primer trabajo: detectar drones.
Elige un conjunto de datos según la cámara y el punto de vista#
El conjunto de datos público adecuado depende de si la cámara está en tierra o en el aire, de si graba luz visible o infrarrojos térmicos y de la distancia a la que vuela el objeto:
| Conjunto de datos | Imágenes | Tamaño | Ideal para |
|---|---|---|---|
| Drone-vs-Bird | Vídeo RGB, de 720 x 576 a 3840 x 2160 | 77 secuencias de entrenamiento anotadas | Cámaras terrestres; drones con aves en la escena |
| DUT Anti-UAV | Imágenes RGB, de 240 x 160 a 5616 x 3744 | 10 000 imágenes (5200 de entrenamiento / 2600 de validación / 2200 de prueba), además de 20 vídeos de seguimiento | Un primer punto de referencia con luz visible |
| Det-Fly | RGB, 3840 x 2160 | 13 271 imágenes | Vistas aire-aire de un DJI Mavic |
| Anti-UAV | Vídeo RGB y térmico emparejado | 318 pares de vídeos | Seguimiento diurno y nocturno con ambas modalidades |
| Anti-UAV410 | Vídeo infrarrojo térmico | 410 vídeos (200 de entrenamiento / 90 de validación / 120 de prueba) | Detección y seguimiento térmicos |
| LRDDv3 | RGB 4K e IR de 640 x 512, con etiquetas de distancia | 102 532 imágenes RGB; 29 630 imágenes IR emparejadas | Evaluación de drones distantes que tiene en cuenta la distancia |
El recuento de Drone-vs-Bird se refiere al conjunto de entrenamiento de 77 secuencias distribuido para las ediciones de 2021 y ICASSP 2023 del desafío, cuyas resoluciones recoge el estudio de SynDroneVision. Ese estudio también trata Det-Fly y Anti-UAV, y el artículo de LRDDv3 describe su propio conjunto de datos. Las licencias y las condiciones de acceso varían entre conjuntos de datos, así que revísalas antes de cualquier uso comercial.
Entrena con varios conjuntos de datos y reserva uno para las pruebas#
Un modelo que funciona bien con el conjunto de datos con el que se ha entrenado puede tener dificultades con otro. Los autores de LRDDv3 entrenaron modelos Ultralytics YOLO11m con distintos conjuntos de datos y probaron cada uno en Det-Fly. El modelo entrenado con Drone-vs-Bird obtuvo un mAP50 de 0,484 y el entrenado con DUT Anti-UAV, de 0,431.
Combina dos o tres fuentes que se ajusten a tu cámara y a la distancia, y conviértelas todas al formato de detección YOLO. Después, reasigna los ID de clase de forma coherente, completa las anotaciones que falten de aves y divide los datos por vuelo o vídeo antes de extraer fotogramas o mosaicos. Si divides por fotograma, fotogramas casi idénticos de un mismo vuelo pueden acabar tanto en entrenamiento como en prueba, lo que infla las puntuaciones. Reserva un conjunto de datos completo o grabaciones de tu propio emplazamiento para usarlo como conjunto de prueba, y añade grabaciones solo con aves y de cielo vacío para medir las falsas alarmas.
Etiqueta las aves además de los drones#
Las aves son una fuente habitual de falsas alarmas en la detección de drones basada en visión. Drone-vs-Bird contiene aves como elementos distractores, pero no las etiqueta como clase, así que hay que añadir esos recuadros a un conjunto de datos de dos clases. Un estudio sobre drones pequeños de 2025 entrenó YOLO11m con las clases dron y ave, e ignoró las predicciones de aves durante la inferencia. En ese experimento, el modelo de dos clases detectó los drones un poco mejor que el modelo de solo drones.
Los datos públicos te sirven para establecer un punto de referencia, y tus propias grabaciones te permiten llegar a producción. La anotación en Ultralytics Platform te permite etiquetar recuadros de drones y aves en fotogramas de tus propias cámaras, y los datos sintéticos pueden añadir fondos y ángulos poco comunes. La solución que quedó primera en AVSS 2021 Drone-vs-Bird usó un detector Ultralytics YOLOv5 ajustado con imágenes reales y sintéticas, junto con un rastreador con filtro de Kalman que aumentaba la confianza en drones tenues y distantes.
El tamaño de imagen determina si el dron sobrevive al redimensionamiento#
YOLO26 redimensiona cada imagen para que su lado más largo coincida con imgsz, que es 640 de forma predeterminada. Si después del redimensionamiento apenas quedan píxeles de un dron, el detector tiene poco con lo que trabajar. Aumentar imgsz es la primera solución, y tanto la documentación de entrenamiento como la guía de ajuste fino recomiendan imgsz=1280 para conjuntos de datos con objetos pequeños.
El coste aumenta aproximadamente en proporción al número de píxeles, así que 1280 requiere unas cuatro veces más cálculo que 640. Como referencia, la documentación de YOLO26 indica 1,7 ms para YOLO26n y 2,5 ms para YOLO26s en una NVIDIA T4, con TensorRT 10, lote 1 y nms=False, a 640 píxeles en COCO val2017. No son mediciones con drones ni a 1280 píxeles, así que mide tu propia configuración.

Una regla inicial útil procede de la lección sobre latencia de Ultralytics Academy: vale la pena probar un tamaño si el objeto importante más pequeño sigue ocupando unos 10 píxeles con ese tamaño. Si el presupuesto es ajustado, compara un modelo más pequeño a mayor resolución con uno más grande a menor resolución en el mismo conjunto de validación de drones y quédate con el que detecte más drones pequeños dentro de tu objetivo de latencia.
YOLO26 mantiene los objetos diminutos en la selección de candidatos#
Con un tamaño de imagen suficiente, el modelo aún tiene que aprender de recuadros diminutos. La función Small-Target-Aware Label Assignment (STAL) de YOLO26 ayuda en este caso. En los modelos YOLO26 estándar P3 a P5 de la versión 8.4.199, STAL amplía a 16 píxeles los lados de los recuadros de selección de candidatos que miden menos de 16 píxeles y conserva los objetivos de regresión originales, por lo que es menos probable que los drones diminutos se queden sin anclajes candidatos.
Para los objetos más pequeños, también puedes cambiar la arquitectura. YOLO26 incluye una variante yolo26-p2.yaml que añade un nivel de salida con stride 4 a la pirámide de características, además de P3 a P5. Con una entrada de 640 x 640, aumenta el cálculo sin fusionar de YOLO26n de 6,1 a 9,5 GFLOPs. P2 se publica como una arquitectura YAML sin pesos P2 preentrenados, así que puedes crearla con YOLO("yolo26n-p2.yaml") y entrenarla con tus datos.
La inferencia por mosaicos SAHI conserva todos los detalles de los fotogramas 4K#
Incluso a 1280 píxeles, un fotograma 4K pierde dos tercios de su anchura antes de que el modelo lo procese. SAHI (inferencia hiperprecisa asistida por recortes) se integra con Ultralytics YOLO26 para evitar esa pérdida. Divide el fotograma en recortes superpuestos, ejecuta el modelo en cada uno y vuelve a colocar los recuadros en la imagen completa, de modo que un dron repartido entre recortes contiguos solo se cuenta una vez. El artículo de SAHI describe el método y su variante de ajuste fino asistido por recortes.

Configura por separado el tamaño del recorte y el tamaño de entrada del modelo; después, prueba la escala resultante de los drones en grabaciones reservadas. Un modelo entrenado con fotogramas 4K completos redimensionados a 1280 aprendió a detectar drones tres veces más pequeños que los que aparecen en recortes de 1280 píxeles a resolución nativa. Si esa diferencia de escala perjudica los resultados, prueba a ajustar el modelo con recortes extraídos de tus fotogramas de entrenamiento a resolución completa, como hace el artículo de SAHI, y compáralo con el modelo de fotograma completo en el mismo conjunto de prueba. Empieza con un solapamiento del 20 % entre recortes contiguos y comprueba si se pierden objetos en los bordes.
La carga de trabajo es predecible. Con recortes de 1280 x 1280 y un solapamiento de 0,2, un fotograma de 3840 x 2160 requiere cuatro columnas y dos filas, es decir, ocho pasadas hacia delante en lugar de una, siempre que desactives la predicción adicional de imagen completa de SAHI. Esto resulta adecuado para grabaciones, la revisión de alertas y GPU de borde potentes. Si una cámara necesita procesar todos los fotogramas a la velocidad máxima, recorta solo la región del cielo o ejecuta análisis periódicos con recortes, o actívalos mediante otro sensor, como un radar.
Evalúa tu detector por tamaño y por clase#
La precisión media promedio (mAP) general calcula el promedio de la AP de las clases. En este conjunto de datos de dos clases, el rendimiento con aves puede ocultar una detección débil de drones y, dentro de la clase de drones, una puntuación general alta puede ocultar una baja exhaustividad en los intervalos de menor tamaño. Desglosa la puntuación por clase y por tamaño antes de fiarte de ella.
La validación con save_json=True añade la AP de objetos pequeños, medianos y grandes en conjuntos de datos de detección, calculada con faster-coco-eval según los intervalos de COCO: menos de 32 x 32 píxeles de área de recuadro, hasta 96 x 96 y más. Esas cifras abarcan ambas clases a la vez. El estudio de SynDroneVision indica que la mayoría de los drones anotados en Drone-vs-Bird miden menos de 32 x 32, así que presta atención a la AP_small solo para drones y a la exhaustividad.
Para obtenerlas, evalúa predictions.json frente a las anotaciones de referencia correspondientes, usando el área del recuadro en píxeles de la imagen original. Ultralytics guarda los recuadros en las coordenadas de la imagen original, usa el nombre base del archivo de imagen como ID de imagen y numera las clases personalizadas a partir de 1; por tanto, aquí la categoría 1 es dron y la categoría 2, ave. Convierte tus etiquetas de prueba a un JSON en formato COCO con los mismos ID de imagen y de categoría, y limita la evaluación a catIds=[1].
El intervalo de objetos pequeños de COCO es demasiado amplio para el trabajo a larga distancia, porque agrupa un dron de 12 píxeles y uno de 30 x 30. Define intervalos de área más precisos del mismo modo, por ejemplo, menos de 64 píxeles de área (8 x 8), de 64 a 256 (16 x 16) y de 256 a 1024 (32 x 32), y consulta la AP y la exhaustividad de los drones para cada intervalo. Si tus etiquetas incluyen la distancia, como las de LRDDv3, informa también de la exhaustividad por distancia. Incluye la precisión junto a ella, con un recuento separado de las predicciones de drones en fotogramas solo con aves y de cielo vacío.

Dos hábitos ayudan a mantener la fiabilidad de las cifras:
- Valida con el tamaño de implementación. Un modelo entrenado a 1280 y validado a 640 ve los drones con la mitad del tamaño con el que se entrenó, por lo que sus puntuaciones bajan por motivos ajenos al modelo.
- Interpreta el mAP50-95 con cuidado. Un desplazamiento de 2 píxeles en un recuadro de 10 píxeles supone una gran parte de la IoU, así que los umbrales estrictos penalizan los objetivos diminutos. Haz un seguimiento de la exhaustividad de los drones no detectados y de la AP50 de las detecciones clasificadas correctamente que alcanzan una IoU de 0,5.
Entrena, recorta y evalúa un detector de drones YOLO26#
Estos pasos te llevan desde un conjunto de datos combinado de drones y aves hasta una comparación de la inferencia con imágenes completas y con recortes en el mismo conjunto de prueba reservado.
-
Instala los paquetes con
pip install -U ultralytics sahi. -
Escribe un YAML del conjunto de datos con las aves como segunda clase y una partición de prueba reservada:
path: datasets/drones
train: images/train
val: images/val
test: images/test
names:
0: drone
1: bird- Entrena a 1280 con pesos preentrenados.
batch=-1permite que AutoBatch elija un tamaño de lote que utilice aproximadamente el 60 % de la memoria de la GPU:
from ultralytics import YOLO
model = YOLO("yolo26s.pt")
model.train(data="drones.yaml", epochs=100, imgsz=1280, batch=-1, name="drone_1280")- Evalúa el punto de referencia con imágenes completas en la partición de prueba y con la misma resolución. Esto guarda
predictions.jsonen la carpeta de ejecución:
best = YOLO("runs/detect/drone_1280/weights/best.pt")
metrics = best.val(data="drones.yaml", split="test", imgsz=1280, save_json=True)- Exporta las predicciones con recortes para las mismas imágenes de prueba, en coordenadas de la imagen original y con la pasada adicional de imagen completa de SAHI desactivada:
import json
from pathlib import Path
from sahi import AutoDetectionModel
from sahi.predict import get_sliced_prediction
detector = AutoDetectionModel.from_pretrained(
model_type="ultralytics",
model_path="runs/detect/drone_1280/weights/best.pt",
confidence_threshold=0.001,
image_size=1280,
device="cuda:0",
)
preds = []
for img in sorted(Path("datasets/drones/images/test").glob("*.jpg")):
result = get_sliced_prediction(
str(img),
detector,
slice_height=1280,
slice_width=1280,
overlap_height_ratio=0.2,
overlap_width_ratio=0.2,
perform_standard_pred=False,
)
image_id = int(img.stem) if img.stem.isnumeric() else img.stem
for p in result.to_coco_predictions(image_id=image_id):
p["category_id"] += 1 # ajusta los ID a partir de 1 de predictions.json
preds.append(p)
Path("sahi_predictions.json").write_text(json.dumps(preds))- Evalúa ambos archivos de predicciones frente a los mismos datos de referencia, solo para la clase de drones:
from faster_coco_eval import COCO, COCOeval_faster
gt = COCO("test_coco.json") # tus etiquetas de prueba en formato COCO
for name in ["runs/detect/val/predictions.json", "sahi_predictions.json"]:
ev = COCOeval_faster(gt, gt.loadRes(name), "bbox")
ev.params.catIds = [1] # drone
ev.evaluate()
ev.accumulate()
ev.summarize()Compara la AP de drones por tamaño, las predicciones de drones en fotogramas solo con aves y de cielo vacío, y la latencia de extremo a extremo por fotograma en el hardware de implementación. Usa recortes solo si la mejora con drones pequeños compensa las pasadas adicionales.
-
Haz un seguimiento entre fotogramas como ejemplo independiente con imágenes completas:
best.track(source="perimeter.mp4", imgsz=1280, tracker="bytetrack.yaml")usa el modo de seguimiento y no utiliza las predicciones SAHI anteriores. ByteTrack puede reactivar una trayectoria perdida si una detección posterior coincide con ella antes de que caduque. -
Exporta para el dispositivo de borde. Si usas una NVIDIA Jetson junto a la cámara, exporta a TensorRT con
best.export(format="engine", imgsz=1280, half=True)y sigue la guía de Jetson. Mide la latencia en el dispositivo y a la resolución de implementación.
Si tu GPU no puede gestionar el entrenamiento a 1280 píxeles, puedes usar el mismo conjunto de datos y los mismos argumentos para el entrenamiento en la nube de Ultralytics Platform.
Quién debería crear un detector de drones de esta manera#
Este flujo de trabajo es adecuado para equipos que protegen un emplazamiento fijo, como el perímetro de un aeropuerto, una prisión, un estadio o infraestructuras críticas, con cámaras RGB o térmicas que vigilan el cielo. También es adecuado para integradores que añaden visión a sensores de radar o RF en implementaciones de seguridad. En ambos casos, la cámara debe reconocer un dron a distancias en las que este solo ocupa unas pocas decenas de píxeles.
Empieza con DUT Anti-UAV y Drone-vs-Bird como punto de referencia, añade etiquetas de aves y tus propias grabaciones, entrena YOLO26 a 1280 y evalúa cada cambio según la AP_small solo para drones, la exhaustividad y las falsas alarmas causadas por aves. Añade SAHI cuando los fotogramas sean 4K o superiores y la evaluación con recortes muestre una mejora con drones pequeños. Para abordar el problema en general, consulta nuestra guía sobre detección de objetos pequeños y la lista de comprobación de mAP para objetos pequeños.
Preguntas frecuentes
Depende de la cámara y del punto de vista. DUT Anti-UAV, con 10 000 imágenes RGB, es un práctico punto de partida con luz visible. Drone-vs-Bird añade vídeos de cámaras terrestres con aves en la escena; Det-Fly incluye vistas aire-aire a 3840 x 2160; Anti-UAV410 cubre los infrarrojos térmicos, y LRDDv3 añade etiquetas de distancia. Entrena con más de uno y reserva otro para las pruebas.
No. VisDrone contiene imágenes tomadas desde drones, etiquetadas con 10 clases, como peatón, coche y autobús, y no incluye ninguna clase de dron. Es útil para probar ajustes de objetos pequeños, como el tamaño de imagen y el recorte SAHI, pero para detectar drones necesitas un conjunto de datos antidrones, como DUT Anti-UAV o Drone-vs-Bird.
Prueba
imgsz=1280si tus drones se reducen a menos de unos 10 píxeles con el valor predeterminado de 640. YOLO26 redimensiona el lado más largo de cada imagen aimgsz, así que un valor mayor conserva más píxeles de cada dron, con un coste de cálculo unas cuatro veces mayor que a 640. Valida e implementa el modelo con el tamaño con el que lo has entrenado.Sí. SAHI carga los pesos de YOLO26 mediante
AutoDetectionModel.from_pretrained(model_type="ultralytics", image_size=1280, ...)y ejecuta el modelo en recortes superpuestos antes de combinar los recuadros. Conperform_standard_pred=False, un fotograma de 3840 x 2160 dividido en recortes de 1280 píxeles con un solapamiento de 0,2 requiere ocho pasadas hacia delante. Evalúa el resultado con recortes frente al punto de referencia de imagen completa en el mismo conjunto de prueba.Ejecuta la validación con
save_json=Trueen un conjunto de datos de detección para obtener la AP de objetos pequeños, medianos y grandes de todas las clases en conjunto. Para obtener resultados solo de drones, evalúa el archivopredictions.jsonguardado frente a los datos de referencia en formato COCO, con los mismos ID de imagen y de categoría; limita la evaluación a la categoría de drones y usa áreas de recuadro en píxeles de la imagen original para los intervalos más precisos.Sí, como clase etiquetada y como parte de la prueba de falsas alarmas. Las aves son una fuente habitual de falsas alarmas y, en un experimento de 2025 con YOLO11m, un modelo de drones y aves detectó drones algo mejor que un modelo de solo drones. Drone-vs-Bird no etiqueta sus aves, así que añade esos recuadros tú mismo e ignora las predicciones de aves durante la inferencia si solo necesitas alertas de drones.
Escrito por
Comentarios
Haz una pregunta, comparte tus resultados o ayuda a otra persona.










