无人机检测数据集指南:使用 Ultralytics YOLO 训练微型无人机检测模型
比较 DUT Anti-UAV、Drone-vs-Bird 和热成像无人机检测数据集,然后训练 Ultralytics YOLO26 来发现微型无人机并减少误报。

无人机检测与跟踪基准报告称,其 Drone-vs-Bird 数据中的无人机平均尺寸为 34 x 23 像素。想象一下,在假设的 3840 x 2160 画面中有一架这么大的无人机:缩放到检测器默认使用的 640 像素后,它会缩小到约 5.7 x 3.8 像素。
反无人机团队必须确保目标从所选数据集到部署模型的整个过程中都清晰可见。本指南介绍如何通过 Ultralytics YOLO26做出四项关键决策:使用哪个无人机检测数据集进行训练、采用什么图像尺寸、何时添加 SAHI 切片推理,以及如何按目标尺寸评估模型,避免整体 mAP 表现良好却漏掉远处无人机。

大多数“无人机检测数据集”回答的都是错误的问题#
搜索无人机检测数据集的人通常指的是以下两种任务之一:
- 检测无人机(反无人机或反制无人机):地面或空中的摄像头在天空、树木或建筑物背景中寻找小型飞行器。你需要包含无人机的图像,最好还包括鸟类及其他相似目标。
- 从无人机上进行检测:无人机上的摄像头向下拍摄行人、汽车和建筑物。VisDrone是这类任务的标准基准。它包含 8,629 张航拍图像,涵盖从行人到公交车的 10 个类别,不包含无人机类别。
VisDrone 仍然能帮助反无人机团队,因为其中的目标尺寸很小且密集。因此,在你自己的数据准备好之前,它是测试图像尺寸和切片等小目标设置的优质公开数据集。关于航拍应用本身,请参阅我们的无人机作业中的计算机视觉概览。本文其余部分将介绍第一个任务:检测无人机。
根据摄像头和视角选择数据集#
合适的公开数据集取决于摄像头位于地面还是空中、拍摄的是可见光还是热红外,以及目标飞行的距离:
| 数据集 | 影像 | 规模 | 最适合 |
|---|---|---|---|
| Drone-vs-Bird | RGB 视频,720 x 576 至 3840 x 2160 | 77 个带标注的训练序列 | 地面摄像头,场景中有鸟类的无人机 |
| DUT Anti-UAV | RGB 图像,240 x 160 至 5616 x 3744 | 10,000 张图像(5,200 张训练 / 2,600 张验证 / 2,200 张测试),另有 20 个跟踪视频 | 可见光基准的良好起点 |
| Det-Fly | RGB,3840 x 2160 | 13,271 张图像 | DJI Mavic 的空对空视角 |
| Anti-UAV | RGB 与热成像配对视频 | 318 对视频 | 使用两种模态进行昼夜跟踪 |
| Anti-UAV410 | 热红外视频 | 410 个视频(200 个训练 / 90 个验证 / 120 个测试) | 热成像检测与跟踪 |
| LRDDv3 | 4K RGB 和 640 x 512 红外图像,带有距离标签 | 102,532 张 RGB 图像;29,630 张配对红外图像 | 对远距离无人机进行距离感知评估 |
Drone-vs-Bird 的数量指的是为该挑战赛 2021 年和 ICASSP 2023届提供的 77 个序列训练集,其分辨率由 SynDroneVision 综述报告。该综述还介绍了 Det-Fly 和 Anti-UAV,而 LRDDv3 论文则描述了其自身的数据集。不同数据集的许可证和访问条款各不相同,因此在任何商业用途前都应仔细查看。
使用多个数据集训练,并留出一个数据集用于测试#
模型在训练所用数据集上表现良好,在另一个数据集上仍可能表现不佳。LRDDv3 作者使用不同数据集训练了 Ultralytics YOLO11m 模型,并分别在 Det-Fly 上测试。在 Drone-vs-Bird 上训练的模型取得了 0.484 mAP50,在 DUT Anti-UAV 上训练的模型则达到 0.431。
因此,请组合两个或三个与你的摄像头和距离相匹配的数据源,并将它们全部转换为 YOLO 检测格式。然后统一重新映射类别 ID,补全缺失的鸟类标注,并在提取帧或切片之前按飞行任务或视频划分数据。按帧划分会让同一次飞行中几乎相同的帧同时进入训练集和测试集,从而虚高分数。留出一个完整数据集或你自己场地拍摄的影像作为测试集,并加入只有鸟类和空天空的影像,以便测量误报。
鸟类和无人机都要标注#
鸟类是基于视觉的无人机检测中常见的误报来源。Drone-vs-Bird 包含作为干扰目标的鸟类,但没有将其标注为类别,因此双类别数据集需要补上这些框。一项 2025 年小型无人机研究使用无人机和鸟类类别训练了 YOLO11m,并在推理时忽略鸟类预测。在该实验中,双类别模型检测无人机的效果略好于仅包含无人机类别的模型。
公开数据能帮你建立基准,而你自己的影像能让你迈向生产部署。Ultralytics Platform 标注可以让你在自有摄像头拍摄的帧上标注无人机和鸟类框,合成数据则可以补充罕见背景和角度。AVSS 2021 Drone-vs-Bird 挑战赛冠军方案使用了经过真实图像与合成图像微调的 Ultralytics YOLOv5 检测器,并结合卡尔曼滤波跟踪器,提高了对微弱远距离无人机的置信度。
图像尺寸决定无人机在缩放后是否仍然可见#
YOLO26 会缩放每张图像,使其最长边与 imgsz 相匹配,默认值为 640。缩放后几乎不剩像素的无人机,任何检测器都难以处理。提高 imgsz 是首要解决方法;训练文档和微调指南都建议对含有小目标的数据集使用 imgsz=1280。
计算成本大致随像素数量增长,因此 1280 所需的算力约为 640 的四倍。作为参考,YOLO26 文档列出的 YOLO26n和 YOLO26s在 NVIDIA T4 上分别为 1.7 ms 和 2.5 ms,测试条件为 TensorRT 10、批量大小 1、nms=False,输入分辨率 640 像素,数据集为 COCO val2017。这些数据并非无人机或 1280 像素分辨率的测量结果,因此请针对你自己的配置计时。

