跳到主要内容NWPU VHR-10 遥感目标检测实战指南 | 极客日志PythonAI算法
NWPU VHR-10 遥感目标检测实战指南
NWPU VHR-10 数据集涵盖飞机、船舶等 10 类遥感目标,共 650 张高分辨率图像。基于 YOLOv8 框架演示完整流程,包括数据配置、训练调优及模型导出。针对小目标检测难点,提供了 Mosaic 增强、分辨率调整等具体参数建议,并给出推理与部署代码示例,助力快速构建遥感目标识别系统。
城市逃兵67 浏览 
NWPU VHR-10 是一个包含 10 个类别的地理空间目标检测挑战性数据集,共收录 650 张高分辨率遥感图像。数据支持 YOLO 和 COCO 格式,默认划分为 390 张训练集、130 张验证集和 130 张测试集。
手动标注了 757 架飞机、302 艘船只、655 个储罐等共计 3,896 个目标实例。

数据集概览
| 项目 | 描述 |
|---|
| 名称 | NWPU VHR-10 (Northwestern Polytechnical University Very High Resolution 10-class Dataset) |
| 任务 | 遥感图像中的地理空间目标检测 |
| 图像数 | 650 张 (源自 Google Earth 等平台) |
| 分辨率 | 约 600×600 至 1000×1000 像素 |
| 标注格式 | YOLO TXT / COCO JSON |
| 划分比例 | 训练:验证:测试 ≈ 6:2:2 |
| 场景 | 军事侦察、城市规划、灾害评估 |
类别定义与统计
| ID | 英文 | 中文 | 数量 |
|---|
| 0 | Airplane | 飞机 | 757 |
| 1 | Ship | 船只 | 302 |
| 2 | Storage Tank | 储罐 | 655 |
| 3 | Baseball Diamond | 棒球场 | 390 |
| 4 | Tennis Court | 网球场 | 524 |
| 5 | Basketball Court | 篮球场 | 159 |
| 6 | Ground Track Field | 田径场 | 163 |
|
所有目标均以水平边界框(Axis-Aligned Bounding Box)标注。
环境准备与配置
nwpu_vhr10_yolo/
├── dataset.yaml
├── train.py
├── predict_demo.py
├── export_model.py
└── data/
├── images/
│ ├── train/
│ ├── val/
│ └── test/
└── labels/
├── train/
├── val/
└── test/
创建 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']
模型训练实战
使用 Ultralytics YOLOv8 进行训练。由于遥感图像中小目标较多,建议选择中等规模模型如 yolov8m,并开启 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()
推理演示
训练完成后,加载最佳权重进行单图预测。注意遥感小目标建议适当降低置信度阈值。
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)
调优建议
针对 NWPU VHR-10 的特性,以下是几个关键优化点:
- 小目标漏检:启用
mosaic=1.0,若显存允许将 imgsz 提升至 1024。
- 类别不平衡:桥梁类样本较少(124 个),YOLOv8 内置 Focal Loss 变体通常能处理,也可尝试对稀有类过采样。
- 背景复杂:增加
hsv_v 和 degrees 增强参数,提升光照与角度变化的鲁棒性。
- 边缘部署:若运行于无人机等设备,推荐使用
yolov8s + TensorRT 加速。
相关免费在线工具
- 加密/解密文本
使用加密算法(如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