深度学习YOLOV8模型如何训练建筑工地工程类桥梁/建筑/裂缝病害检测数据集的训练及应用
数据集描述:深度学习YOLOV8模型如何训练建筑工地工程类桥梁/建筑/裂缝病害检测数据集的训练及应用 建筑物损伤分割与检测数据集 建筑结构健康监测、城市基础设施巡检、AI辅助工程评估等方向的研究与应用。
数据集描述:
深度学习YOLOV8模型如何训练建筑工地工程类桥梁/建筑/裂缝病害检测数据集的训练及应用 建筑物损伤分割与检测数据集 建筑结构健康监测、城市基础设施巡检、AI辅助工程评估等方向的研究与应用
文章目录
-
-
-
**类别标注统计表**
-
数据集信息
-
目标
-
-
✅ 一、环境配置
-
1. 安装 CUDA 驱动(GPU 加速)
-
2. 安装 Anaconda
-
3. 创建 Python 虚拟环境
-
4. 安装必要依赖
-
-
✅ 二、数据集结构与 `data.yaml` 配置
-
数据目录结构
-
创建 `data.yaml`
-
-
✅ 三、调用 YOLOv8 官方预训练模型进行训练
-
✅ 四、推理代码(单图 / 批量 / 视频)
-
1. 单张图像推理
-
2. 批量图像推理
-
3. 视频检测(如无人机巡检视频)
-
4. 实时摄像头检测(OpenCV)
-
-
✅ 五、模型评估(验证集 + 测试集)
-
1. 在验证集上评估
-
2. 在测试集上独立评估(最终性能)
-
-
✅ 六、可视化与分析
-
1. 使用中文标签显示
-
2. 查看训练曲线
-
-
✅ 七、模型导出(ONNX / TensorRT / TFLite)
-
以下文字及代码仅供参考学习使用。 “建筑物损伤分割与检测数据集”
|
项目 |
内容 |
|---|---|
| 数据集名称 |
建筑物损伤分割与检测数据集 |
| 图像总数 |
5,925 张 |
| 标注格式 |
VOC 格式、YOLO 格式(支持目标检测与图像分割任务) |
| 类别数量 |
4 类 |
| 任务类型 |
目标检测、语义分割 |
类别标注统计表
|
类别编号 |
英文名称 |
中文名称 |
标注数量(实例数) |
|---|---|---|---|
|
0 |
Rebar-Exposure |
钢筋外露 |
1,281 |
|
1 |
Corrosion |
腐蚀 |
6,843 |
|
2 |
Efflorescence |
泛碱 |
2,297 |
|
3 |
Cracked |
开裂 |
3,471 |
| 总计 |
—— |
—— |
13,892 |
注:标注数量为所有图像中各类缺陷的实例总数。
适用于建筑结构健康监测、城市基础设施巡检、AI辅助工程评估等方向的研究与应用。






使用YOLOv8 训练和推理一个建筑物损伤分割与检测数据集(5925张图片,4类标注)从环境搭建、数据准备、模型训练、推理到评估提供完整的技术流程与代码。由于这是一个包含多种建筑损伤的多类别目标检测任务,侧重于如何利用 YOLOv8 的强大能力来准确识别并定位这些损伤。
数据集信息
-
类别数量: 4
-
Rebar-Exposure (钢筋外露)
-
Corrosion (腐蚀)
-
Efflorescence (泛碱)
-
Cracked (开裂)
-
-
图像总数: 5925 张
-
标注格式: 提供 VOC 和 YOLO 格式
目标
-
搭建 YOLOv8 环境。
-
配置数据集以适应 YOLOv8 训练。
-
使用预训练模型进行迁移学习。
-
完成模型训练、推理、评估全流程。
-
导出模型用于部署。
✅ 一、环境配置
1. 安装 CUDA 驱动(GPU 加速)
确保你的 NVIDIA 显卡驱动已安装:
nvidia-smi
输出应显示 GPU 信息。推荐使用 CUDA 11.8 或 12.1。
2. 安装 Anaconda
下载并安装 Anaconda(Python 3.9+ 推荐)。
3. 创建 Python 虚拟环境
conda create -n building_damage_yolo python=3.9
conda activate building_damage_yolo
4. 安装必要依赖
# 安装 PyTorch(以 CUDA 11.8 为例)
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
# 安装 YOLOv8 官方库
pip install ultralytics opencv-python numpy matplotlib tqdm scikit-learn pandas pillow
# 可选:TensorBoard 可视化
pip install tensorboard
# 如果需要处理 VOC 格式
pip install lxml # 用于解析 XML (VOC)
验证 GPU 是否可用:
python -c "import torch; print(torch.cuda.is_available())"
# 应输出 True
✅ 二、数据集结构与 data.yaml 配置
将使用 YOLO 格式的标注文件,并且数据集已经按照 8:1:1 的比例划分(即训练集4740张,验证集592张,测试集593张)。
数据目录结构
building_damage_dataset/
├── images/
│ ├── train/ # 训练集图像
│ ├── val/ # 验证集图像
│ └── test/ # 测试集图像
├── labels/
│ ├── train/ # 对应的 .txt 文件 (YOLO 格式)
│ ├── val/
│ └── test/
└── data.yaml # 数据配置文件
创建 data.yaml
在项目根目录创建 data.yaml 文件:
# data.yaml
train: ./building_damage_dataset/images/train
val: ./building_damage_dataset/images/val
test: ./building_damage_dataset/images/test # 支持独立测试集评估
# 类别数量
nc:4
# 英文类别名称(与标签顺序一致)
names:
- Rebar-Exposure
- Corrosion
- Efflorescence
- Cracked
# 中文映射(用于可视化)
names_zh:
- 钢筋外露
- 腐蚀
- 泛碱
- 开裂
注意:YOLOv8 要求
names列表中的顺序与.txt标注中的类别 ID 完全对应(从 0 开始)。
✅ 三、调用 YOLOv8 官方预训练模型进行训练
考虑到该数据集包含了较为复杂的建筑损伤类型,建议使用 YOLOv8m 或 YOLOv8l 提升分类精度。
from ultralytics import YOLO
# 加载官方预训练模型(推荐使用 yolov8m.pt)
model = YOLO('yolov8m.pt')# 自动下载 ImageNet 预训练权重
# 开始训练
results = model.train(
data='data.yaml',# 数据配置文件
epochs=100,# 训练轮数
batch=32,# 根据显存调整(RTX 3090 可用 64)
imgsz=640,# 输入尺寸(可尝试 800 提升小目标检测)
optimizer='AdamW',# 更稳定优化器
lr0=0.001,# 初始学习率
weight_decay=0.0005,
momentum=0.937,
# 数据增强(提升泛化能力)
augment=True,
hsv_h=0.015,# 色调扰动
hsv_s=0.7,
hsv_v=0.4,
degrees=10.0,# 随机旋转
translate=0.1,
scale=0.5,
shear=0.0,
flipud=0.0,
fliplr=0.5,# 左右翻转
mosaic=1.0,# Mosaic 增强
mixup=0.1,# MixUp
copy_paste=0.1,# Copy-Paste Augmentation
# 正则化
dropout=0.2,
label_smoothing=0.1,# 标签平滑,防止过拟合
# 学习率调度
cos_lr=True,# 余弦退火学习率
# 保存与日志
project='runs/train',
name='building_damage_yolov8m',
save=True,
save_period=10,
exist_ok=False,
# 缓存(内存充足时开启)
cache=False
)
建议:
若显存不足,改用
yolov8s.pt或降低batch=16尝试
imgsz=800提升远处小目标检测能力使用
copy_paste增强稀有类别(如Rebar-Exposure)