一个实用的起始原则来自 Ultralytics Academy 延迟课程:如果最小的重要目标在该尺寸下仍有约 10 像素宽,就值得尝试。当预算紧张时,请在同一无人机验证集上比较高分辨率的小模型和低分辨率的大模型,并选择在满足延迟目标的情况下能发现更多小型无人机的方案。
YOLO26 在候选项筛选中保留微小目标#
即使图像尺寸足够,模型仍须从微小边界框中学习。YOLO26 的 小目标感知标签分配 (STAL)在这方面有所帮助。在 v8.4.199 的标准 P3 至 P5 YOLO26 模型中,STAL 会将边长小于 16 像素的候选框扩展至 16 像素,同时保留原始回归目标,从而降低微型无人机没有候选锚框的可能性。
对于最小的目标,你还可以调整架构。YOLO26 提供 yolo26-p2.yaml 变体,在 P3 至 P5 之上为特征金字塔增加了一个步幅为 4 的输出层。在 640 x 640 输入下,它会将 YOLO26n 的未融合计算量从 6.1 GFLOPs 提高到 9.5 GFLOPs。P2 以 YAML 架构形式发布,但没有预训练的 P2 权重,因此你需要使用 YOLO("yolo26n-p2.yaml") 构建模型并在自己的数据上训练。
SAHI 切片推理能在 4K 帧中保留完整细节#
即使分辨率为 1280,4K 帧在模型处理前仍会损失三分之二的宽度。SAHI(切片辅助超推理)可与 Ultralytics YOLO26 集成,避免这种损失。它会将画面切分为有重叠的切片,在每个切片上运行模型,然后将边界框合并回整张图像,因此跨越相邻切片的无人机只会计为一个目标。SAHI 论文介绍了该方法及其切片辅助微调变体。

