跳到主要内容NWPU VHR-10 遥感目标检测数据集:从数据解析到 YOLO 实战 | 极客日志PythonAI算法
NWPU VHR-10 遥感目标检测数据集:从数据解析到 YOLO 实战
NWPU VHR-10 包含 650 张高分辨率遥感图像,涵盖飞机、船舶等 10 类目标。介绍数据集结构与标注格式,提供基于 YOLOv8 的训练配置、推理脚本及模型导出方案。重点讲解小目标检测优化策略,包括 Mosaic 增强、参数调优及部署建议,助力遥感目标检测任务落地。
魔法巫师3 浏览 NWPU VHR-10 遥感目标检测数据集详解

NWPU VHR-10 是一个极具挑战性的地理空间目标检测数据集,包含 650 张高分辨率遥感图像。它涵盖了飞机、船舶、储罐等 10 个类别,广泛用于军事侦察、城市规划及灾害评估场景。
一、数据集概览
该数据集源自 Google Earth 等平台,图像分辨率通常在 600×600 至 1000×1000 像素之间。标注格式支持 YOLO TXT 和 COCO JSON,开箱即用。
| 项目 | 描述 |
|---|
| 图像总数 | 650 张 |
| 数据划分 | 训练集 390 张 / 验证集 130 张 / 测试集 130 张 |
| 标注类型 | 水平边界框 (Axis-Aligned Bounding Box) |
| 总目标数 | 3,896 个 |
类别分布
| ID | 类别名称 | 数量 | ID | 类别名称 | 数量 |
|---|
| 0 | Airplane (飞机) | 757 | 5 | Basketball Court (篮球场) | 159 |
| 1 | Ship (船只) | 302 | 6 | Ground Track Field (田径场) | 163 |
| 2 | Storage Tank (储罐) | 655 | 7 | Harbor (港口) | 224 |
| 3 | Baseball Diamond (棒球场) | 390 | 8 | Bridge (桥梁) | 124 |
| 4 | Tennis Court (网球场) |
注意:类间尺度差异较大(如港口与车辆),且存在较多小目标,这对模型泛化能力提出了较高要求。
二、项目结构搭建
为了便于管理,建议采用如下目录结构组织数据与代码:
nwpu_vhr10_yolo/
├── dataset.yaml
├── train.py
├── predict_demo.py
├── export_model.py
└── data/
├── images/
│ ├── train/
│ ├── val/
│ └── test/
└── labels/
├── train/
├── val/
└── test/
三、配置与训练
1. 数据集配置 (dataset.yaml)
在 dataset.yaml 中定义路径和类别名称,确保与目录结构一致。
path: ./data
train: images/train
val: images/val
test: images/test
nc: 10
names:
- airplane
- ship
- storage_tank
- baseball_diamond
- tennis_court
- basketball_court
- ground_track_field
- harbor
- bridge
- vehicle
2. 训练脚本 (train.py)
针对遥感图像特点,我们在训练参数上做了一些针对性调整,特别是针对小目标和多尺度的增强策略。
from ultralytics import YOLO
import torch
def main():
device = 'cuda' if torch.cuda.is_available() else 'cpu'
print(f"🚀 使用设备:{device}")
model_name = "yolov8m.pt"
project_name = "nwpu_vhr10_detection"
model = YOLO(model_name)
results = model.train(
data='dataset.yaml',
epochs=150,
imgsz=640,
batch=16,
name=project_name,
device=device,
patience=30,
save=True,
plots=True,
exist_ok=False,
workers=8,
optimizer='AdamW',
lr0=0.01,
lrf=0.01,
augment=True,
hsv_h=0.015,
hsv_s=0.7,
hsv_v=0.4,
degrees=15.0,
translate=0.1,
scale=0.5,
flipud=0.0,
fliplr=0.5,
mosaic=1.0,
mixup=0.1
)
metrics = model.val(data='dataset.yaml', split='test')
print("\n✅ NWPU VHR-10 测试集结果:")
print(f" [email protected] (all): {metrics.box.map50:.5f}")
print(f" [email protected]:0.95: {metrics.box.map:.5f}")
print(f" Precision: {metrics.box.mp:.5f}")
print(f" Recall: {metrics.box.mr:.5f}")
if __name__ == '__main__':
main()
四、推理与部署
1. 推理演示 (predict_demo.py)
训练完成后,我们可以加载权重进行单图或视频推理。对于遥感小目标,适当降低置信度阈值有助于提高召回率。
from ultralytics import YOLO
model = YOLO('runs/detect/nwpu_vhr10_detection/weights/best.pt')
results = model.predict(
source='test_image.jpg',
conf=0.25,
iou=0.45,
save=True,
show=True,
line_width=2,
font_size=12
)
class_names = ['Airplane','Ship','Storage Tank','Baseball Diamond','Tennis Court','Basketball Court','Ground Track Field','Harbor','Bridge','Vehicle']
for result in results:
boxes = result.boxes
print(f"检测到 {len(boxes)} 个目标")
for box in boxes:
cls_id = int(box.cls.item())
conf = float(box.conf.item())
print(f" → {class_names[cls_id]} (置信度:{conf:.3f})")
2. 模型导出
为了将模型部署到边缘设备或生产环境,可以导出为 ONNX、TensorRT 或 OpenVINO 格式。
from ultralytics import YOLO
model = YOLO('runs/detect/nwpu_vhr10_detection/weights/best.pt')
model.export(format='onnx', imgsz=640, simplify=True)
model.export(format='engine', imgsz=640, half=True, device=0)
model.export(format='openvino', imgsz=640)
五、优化建议
在实际项目中,可能会遇到以下问题,可以参考对应策略:
| 挑战 | 解决方案 |
|---|
| 小目标漏检 | 启用 mosaic=1.0,尝试 imgsz=1024(视显存而定) |
| 类别不平衡 | YOLOv8 内置 Focal Loss 变体通常已足够;也可对稀有类过采样 |
| 背景复杂干扰 | 增加 hsv_v 和 degrees 增强,提升光照与角度鲁棒性 |
| 实时分析需求 | 边缘设备建议使用 yolov8s + TensorRT 加速 |
通过上述流程,你可以快速完成 NWPU VHR-10 数据集的接入与模型训练,并根据实际需求进行优化部署。
相关免费在线工具
- 加密/解密文本
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
- RSA密钥对生成器
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
- Mermaid 预览与可视化编辑
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
- 随机西班牙地址生成器
随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online
- Gemini 图片去水印
基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online
- curl 转代码
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online