✅ 四、推理代码(单图 / 批量 / 视频)
1. 单张图像推理
from ultralytics import YOLO
from PIL import Image
# 加载最佳模型
model = YOLO('runs/train/building_damage_yolov8m/weights/best.pt')
# 推理
results = model('test_building.jpg', conf=0.4)# 设置置信度阈值
# 显示结果
for r in results:
im_array = r.plot()# 绘制边界框和标签
im = Image.fromarray(im_array[...,::-1])# BGR to RGB
im.show()
2. 批量图像推理
results = model.predict(
source='building_damage_dataset/images/test',
save=True,
project='runs/detect',
name='building_damage_test_results',
conf=0.4,
imgsz=640
)
print("批量推理完成")
3. 视频检测(如无人机巡检视频)
results = model.predict(
source='building_inspection_video.mp4',
save=True,
project='runs/detect/video',
name='building_damage_video_result',
show=False,
conf=0.4
)
print("视频检测完成")
4. 实时摄像头检测(OpenCV)
import cv2
cap = cv2.VideoCapture(0)
while cap.isOpened():
ret, frame = cap.read()
ifnot ret:
break
results = model(frame, conf=0.4)
annotated_frame = results[0].plot()
cv2.imshow('Building Damage Detection', annotated_frame)
if cv2.waitKey(1)&0xFF==ord('q'):
break
cap.release()
cv2.destroyAllWindows()
✅ 五、模型评估(验证集 + 测试集)
1. 在验证集上评估
metrics = model.val(
data='data.yaml',
split='val',
batch=32,
imgsz=640,
save_json=False,
project='runs/val',
name='building_damage_eval'
)
print(f"mAP@0.5: {metrics.box.map50:.4f}")
print(f"mAP@0.5:0.95: {metrics.box.map:.4f}")
print(f"Precision: {metrics.box.p:.4f}")
print(f"Recall: {metrics.box.r:.4f}")
# 每类 AP
for i, name inenumerate(model.names):
print(f"{name} (AP@0.5): {metrics.box.ap[i]:.4f}")
2. 在测试集上独立评估(最终性能)
# 使用 test split 进行最终性能评估
test_metrics = model.val(
data='data.yaml',
split='test',
save_json=True,
name='test_final'
)
print(f"Test mAP@0.5: {test_metrics.box.map50:.4f}")
print(f"Test Recall: {test_metrics.box.r:.4f}")
✅ 六、可视化与分析
1. 使用中文标签显示
# 修改模型类名显示为中文
model.names =['钢筋外露','腐蚀','泛碱','开裂']
results = model('test.jpg')
results[0].plot()# 显示中文标签
2. 查看训练曲线
tensorboard --logdir runs/train/building_damage_yolov8m
✅ 七、模型导出(ONNX / TensorRT / TFLite)
# 导出为 ONNX(通用部署)
model.export(format='onnx', dynamic=True, opset=13, imgsz=640)
# 导出为 TensorRT(NVIDIA GPU 加速)
model.export(format='engine', half=True, dynamic=True)
# 导出为 TFLite(移动端)
model.export(format='tflite', int8=True)
# 导出为 CoreML(iOS)
model.export(format='coreml')
以上文字及代码仅供参考学习使用。
更多推荐


所有评论(0)