分别设置切片尺寸和模型输入尺寸,然后在留出的影像上测试最终的无人机尺寸。使用缩放至 1280 的完整 4K 帧训练的模型,学到的无人机尺寸会比原始分辨率 1280 像素切片中的无人机小三倍。如果这种尺度差异影响结果,可以像 SAHI 论文那样,使用从全分辨率训练帧中裁出的图像块进行微调,并在同一测试集上与全帧模型比较。从相邻切片之间 20% 的重叠开始,并检查切片边缘处是否有漏检。
工作量是可预测的。在 1280 x 1280 切片且重叠比例为 0.2 时,一帧 3840 x 2160 的画面需要四列、两行切片,因此会进行八次前向传播,而不是一次;前提是关闭 SAHI 额外的整图预测。这适用于录制影像、警报复核和算力强大的边缘 GPU。如果摄像头必须以全帧率处理每一帧,可以只对天空区域切片,或定期运行切片扫描,也可以由雷达等其他传感器触发扫描。
按尺寸和类别评估检测器#
整体平均精度均值 (mAP)是各类别 AP 的平均值。在这个双类别数据集中,鸟类检测表现可能掩盖无人机检测的不足;而在无人机类别内部,整体分数良好也可能掩盖最小尺寸区间召回率较低的问题。请按类别和尺寸拆分分数后再决定是否信任结果。
在检测数据集上使用 save_json=True 进行验证,会根据 COCO 的区间添加小、中、大目标 AP,并使用 faster-coco-eval 计算:边界框面积小于 32 x 32 像素、最大为 96 x 96 像素,以及更大的目标。这些数值会合并统计两个类别。SynDroneVision 综述报告称,Drone-vs-Bird 中大多数已标注无人机小于 32 x 32,因此要关注仅针对无人机的 AP_small 和召回率。
要获得这些指标,请使用匹配的真实标注评估 predictions.json,并使用原始图像像素中的边界框面积。Ultralytics 会以原始图像坐标写入边界框,将图像文件名(不含扩展名)用作图像 ID,并将自定义类别从 1 开始编号,因此此处无人机类别为 1,鸟类类别为 2。将测试标签转换为 COCO 格式 JSON,并使用相同的图像 ID 和类别 ID,然后将评估范围限制为 catIds=[1]。
对于远距离作业,COCO 的小目标区间过于宽泛,因为 12 像素的无人机和 30 x 30 像素的无人机都属于该区间。请用同样的方法定义更精细的面积范围,例如小于 64 像素面积(8 x 8)、64 至 256(16 x 16)以及 256 至 1,024(32 x 32),并读取每个区间的无人机 AP 和召回率。如果你的标签带有距离信息(如 LRDDv3),还应按距离报告召回率。同时列出精确率,并分别统计仅有鸟类和空天空帧上的无人机预测数量。

