yolo 掩膜及无掩膜 无人机 建筑物房屋检测数据集,包含大量城市建筑屋顶图像,图片清晰标注,适合目标检测模型训练。数据集已标注好,可以直接使用,支持多种格式输出,一类。

1

1

1

您提供的数据集是 高分辨率城市建筑屋顶的航拍图像,包含 边界框(Bounding Box)和掩膜(Mask)标注,适用于 目标检测与实例分割任务。=
📊 一、数据集核心特征
| 图像来源 | 航拍/卫星影像(如无人机、卫星遥感) |
| 标注类型 | ✅ 边界框(YOLO 格式)✅ 实例掩膜(Polygon 或 RLE) |
| 标注质量 | 精确到建筑轮廓,含不规则形状、遮挡、多层结构 |
| 场景多样性 | 城市密集区、郊区、工业区、农村等 |
| 支持格式 | YOLOv5/v8(.txt)、COCO(JSON)、Pascal VOC、DeepLab 等 |
🌐 二、主要应用领域
1. 🏙️ 智慧城市与城市规划
- 自动提取城市建筑分布图
- 建筑密度分析、城市扩张监测
- 土地利用分类(住宅/商业/工业)
- 政府部门用于人口普查、房产登记
✅ 示例:通过 AI 快速生成“城市三维模型”基础数据
2. 🔧 地理信息系统(GIS)与遥感
- 高精度地图更新(如 Google Earth、百度地图)
- 数字孪生城市建设
- 地形建模与空间分析
- 结合 LiDAR 数据进行三维重建
✅ 示例:自动识别新建建筑,辅助测绘公司更新数据库
3. 🚧 灾害评估与应急管理
- 地震、洪水后快速评估建筑物损毁情况
- 识别倒塌、倾斜、裂缝建筑
- 应急救援路径规划
- 损失预估(基于建筑数量与面积)
✅ 示例:灾后 1 小时内完成全城建筑状态评估
5. 🛠️ 自动驾驶与机器人导航
- 高精地图构建(建筑边界作为路网参考)
- 室外环境理解(建筑为静态障碍物)
- 无人机自主飞行路径规划(避开建筑群)
✅ 示例:自动驾驶车辆在复杂城区中识别建筑边缘以避障
6. 🌱 生态环境与可持续发展
- 建筑屋顶绿化监测(光伏板 vs 绿植)
- 城市热岛效应分析(建筑密度影响温度)
- 太阳能潜力评估(屋顶面积 + 朝向)
✅ 示例:政府推动“绿色屋顶”政策,AI 监测执行情况
带掩膜(Mask)与无掩膜(仅边界框)的城市建筑屋顶数据集 的完整训练代码,支持 目标检测(Bounding Box) 和 实例分割(Instance Segmentation) 两种任务。使用 Ultralytics YOLOv8 框架(截至2025年最稳定、功能最全的官方YOLO实现),并提供从数据准备到模型导出的全流程。
📁 一、项目结构
Building_Dataset/
├── dataset.yaml # 数据集配置文件
├── train.py # 训练脚本
├── predict_demo.py # 推理演示
├── dataset/
│ ├── images/
│ │ ├── train/
│ │ ├── val/
│ │ └── test/
│ └── labels/
│ ├── train/ # YOLO格式:*.txt(含box + 可选polygon)
│ ├── val/
│ └── test/
└── requirements.txt
✅ 支持两种模式:
- 仅检测:labels/*.txt 中每行为 class_id x y w h
- 实例分割:labels/*.txt 中每行为 class_id x1 y1 x2 y2 … xn yn(归一化坐标)
📦 二、依赖安装(requirements.txt)
ultralytics==8.2.0
torch>=1.10.0
torchvision>=0.11.0
opencv-python>=4.6.0
numpy>=1.21.0
matplotlib>=3.7.0
scipy>=1.10.0
安装命令:
pip install -r requirements.txt
📄 三、数据集配置文件 dataset.yaml
▶ 场景1:仅目标检测(无掩膜)
# dataset.yaml (Detection Only)
path: ./dataset
train: images/train
val: images/val
test: images/test
nc: 1
names: ['building']
▶ 场景2:实例分割(带掩膜)
# dataset.yaml (Segmentation)
path: ./dataset
train: images/train
val: images/val
test: images/test
nc: 1
names: ['building']
# 注意:YOLOv8-seg 自动识别 labels 中的多点坐标作为 mask
💡 标注示例(labels/train/001.txt):
0 0.5 0.5 0.2 0.3 # 检测模式
0 0.4 0.4 0.6 0.4 0.6 0.6 0.4 0.6 # 分割模式(4个点的矩形)
🚀 四、完整训练代码 train.py
# train.py
from ultralytics import YOLO
import torch
import os
def main():
device = 'cuda' if torch.cuda.is_available() else 'cpu'
print(f"🚀 使用设备: {device}")
# ==============================
# 选择任务类型
# ==============================
TASK = "segment" # 可选: "detect" 或 "segment"
if TASK == "detect":
model_name = "yolov8s.pt" # 目标检测模型
project_name = "building_detection"
elif TASK == "segment":
model_name = "yolov8s-seg.pt" # 实例分割模型
project_name = "building_segmentation"
else:
raise ValueError("TASK 必须是 'detect' 或 'segment'")
# 加载预训练模型
model = YOLO(model_name)
# 训练参数
results = model.train(
data='dataset.yaml',
epochs=100,
imgsz=640, # 建筑细节丰富,建议 ≥640
batch=16, # 根据 GPU 调整(32G 显存可设 32)
name=project_name,
device=device,
patience=25, # 早停
save=True,
plots=True, # 生成 PR 曲线、混淆矩阵等
exist_ok=False,
workers=8,
optimizer='AdamW',
lr0=0.01,
lrf=0.01,
augment=True, # 启用 Mosaic、HSV、旋转等增强
degrees=10.0, # ±10° 旋转(适合航拍)
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✅ 测试集结果:")
if TASK == "detect":
print(f" mAP@0.5: {metrics.box.map50:.5f}")
print(f" mAP@0.5:0.95: {metrics.box.map:.5f}")
else:
print(f" mAP@0.5 (Box): {metrics.box.map50:.5f}")
print(f" mAP@0.5 (Mask): {metrics.seg.map50:.5f}")
if __name__ == '__main__':
main()
运行训练:
python train.py
🔍 五、推理与可视化 predict_demo.py
# predict_demo.py
from ultralytics import YOLO
import cv2
# 加载训练好的模型
model = YOLO('runs/segment/building_segmentation/weights/best.pt') # 或 detect 路径
# 单张图像推理
results = model.predict(
source='test_image.jpg',
conf=0.25,
iou=0.45,
save=True, # 保存带标注的图像
show=True # 实时显示
)
# 获取结果
for result in results:
boxes = result.boxes # 边界框
masks = result.masks # 掩膜(若为 segmentation)
print(f"检测到 {len(boxes)} 栋建筑")
if masks is not None:
print(f"生成 {len(masks)} 个掩膜")
📤 六、模型导出(用于部署)
# export_model.py
from ultralytics import YOLO
model = YOLO('runs/segment/building_segmentation/weights/best.pt')
# 导出为 ONNX(通用)
model.export(format='onnx', imgsz=640, simplify=True)
# 导出为 TensorRT(Jetson / NVIDIA GPU)
model.export(format='engine', imgsz=640, half=True, device=0)
# 导出为 OpenVINO(Intel CPU)
model.export(format='openvino', imgsz=640)
📊 七、预期性能(基于类似数据集经验)
| 目标检测 | YOLOv8s | 0.92–0.96 | 120 FPS |
| 实例分割 | YOLOv8s-seg | 0.88–0.93 | 45 FPS |
✅ 建筑轮廓清晰、背景简单,mAP > 0.9 是完全可实现的
网硕互联帮助中心

评论前必须登录!
注册