跳到主要内容
极客日志极客日志
首页博客AI提示词GitHub精选代理工具
搜索
|注册
博客列表
PythonAI算法

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

NWPU VHR-10 数据集包含 650 张高分辨率遥感图像,涵盖飞机、船舶等 10 类目标。介绍数据集结构与标注规范,提供基于 YOLOv8 的训练配置、推理代码及模型导出方案。重点解析针对小目标检测的数据增强策略与参数调优技巧,适用于军事侦察与城市规划场景下的地理空间目标检测任务。

月亮邮递员发布于 2026/3/23更新于 2026/4/252 浏览
NWPU VHR-10 遥感目标检测数据集实战指南

NWPU VHR-10 数据集是地理空间目标检测领域的经典挑战集,包含 650 张高分辨率遥感图像。数据源自 Google Earth 等平台,覆盖飞机、船舶、储罐等 10 类常见目标,非常适合用于验证小目标检测算法的鲁棒性。

数据集示例

数据集概览

该数据集共标注了 3,896 个目标实例,按默认比例划分为训练集(390 张)、验证集(130 张)和测试集(130 张)。所有目标均采用水平边界框(Axis-Aligned Bounding Box)标注,支持 YOLO TXT 和 COCO JSON 两种主流格式。

类别 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

注意:遥感场景下背景复杂,且存在明显的尺度差异(如港口与车辆),训练时需重点关注数据增强策略。

项目结构搭建

建议将数据整理为如下目录结构,便于后续脚本调用:

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

模型训练实战

接下来我们处理训练环节。由于遥感图像中小目标较多,推荐使用中等规模模型(如 yolov8m)并开启 Mosaic 增强。

# train.py
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,
        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()

运行命令:

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 格式。

# export_model.py
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,若显存允许可将输入尺寸提升至 1024。
  • 类别不平衡:桥梁等样本较少,YOLOv8 内置 Focal Loss 通常能缓解,也可尝试对稀有类进行过采样。
  • 背景干扰:增加 HSV 变换范围和旋转角度,提升光照与视角的鲁棒性。
  • 实时性要求:边缘端部署建议改用 yolov8s 并结合 TensorRT 加速。

目录

  1. 数据集概览
  2. 项目结构搭建
  3. 配置文件编写
  4. 模型训练实战
  5. train.py
  6. 推理演示
  7. predict_demo.py
  8. 打印检测结果
  9. 模型导出与部署
  10. export_model.py
  11. 导出为 ONNX(通用)
  12. 导出为 TensorRT(NVIDIA GPU / Jetson)
  13. 导出为 OpenVINO(Intel CPU)
  14. 优化建议
  • 💰 8折买阿里云服务器限时8折了解详情
  • 💰 8折买阿里云服务器限时8折购买
  • 🦞 5分钟部署阿里云小龙虾了解详情
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

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

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

更多推荐文章

查看全部
  • Telegram 群组管理机器人搭建:从零开始配置 Bot
  • 数据结构:外部排序原理与优化方法
  • LangChain 核心组件 RunnableLambda 详解与实战
  • 微信小程序 Python 后端大学生心理健康服务系统设计
  • 机器学习回归算法:线性回归与逻辑回归
  • JDK 核心实操指南:从安装配置到项目打包调试全流程
  • Flutter for OpenHarmony 实战:Material Color Utilities 算法驱动动态换肤
  • 基于 VMware 和 Ubuntu 搭建服务器及部署网站指南
  • Dify API 跨域配置避坑指南:前端请求失败的 5 个解决技巧
  • IntelliJ IDEA 配置 AI 插件实现 Java 俄罗斯方块游戏开发
  • 机器人底盘无刷电机 PWM 调速板驱动 75mm 麦克纳姆轮
  • 使用 Telegram 机器人自动化完成 SheerID 身份认证获取教育权益
  • Web JS 逆向技术体系详解与 Python 实战复现
  • faster-whisper 词级时间戳:语音转写与精准定位指南
  • 颠覆级里程碑:Whisper Large-V3-Turbo重构语音交互技术范式
  • 动态规划:排列与组合的区别解析
  • 基于知识图谱的 GraphRAG 非结构化数据处理:LlamaIndex 与 Neo4j
  • 高德地图离线部署方案:获取瓦片数据与私有化调用
  • 小智 ESP32 开源 AI 语音交互系统构建指南
  • PHP 语言简介:历史、特点及工作原理

相关免费在线工具

  • 加密/解密文本

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