以下两项习惯有助于确保数据可信:
- 在部署尺寸下验证。在 1280 下训练、却在 640 下验证的模型看到的无人机尺寸只有训练时的一半,因此分数会下降,原因与模型本身无关。
- 谨慎解读 mAP50-95。对于 10 像素边界框,偏移 2 像素就会显著降低 IoU,因此严格阈值会惩罚微小目标。请跟踪漏检无人机的召回率,并查看正确分类且 IoU 达到 0.5 的检测结果所对应的 AP50。
训练、切片并评估 YOLO26 无人机检测器#
以下步骤将带你从合并的无人机和鸟类数据集开始,在同一留出测试集上比较整图推理和切片推理。
-
安装软件包,使用
pip install -U ultralytics sahi。 -
编写数据集 YAML,将鸟类设为第二个类别,并设置留出的测试集:
path: datasets/drones
train: images/train
val: images/val
test: images/test
names:
0: drone
1: bird- 以 1280 进行训练,使用预训练权重。
batch=-1支持 AutoBatch 选择可使用约 60% GPU 内存的批量大小:
from ultralytics import YOLO
model = YOLO("yolo26s.pt")
model.train(data="drones.yaml", epochs=100, imgsz=1280, batch=-1, name="drone_1280")- 评估整图基准模型,在相同分辨率下使用测试集。这会在运行文件夹中写入
predictions.json:
best = YOLO("runs/detect/drone_1280/weights/best.pt")
metrics = best.val(data="drones.yaml", split="test", imgsz=1280, save_json=True)- 导出切片预测结果,对相同测试图像使用原始图像坐标,并关闭 SAHI 额外的整图推理:
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 # 匹配 predictions.json 中从 1 开始的 ID
preds.append(p)
Path("sahi_predictions.json").write_text(json.dumps(preds))- 根据相同的真实标注评估两个预测文件,仅评估无人机类别:
from faster_coco_eval import COCO, COCOeval_faster
gt = COCO("test_coco.json") # 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()比较不同尺寸的无人机 AP、仅有鸟类和空天空帧上的无人机预测数量,以及部署硬件上的端到端单帧延迟。只有当切片带来的小型无人机检测收益值得额外推理次数时,才保留切片。
-
跨帧跟踪作为单独的整图示例:
best.track(source="perimeter.mp4", imgsz=1280, tracker="bytetrack.yaml")使用跟踪模式,不会使用上述 SAHI 预测结果。如果后续检测结果在跟踪过期前与丢失的轨迹匹配,ByteTrack 可以重新激活该轨迹。 -
为边缘设备导出。如果摄像头连接的是 NVIDIA Jetson,请使用
best.export(format="engine", imgsz=1280, half=True)导出为 TensorRT,并按照 Jetson 指南操作。在设备上以部署分辨率测量延迟。
如果你的 GPU 无法处理 1280 像素训练,可以使用相同的数据集和参数,在 Ultralytics Platform 上进行云端训练。
哪些团队适合用这种方式构建无人机检测器#
这套工作流适用于保护固定场所的团队,例如使用 RGB 或热成像摄像头监控天空的机场周界、监狱、体育场或关键基础设施。它也适用于在安防部署中将视觉技术接入雷达或射频传感器的集成商。在这两种情况下,摄像头都必须能识别远处仅占几十个像素的无人机。
先使用 DUT Anti-UAV 和 Drone-vs-Bird 建立基准,补充鸟类标签和自己的影像,以 1280 训练 YOLO26,并根据仅针对无人机的 AP_small、召回率和鸟类误报评估每项改动。当帧分辨率达到 4K 或更高,且切片评估显示能改善小型无人机的检测效果时,再添加 SAHI。如需了解更广泛的问题,请参阅小目标检测指南和小目标 mAP 检查清单。
常见问题
这取决于你的摄像头和视角。DUT Anti-UAV 包含 10,000 张 RGB 图像,是实用的可见光基准起点。Drone-vs-Bird 提供包含鸟类的地面摄像头视频,Det-Fly 涵盖 3840 x 2160 的空对空视角,Anti-UAV410 涵盖热红外,LRDDv3 则增加了距离标签。请使用多个数据集训练,并留出一个用于测试。
不是。VisDrone 包含由无人机拍摄的图像,标注了行人、汽车和公交车等 10 个类别,但没有无人机类别。它适用于测试图像尺寸和 SAHI 切片等小目标设置;但要检测无人机,你需要 DUT Anti-UAV 或 Drone-vs-Bird 等反无人机数据集。
如果无人机在默认 640 尺寸下会缩小到约 10 像素以下,请尝试
imgsz=1280。YOLO26 会将每张图像的最长边缩放至imgsz,因此更大的数值可以保留更多无人机像素,但计算量约为 640 的四倍。请使用训练时的尺寸进行验证和部署。可以。SAHI 通过
AutoDetectionModel.from_pretrained(model_type="ultralytics", image_size=1280, ...)加载 YOLO26 权重,在互相重叠的切片上运行模型,然后合并边界框。使用perform_standard_pred=False时,将 3840 x 2160 帧切分为 1280 像素切片并设为 0.2 重叠比例,需要进行八次前向传播。请在同一测试集上将切片输出与整图基准进行评估。在检测数据集上使用
save_json=True运行验证,可获得所有类别合并统计的小、中、大目标 AP。要获得仅针对无人机的结果,请使用匹配的图像 ID 和类别 ID,将保存的predictions.json与 COCO 格式的真实标注进行评估,将评估范围限制为无人机类别,并在划分更精细的区间时使用原始图像像素中的边界框面积。应该,将鸟类作为带标注的类别纳入数据集,并将其纳入误报测试。鸟类是常见的误报来源;在一项 2025 年 YOLO11m 实验中,无人机和鸟类双类别模型检测无人机的效果略好于仅针对无人机的模型。Drone-vs-Bird 没有标注其中的鸟类,因此请自行添加这些边界框;如果你只需要无人机警报,则可在推理时忽略鸟类预测。
作者
评论
提出问题、分享你的结果,或帮助其他人。










