跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像AI 生图工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
PythonAI算法

NWPU VHR-10 遥感目标检测数据集详解与 YOLOv8 实战指南

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

花里胡哨发布于 2026/4/9更新于 2026/7/732 浏览
NWPU VHR-10 遥感目标检测数据集详解与 YOLOv8 实战指南

NWPU VHR-10 遥感目标检测数据集详解与 YOLOv8 实战指南

NWPU VHR-10 数据集示例

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类别名称(英文)类别名称(中文)标注实例数量
0Airplane飞机757
1Ship船只302
2Storage Tank储罐655
3Baseball Diamond棒球场390
4Tennis Court网球场524
5Basketball Court篮球场159
6Ground Track Field田径场163
7Harbor港口224
8Bridge桥梁124
9Vehicle车辆598

总标注目标数: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/        # 390 张训练图像
    │   ├── val/          # 130 张验证图像
    │   └── test/         # 130 张测试图像
    └── labels/
        ├── train/        # 对应 .txt 标注(YOLO 格式)
        ├── 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}")

    # 选择模型(遥感小目标多,推荐 yolov8m 或 yolov8l)
    model_name = "yolov8m.pt"
    project_name = "nwpu_vhr10_detection"

    # 加载预训练模型
    model = YOLO(model_name)

    # 开始训练
    results = model.train(
        data='dataset.yaml',
        epochs=150,           # 遥感数据复杂,建议充分训练
        imgsz=640,            # NWPU 图像较小,640 足够;若需更高精度可用 1024
        batch=16,             # 640 分辨率下 batch=16(32G 显存可设 32)
        name=project_name,
        device=device,
        patience=30,          # 早停机制(验证集 mAP 不升则停)
        save=True,
        plots=True,           # 自动生成 PR 曲线、混淆矩阵、样本可视化
        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,         # ±15° 旋转(遥感视角多样)
        translate=0.1,
        scale=0.5,
        flipud=0.0,           # 不上下翻转(地理目标方向敏感)
        fliplr=0.5,           # 左右翻转安全
        mosaic=1.0,           # Mosaic 增强(对小目标如 vehicle/airplane 极有效)
        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()

运行命令:

python train.py

推理演示 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')

# 导出为 ONNX(通用)
model.export(format='onnx', imgsz=640, simplify=True)

# 导出为 TensorRT(NVIDIA GPU / Jetson)
model.export(format='engine', imgsz=640, half=True, device=0)

# 导出为 OpenVINO(Intel CPU)
model.export(format='openvino', imgsz=640)

训练优化建议

在实际训练中,可能会遇到一些特定问题,以下是针对性的解决方案:

挑战解决方案
小目标漏检(如车辆、飞机)启用 mosaic=1.0,使用 imgsz=1024(若显存允许)
类别不平衡(如桥梁仅 124 个)YOLOv8 内置 Focal Loss 变体,通常无需额外处理;也可对稀有类过采样
背景复杂干扰增加 hsv_v 和 degrees 增强,提升光照与角度鲁棒性
实时遥感分析若部署于边缘设备(如无人机),可改用 yolov8s + TensorRT

通过以上步骤,你可以快速搭建起基于 NWPU VHR-10 的遥感目标检测流程,并根据实际需求调整模型参数以获得最佳效果。

目录

  1. NWPU VHR-10 遥感目标检测数据集详解与 YOLOv8 实战指南
  2. 数据集总体信息
  3. 类别定义与实例数量统计
  4. 推荐使用方式
  5. 项目结构建议
  6. 数据集配置文件 dataset.yaml
  7. 详细训练代码 train.py
  8. 推理演示 predict_demo.py
  9. 打印检测结果
  10. 模型导出(用于部署)
  11. 导出为 ONNX(通用)
  12. 导出为 TensorRT(NVIDIA GPU / Jetson)
  13. 导出为 OpenVINO(Intel CPU)
  14. 训练优化建议
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • 二分查找实战:寻找峰值、旋转数组及缺失数字
  • NWPU VHR-10 遥感目标检测数据集实战指南
  • AI 编程工具对比:GitHub Copilot、Cursor 与 Codeium 选型指南
  • NWPU VHR-10 遥感目标检测与 YOLO 实践
  • 普通工程师如何在笔记本上运行大模型:BioMedGPT-7B 入门教程
  • NVIDIA AI Enterprise 运维指南:医疗行业部署与训练路径
  • NSP 新范式:AI 世界模型构建与物理规律建模指南
  • npm 安装 OpenClaw 遇到 Git 报错的处理方案
  • Node.js 下载安装与环境配置全流程
  • NLP 文本特征处理:n-gram 特征与长度规范详解
  • NJS Crypto 模块实战:Hash 与 HMAC 加密详解
  • llama.cpp 大模型部署指南:CPU/GPU 兼容与 Docker 快速启动
  • 栈的压入弹出序列判断算法详解
  • Nilearn Python 神经影像机器学习完整指南
  • AI 产品经理经验分享:算法模型训练、验证与融合流程
  • 转行 Python 工程师:学习路径与数据分析方向指南
  • 2024 年主流大型语言模型 LLMs 盘点与解析
  • 2024 前端主流框架演进与性能优化实践总结
  • C++ map 与 multimap 底层原理及常用操作详解
  • Spring Boot 日志全方位指南:从入门到高级配置

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如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