云计算百科
云计算领域专业知识百科平台

建筑物图像分割识别 自动提取城市建筑分布图 - 建筑密度分析、城市扩张监测 无人机 建筑物房屋检测数据集 城市建筑屋顶图像

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)


📊 七、预期性能(基于类似数据集经验)

任务模型预期 mAP@0.5推理速度(RTX 3090)
目标检测 YOLOv8s 0.92–0.96 120 FPS
实例分割 YOLOv8s-seg 0.88–0.93 45 FPS

✅ 建筑轮廓清晰、背景简单,mAP > 0.9 是完全可实现的



赞(0)
未经允许不得转载:网硕互联帮助中心 » 建筑物图像分割识别 自动提取城市建筑分布图 - 建筑密度分析、城市扩张监测 无人机 建筑物房屋检测数据集 城市建筑屋顶图像
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!