跳到主要内容NWPU VHR-10 遥感目标检测数据集详解与 YOLOv8 实战指南 | 极客日志PythonAI算法
NWPU VHR-10 遥感目标检测数据集详解与 YOLOv8 实战指南
NWPU VHR-10 是包含 10 类地理空间目标的遥感数据集,共 650 张高分辨率图像。文章详细解析了数据集结构、类别分布及标注格式(YOLO/COCO),并基于 YOLOv8 框架提供了完整的训练、推理与模型导出流程。针对遥感小目标检测难点,重点介绍了数据增强策略(如 Mosaic)、超参数调整及部署优化建议,适合用于军事侦察、城市规划等场景的模型开发与验证。
花里胡哨57 浏览 NWPU VHR-10 遥感目标检测数据集详解与 YOLOv8 实战指南

NWPU VHR-10 是一个极具挑战性的地理空间目标检测数据集,包含 10 个类别,共 650 张高分辨率遥感图像。该数据集广泛用于评估模型在复杂背景下的目标识别能力,支持 YOLO 和 COCO 格式。
数据按默认比例划分为:390 张训练集、130 张验证集、130 张测试集。手动标注了包括飞机、船只、储罐、棒球场、网球场、篮球场、田径场、港口、桥梁和车辆在内的各类目标。

数据集总体信息
| 项目 | 描述 |
|---|
| 数据集名称 | NWPU VHR-10 (Northwestern Polytechnical University Very High Resolution 10-class Dataset) |
| 任务类型 | 遥感图像中的地理空间目标检测 |
| 图像总数 | 650 张(均为高分辨率遥感图像,源自 Google Earth 等平台) |
| 图像分辨率 | 约 600×600 至 1000×1000 像素,空间分辨率高 |
| 标注格式 | YOLO TXT 格式、COCO JSON 格式 |
| 数据划分 | 训练集 390 张、验证集 130 张、测试集 130 张(比例 ≈ 6:2:2) |
| 应用场景 | 军事侦察、城市规划、灾害评估、智能遥感解译等 |
类别定义与实例数量统计
| 类别 ID | 类别名称(英文) | 类别名称(中文) | 标注实例数量 |
|---|
| 0 | Airplane | 飞机 | 757 |
| 1 | Ship | 船只 | 302 |
| 2 | Storage Tank | 储罐 | 655 |
| 3 | Baseball Diamond | 棒球场 | 390 |
| 4 | Tennis Court | 网球场 | 524 |
|
| 6 | Ground Track Field | 田径场 | 163 |
总标注目标数:3,896 个
所有目标均以水平边界框(Axis-Aligned Bounding Box)标注。
推荐使用方式
- 模型训练:直接使用提供的 YOLO 或 COCO 格式,适配 YOLOv5/v8、MMDetection、Detectron2 等主流框架。
- 评估指标:通常采用 [email protected](IoU=0.5)作为主指标。
- 挑战点:小目标(如车辆、飞机)、类间尺度差异大(港口 vs 车辆)、背景复杂(城市、水域、农田混合)。
- 扩展建议:可结合 DIOR、DOTA 等遥感数据集进行跨域泛化研究。
项目结构建议
nwpu_vhr10_yolo/
├── dataset.yaml
├── train.py
├── predict_demo.py
├── export_model.py
└── data/
├── images/
│ ├── train/
│ ├── val/
│ └── test/
└── labels/
├── train/
├── val/
└── test/
假设你已将官方提供的 YOLO 格式数据按上述结构组织完毕。
数据集配置文件 dataset.yaml
这是 YOLOv8 训练的核心配置,定义了路径、类别数量和名称。请确保路径与实际存放位置一致。
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
详细训练代码 train.py
接下来我们编写训练脚本。针对遥感场景中小目标较多的特点,我推荐优先使用 yolov8m 或 yolov8l 模型,并在参数中开启 Mosaic 增强以提升鲁棒性。
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()
推理演示 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})")
模型导出(用于部署)
如果需要将模型部署到边缘设备或生产环境,可以导出为 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(若显存允许) |
| 类别不平衡(如桥梁仅 124 个) | 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