基于YOLO的建筑物智能检测系统(代码、数据集、模型和参考论文)
基于YOLO的建筑物智能检测系统
项目获取地址:https://gitee.com/wuyou369/BI
项目演示视频:https://www.bilibili.com/video/BV19PLE6jE11/









摘要
随着城市化进程的加速和遥感技术的快速发展,建筑物检测在城乡规划、土地利用监测、违章建筑识别以及灾后评估等领域发挥着越来越重要的作用。传统的建筑物检测方法主要依赖人工目视解译或基于规则的图像处理技术,存在效率低、精度差和泛化能力弱等不足。本文提出并实现了一套基于YOLOv8深度学习模型的建筑物智能检测系统,采用YOLOv8n作为主干网络,在包含8510张建筑物实例的高分辨率遥感图像数据集上完成训练与验证。系统集成了单张图像检测、批量处理、视频分析、实时视频流、检测历史管理和模型训练六大功能模块,并支持LLaVA多模态大模型进行深度语义分析。实验结果表明,该系统在建筑物检测任务上取得了mAP@0.5=0.7576的良好性能,能够有效支撑建筑行业相关应用场景的智能化需求。系统基于Gradio框架提供友好的中文Web交互界面,部署简便,具有良好的可扩展性和实用价值。
关键词: 建筑物检测;YOLOv8;深度学习;目标检测;计算机视觉
1 引言
1.1 研究背景
建筑物作为城市空间中最主要的物理构成要素,其准确高效的检测与识别在多个领域具有重要的研究价值和应用意义。在城市规划与管理领域,建筑物检测能够帮助管理部门快速掌握城市空间格局变化,为城市更新和土地资源优化配置提供数据支撑。在违章建筑监管方面,自动化的建筑物检测技术可以大幅提升巡查效率,降低人工巡检的人力成本和时间消耗。在自然灾害应急响应中,建筑物损毁评估需要快速准确地识别建筑物分布与状态,为救援决策提供关键信息。此外,在不动产登记、城市三维建模和智慧城市建设等领域,建筑物检测同样发挥着不可或缺的基础性作用。
当前建筑物检测方法大致可分为三类:基于人工目视解译的方法、基于传统图像处理的方法和基于深度学习的方法。人工目视解译依赖专业人员逐张判读遥感影像,虽然在小样本场景下具有较高精度,但效率极低、主观性强,难以应对大规模数据场景的实际需求。传统图像处理方法利用边缘检测、纹理分析、形态学运算和图像分割等技术提取建筑物特征,代表方法包括Canny边缘检测、HOG特征描述子和GrabCut图割算法等,但这些方法依赖于手工设计的特征提取器,在复杂背景、多变光照条件和大尺度差异下泛化能力有限,检测精度难以满足实际工程需求。深度学习方法通过卷积神经网络自动学习图像中的层次化特征表示,突破了传统方法在特征表达能力上的瓶颈,已成为当前目标检测领域的主流技术路线。
近年来,YOLO(You Only Look Once)系列目标检测算法凭借其优异的检测速度与精度平衡,已成为实时目标检测领域最具影响力的方法之一。从2016年YOLOv1的开创性提出,到YOLOv3引入多尺度特征融合,再到YOLOv5在工程化方面的大量优化,以及2023年YOLOv8在特征提取网络和检测头设计上的革新,该系列不断演进,性能持续提升。本研究基于YOLOv8模型,结合建筑行业实际需求,构建了一套功能完整的建筑物智能检测系统,实现了从数据准备、模型训练到部署应用的全流程闭环。
1.2 本文贡献
本文的主要贡献如下:
(1)基于YOLOv8深度学习模型,设计并实现了一套完整的建筑物智能检测系统,支持单张检测、批量处理、视频分析、实时视频流、检测历史管理和模型训练六种工作模式。
(2)构建并预处理了包含8510张建筑物图像的高质量检测数据集,按8:2比例科学划分为训练集和验证集,完成了数据增强和标准化处理。
(3)集成了LLaVA多模态大模型进行辅助语义分析,使系统具备超越传统目标检测的深度场景理解能力,可生成结构化中文检测分析报告。
(4)开发了功能完善的Gradio Web交互平台,实现了全流程中文化界面适配,降低了非技术用户的使用门槛,具有良好的实用性和可推广性。
2 相关工作
2.1 传统检测方法
在深度学习技术兴起之前,建筑物检测主要依赖于基于手工特征的传统计算机视觉方法。尺度不变特征变换(SIFT)和方向梯度直方图(HOG)等特征描述子结合支持向量机(SVM)分类器被广泛应用于遥感图像中的建筑物识别任务[1]。基于多尺度分割和图割优化的方法也被用于从高分辨率影像中提取建筑物轮廓[2]。形态学建筑物指数通过多方向和多尺度的形态学运算实现建筑物的自动提取。然而,这些方法在应对光照变化、部分遮挡、复杂背景和建筑物尺度差异大等实际挑战时表现不佳,检测精度和召回率难以满足大规模工程化应用需求。
2.2 基于深度学习的目标检测
深度学习方法特别是卷积神经网络(CNN)的出现,为目标检测领域带来了革命性的突破[3]。当前主流目标检测算法可分为两阶段检测器和单阶段检测器两大类别。两阶段检测器以R-CNN系列为代表,从R-CNN到Fast R-CNN再到Faster R-CNN[4],通过区域提议网络(RPN)先生成候选区域再进行分类与回归,检测精度较高但推理速度较慢。单阶段检测器以YOLO系列和SSD[5]为代表,直接在特征图上同时预测目标类别和边界框坐标,实现了更快的检测速度。
YOLO系列经历了从v1到v8的持续演进。YOLOv1于2016年由Redmon等人提出,首次将目标检测问题形式化为统一的回归任务[6]。YOLOv3引入了特征金字塔网络实现多尺度特征融合,显著提升了对多尺度目标的检测能力。YOLOv4和YOLOv5在数据增强、标签分配和模型架构等方面进行了大量工程优化。YOLOv8于2023年由Ultralytics发布[7],采用了全新的C2f模块替代C3模块以增强梯度流,引入解耦检测头设计将分类和回归任务分离,在训练稳定性和检测精度方面进一步提升。
2.3 基于视觉的建筑检测系统
近三年来,基于深度学习的目标检测系统在建筑行业的应用研究日益广泛。刘明等人(2023)提出了一种改进的轻量化YOLO模型用于无人机航拍图像的实时建筑物检测,在保证精度的同时大幅降低了模型参数量[9]。张华等人(2024)结合Transformer自注意力机制增强了建筑物轮廓提取的精度和完整性[10]。王强等人(2024)设计了多模态数据融合框架,将可见光图像与热红外图像结合用于建筑物能效评估[11]。李明等人(2025)提出了基于半监督学习的建筑物变化检测方法,减少了对大规模像素级标注数据的依赖[12]。然而,上述研究大多聚焦于算法层面,缺乏端到端的工程化系统实现和友好的用户交互界面。
3 系统设计与方法
3.1 总体架构
本系统采用分层架构设计,自底向上分为数据层、推理引擎层、业务逻辑层和表示层四个层次,各层之间通过明确的接口进行通信,实现了模块间的高内聚和低耦合。
- 数据层:包括数据集文件系统(图像和标注数据)和SQLite检测历史数据库。数据层负责数据的持久化存储和高效检索,为上层模块提供可靠的数据支撑。
- 推理引擎层:包含YOLODetector检测引擎和LLaVAAnalyzer多模态分析器。YOLODetector封装了Ultralytics YOLO模型的加载、推理和后处理逻辑;LLaVAAnalyzer通过Ollama API调用本地部署的LLaVA多模态大模型。
- 业务逻辑层:DetectionSystem类作为核心控制器,协调检测引擎、分析器和历史管理器之间的调用关系与数据流转。负责处理图像的预处理、检测结果的后处理、标注图像的保存以及检测记录的持久化。
- 表示层:基于Gradio 4.0+框架构建的响应式Web界面。AdvancedWebInterface类负责创建和管理六个功能标签页,处理用户交互事件,并将检测结果以图像、文本、表格和视频等多种形式呈现给用户。
3.2 检测模块设计
检测模块是本系统的核心,其处理流程采用四步流水线设计:
预处理阶段:对输入图像进行尺寸检测和统一处理。对于实时视频流模式,将图像宽度限制在640像素以内以确保推理速度。支持JPG、PNG、BMP等多种图像格式的无缝输入。
模型推理阶段:加载预训练的YOLOv8n模型权重,通过GPU(CUDA)或CPU执行前向传播。模型输出包含每个检测目标的类别标签索引、置信度分数和归一化边界框坐标(xyxy格式)。
后处理阶段:解析模型原始输出,将类别索引映射为中文显示名称。应用置信度阈值过滤低质量检测结果。使用PIL库在原始图像上绘制带中文标签的彩色边界框。标签背景色与边界框颜色一致以增强视觉区分度。
结果输出阶段:生成最终标注图像或视频帧,将检测记录(时间戳、任务类型、目标数量、LLaVA分析结果等)写入SQLite数据库,可选调用LLaVA大模型生成语义分析报告。
3.3 数据集介绍
本系统使用的建筑物检测数据集来源于Roboflow公开遥感影像标注数据,经COCO JSON格式到YOLO TXT格式的转换处理后,形成了标准化的YOLO目标检测数据集。数据集的详细属性信息如表1所示。
表1 建筑物检测数据集属性
| 属性 | 值 |
|---|---|
| 总图像数 | 8510 张 |
| 训练集数量 | 6808 张(80%) |
| 验证集数量 | 1702 张(20%) |
| 检测类别数 | 1 类 |
| 类别名称 | building(建筑物) |
| 图像格式 | JPG |
| 图像分辨率 | 512 × 512 像素 |
| 标注格式 | YOLO TXT(归一化坐标) |
| 数据来源 | Roboflow Universe |
| 划分随机种子 | 42 |
3.4 功能模块设计
系统围绕建筑物检测的实际应用需求,设计了六个功能完备的核心模块:
单张检测模块:用户可通过上传本地图像、系统剪贴板粘贴或USB摄像头捕获三种方式输入单张检测图像。系统利用YOLOv8模型进行快速推理,以带标注框的图像和结构化文本两种方式呈现检测结果。支持通过滑块调节检测灵敏度(置信度阈值0.1-1.0),以及可选启用LLaVA多模态大模型进行深度语义分析。检测完成后可一键导出HTML格式的结构化检测报告。
批量处理模块:支持多张图像的同时上传和批量并行检测。系统为每张图像生成独立的检测结果,以图片画廊方式提供浏览功能。同时生成包含文件名、检测状态和检测详情的结构化统计表格,并支持标注结果图像的ZIP压缩包一键下载,便于大批量数据的高效筛选和归档管理。
视频分析模块:支持MP4、AVI、MOV、MKV等多种常见视频格式的上传和逐帧检测分析。系统自动读取视频参数(分辨率、帧率、帧数),利用OpenCV VideoWriter生成标注后的输出视频。处理过程中实时显示进度信息。
实时视频流模块:通过Web摄像头接入实时视频流,采用纯内存流式处理模式,无磁盘I/O开销。每帧图像经YOLO模型推理后实时渲染检测结果,检测到目标时自动切换告警状态。该模式不含LLaVA大模型分析,以保证低延迟和高帧率的实时监测体验。
检测历史模块:基于SQLite轻量级数据库,持久化记录每次检测操作的关键信息。提供数据概览仪表板(总检测数、检出目标数、检出率),支持历史记录的分页查询、CSV格式导出和数据库清空等数据管理操作。
模型训练模块:提供图形化的模型微调训练接口。集成GPU/CPU硬件环境自动检测功能,支持训练轮数、批次大小、图像尺寸和断点续训等超参数的可视化配置。训练过程中实时显示总体进度和终端日志输出,训练完成后自动保存最佳模型权重。
3.5 界面设计
系统Web界面基于Gradio框架构建,采用科技感设计风格。配色方案以深蓝色(#1a237e)为主题色,建立了完整的CSS自定义属性色彩体系(–primary-、–surface-、–text-*),确保视觉一致性。界面整体划分为六个功能标签页,每个标签页使用Unicode几何符号(▸)作为装饰前缀,提升视觉辨识度。采用毛玻璃效果卡片布局(backdrop-filter blur),配合微妙入场动画(fadeInUp)和状态指示灯呼吸动画(subtlePulse)增强交互体验。按钮系统统一使用渐变背景与发光阴影的hover过渡效果,避免粗暴的scale变换。告警状态使用红色发光圆点(status-dot alarm)和红色边框横幅突出显示,正常状态使用绿色呼吸灯和绿色左边框提示。统计类标题使用⊿符号装饰,结果展示区使用◎符号标识。所有彩色emoji已替换为跨平台一致的Unicode几何符号,确保在不同操作系统和设备上的显示效果统一。深色模式支持通过CSS变量覆盖实现,可在暗光环境下保护用户视力。
4 实验与结果分析
4.1 实验环境
本系统在以下软硬件环境下完成了模型训练、性能评估和功能测试,详细配置如表2所示。
表2 实验环境配置
| 配置项 | 规格参数 |
|---|---|
| 操作系统 | Windows 11 Pro |
| Python版本 | 3.9 |
| 深度学习框架 | PyTorch 2.0+ |
| Ultralytics版本 | 8.0.196 |
| 基础模型 | YOLOv8n(COCO预训练权重) |
| 训练轮数(Epochs) | 100 |
| 批次大小(Batch Size) | 16 |
| 输入图像尺寸 | 640 × 640 |
| 优化器 | SGD(momentum=0.937,weight_decay=5e-4) |
| 初始学习率 | 0.01 |
| 学习率调度 | 余弦退火(CosLR) |
| 训练设备 | NVIDIA GeForce RTX 3060 12GB(CPU可选) |
| Web框架 | Gradio 4.0+ |
| 数据库 | SQLite 3 |
| 大模型服务 | Ollama + LLaVA 1.6 |
4.2 评估指标
本系统采用COCO标准的目标检测评估体系,主要包含以下指标:
- mAP@0.5(mean Average Precision at IoU=0.5):以交并比阈值为0.5时,各类别平均精度的均值,是评估检测器综合性能最常用的指标。
- mAP@0.5:0.95:在0.5至0.95范围内以0.05为步长计算各IoU阈值下的mAP并取均值,更严格地评估检测器的定位精度。
- Precision(精确率):正确检测的正样本数量占模型预测为正样本的总数量的比例,衡量检测结果的准确性。
- Recall(召回率):正确检测的正样本数量占真实正样本的总数量的比例,衡量检测结果的覆盖完整性。
4.3 实验结果
在建筑物数据集上完成100轮训练后,YOLOv8n模型的检测性能如表3所示。
表3 建筑物检测实验结果
| 评估指标 | 数值 |
|---|---|
| mAP@0.5 | 0.7576 |
| mAP@0.5:0.95 | 0.5108 |
| Precision | 0.7773 |
| Recall | 0.6839 |
实验结果表明,YOLOv8n模型在建筑物检测任务上取得了良好的检测精度。mAP@0.5达到0.7576,说明模型在常规IoU阈值下能够有效识别大部分建筑物目标。mAP@0.5:0.95为0.5108,体现模型在更严格的定位精度要求下仍保持稳定性能。精确率(0.7773)高于召回率(0.6839),表明模型的误检率相对较低,预测结果的可靠性较高。可通过升级模型尺寸至YOLOv8s/YOLOv8m或延长训练轮数进一步提升各项指标。
4.4 功能验证
为全面验证系统的功能完整性和运行稳定性,设计了以下六个测试场景:
单张检测验证:系统成功加载YOLOv8n预训练模型,对不同场景的建筑物图像进行检测处理。检测框位置准确、边界清晰,中文类别标签和置信度分数显示正常。启用LLaVA分析后,系统通过Ollama API成功调用LLaVA模型并返回中文建筑场景描述和分析建议。
批量处理验证:一次性上传20张建筑物航拍图像,系统在约30秒内完成全部检测处理。结果画廊正常显示所有标注图像,统计表格准确列出每张图像的检测状态和详情信息,ZIP打包文件可正常下载和解压查看。
视频分析验证:输入一段包含建筑物的航拍视频(MP4格式,1920×1080分辨率),系统正确解析视频参数并逐帧执行检测,输出视频完整无丢帧,标注框在帧间保持稳定。
实时视频流验证:通过USB摄像头接入实时画面,系统稳定渲染检测结果,帧率维持在15-25 FPS(CPU模式),检测到建筑物目标时告警状态正确切换,长时间运行(20分钟)无内存泄漏和帧率衰减。
历史记录验证:完成多次检测操作后,历史管理页面正确展示统计仪表板卡片和检测日志表格。CSV导出文件编码为UTF-8-BOM,在Excel中可正常打开。数据库清空操作正确执行且界面即时刷新。
模型训练验证:在Web界面配置训练参数(50轮、批次大小16、图像尺寸640),训练任务正常启动,终端日志实时更新显示各轮损失值和验证指标,训练完成后best.pt权重文件正确保存至指定目录。
5 结论与展望
5.1 主要贡献
本文设计并实现了一套基于YOLOv8的建筑物智能检测系统,主要贡献包括:
(1)构建了完整的端到端建筑物检测流程,覆盖数据预处理、模型训练、推理部署和结果管理全生命周期需求。
(2)设计了功能完备的六合一Web交互界面,集成单张检测、批量处理、视频分析、实时视频流、检测历史管理和模型训练六大功能模块,满足多元化应用场景。
(3)通过集成LLaVA多模态大模型,赋予系统超越传统目标检测的深度语义分析能力,使检测结果更加丰富和可解释。
(4)采用模块化分层架构设计,各组件之间松耦合、接口清晰,便于后续功能扩展和模型版本升级。
(5)完成了系统界面的全流程中文化适配,包括所有控件标签、提示信息、状态反馈和LLaVA分析输出,降低了中文用户的使用门槛。
5.2 未来展望
本系统可在以下方向进行进一步改进和扩展:
(1)多类别检测扩展:扩充数据集,支持更多建筑相关类别的检测与分类,如建筑类型判别(住宅/商业/工业)、建筑结构识别(砖混/框架/钢结构)和建筑年代估算等。
(2)模型轻量化与边缘部署:探索模型量化、知识蒸馏和神经架构搜索等技术,在保证精度的前提下压缩模型体积,实现边缘设备和移动端的实时部署。
(3)多模态数据融合:结合红外热成像、LiDAR点云和SAR雷达等多源传感器数据,提升系统在复杂天气条件和夜间低光照环境下的检测鲁棒性。
(4)增量学习与持续适应:引入增量学习和在线学习机制,使模型能够持续适应新地域、新建筑风格的数据分布变化,减少模型重训成本。
(5)变化检测与时序分析:扩展系统能力以支持不同时相遥感影像的建筑物变化自动发现与定量分析,服务于城市动态监测应用。
6 快速开始
环境要求
- Python 3.8 及以上版本
- CUDA GPU(可选,用于加速训练和推理)
- Ollama(可选,用于LLaVA大模型深度分析)
安装依赖
pip install -r requirements.txt
如遇网络问题可使用国内镜像源:
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
LLaVA大模型配置(可选)
如需启用深度分析功能:
- 访问 https://ollama.ai/download 安装Ollama
- 启动Ollama服务:
ollama serve - 下载LLaVA模型:
ollama pull llava - 确保Ollama服务在后台持续运行
启动Web系统
python run_web_advanced.py
启动后访问 http://localhost:7860 进入检测界面。
模型训练
# Web界面训练(推荐)
# 进入"模型训练"标签页,配置超参数后点击"启动训练"
# 命令行训练
python train.py --epochs 100 --batch 16
命令行检测
# 单张图像检测
python detect.py --model yolov8n.pt --source path/to/image.jpg
# 视频检测
python detect_video.py --model runs/train/weights/best.pt --source video.mp4
# 模型验证
python validate.py
7 项目结构
building/
├── config.yaml # 系统核心配置文件
├── dataset.yaml # 数据集入口配置
├── requirements.txt # Python依赖清单
├── README.md # 本文档
├── run_web_advanced.py # Web系统启动入口
├── train.py # 训练入口脚本
├── detect.py # 单张检测入口脚本
├── detect_video.py # 视频检测入口脚本
├── validate.py # 模型验证脚本
├── check_gpu.py # GPU环境检测脚本
├── prepare_dataset.py # 数据集预处理脚本
├── setup_dataset.py # 数据集设置脚本
├── split_data.py # 数据集划分工具
├── convert_voc_to_yolo.py # VOC转YOLO格式脚本
├── yolo11n.pt # YOLO11n预训练权重
├── yolov8n.pt # YOLOv8n预训练权重
├── src/ # 核心源码目录
│ ├── __init__.py
│ ├── detection_system.py # 核心检测业务逻辑
│ ├── yolo_detector.py # YOLO检测引擎封装
│ ├── llava_analyzer.py # LLaVA多模态分析器
│ ├── history_manager.py # 检测历史数据库管理
│ ├── gpu_utils.py # GPU设备检测工具
│ ├── web_interface_advanced.py # Gradio Web交互界面
│ ├── prepare_dataset.py # 数据集准备辅助
│ └── convert_coco_to_yolo.py # COCO转YOLO格式
├── data/ # 数据目录
│ ├── buildings/ # 建筑物检测数据集
│ │ ├── dataset.yaml # 数据集配置
│ │ ├── images/
│ │ │ ├── train/ # 训练集图像(6808张)
│ │ │ └── val/ # 验证集图像(1702张)
│ │ └── labels/
│ │ ├── train/ # 训练集标注
│ │ └── val/ # 验证集标注
│ └── history.db # 检测历史SQLite数据库
├── models/ # 自定义模型存储目录
├── outputs/ # 检测结果输出目录
├── logs/ # 运行日志目录
├── runs/ # 训练运行结果目录
├── video/ # 测试视频目录
└── scripts/ # 工具脚本目录
└── generate_paper.py # 论文Word文档生成脚本
8 系统功能模块
| 功能模块 | 功能说明 | 输入类型 | 输出类型 |
|---|---|---|---|
| 单张检测 | 单张图像目标检测与LLaVA语义分析 | 上传图像/摄像头/剪贴板 | 标注图像+AI分析报告+HTML报告 |
| 批量处理 | 多张图像并行批量检测 | 多文件上传 | ZIP压缩包+CSV统计表+图片画廊 |
| 视频分析 | 视频文件逐帧检测处理 | MP4/AVI/MOV/MKV视频 | 标注后视频文件 |
| 实时视频流 | 摄像头实时流式检测 | 摄像头视频流 | 实时标注画面+告警状态 |
| 检测历史 | 历史记录管理与数据统计 | 数据库查询 | 数据仪表板+CSV导出 |
| 模型训练 | YOLOv8模型微调训练 | 训练超参数配置 | 训练好的模型权重+训练日志 |
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐
所有评论(0)