news 2026/4/15 7:16:06

yolov8模型训练深度学习 yolo混凝土裂缝检测数据集 水泥裂缝数据集 裂缝识别数据集的训练及应用 混凝土结构健康监测、裂缝检测、基础设施巡检

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
yolov8模型训练深度学习 yolo混凝土裂缝检测数据集 水泥裂缝数据集 裂缝识别数据集的训练及应用 混凝土结构健康监测、裂缝检测、基础设施巡检

yolov8模型训练深度学习 yolo混凝土裂缝检测数据集 水泥裂缝数据集 裂缝识别数据集的训练及应用 混凝土结构健康监测、裂缝检测、基础设施巡检

文章目录

    • ✅ 一、环境搭建(从 CUDA 到依赖安装)
      • 1. 确认 CUDA 驱动(GPU 加速)
      • 2. 安装 Anaconda(Python 包管理器)
      • 3. 创建 Python 虚拟环境
      • 4. 安装必要依赖
    • ✅ 二、数据集结构(YOLO 格式)
      • 文件目录结构
      • 1. 数据说明
      • 2. 划分数据集(建议比例)
      • 3. 创建 `data.yaml`
    • ✅ 三、训练代码(调用官方预训练模型)
      • 📌 `train.py` —— 完整训练脚本
    • ✅ 四、推理代码(检测新图像)
      • 📌 `predict.py`
    • ✅ 五、评估模型性能
      • 📌 `evaluate.py`
    • ✅ 六、训练结果可视化

以下文字及代码仅供参考学习使用。
项目说明
数据集名称混凝土梁裂缝目标检测数据集
适用任务混凝土结构健康监测、裂缝检测、基础设施巡检
适用算法YOLO 系列(YOLOv5/v8/v11等)、YOLO格式兼容的目标检测模型
图像数量约 2,000 张(2K)
图像分辨率1000 × 1000 像素(统一尺寸,便于训练)
图像格式JPG 或 PNG(常见为 JPG)
标注格式提供两种格式:
.txt文件(YOLO 格式,归一化坐标)
.xml文件(Pascal VOC 格式)
类别数量1 类:
0: crack(裂缝)
标签内容每张图像对应一个.txt和一个.xml标注文件,包含裂缝的边界框(Bounding Box)


1

1


1

1

1

1


✅ 一、环境搭建(从 CUDA 到依赖安装)

1. 确认 CUDA 驱动(GPU 加速)

  • 打开终端或命令行:
    nvidia-smi
  • 查看 CUDA Version(如 12.1、11.8),用于选择对应的 PyTorch 安装命令。

✅ 推荐:CUDA 11.8 或 12.1


2. 安装 Anaconda(Python 包管理器)

  • 下载地址:https://www.anaconda.com/products/distribution
  • 安装完成后,打开Anaconda Prompt(Windows)或终端(Mac/Linux)

3. 创建 Python 虚拟环境

# 创建名为 crack-det 的虚拟环境(Python 3.9)conda create -n crack-detpython=3.9# 激活环境conda activate crack-det

4. 安装必要依赖

# 安装 PyTorch(以 CUDA 11.8 为例,根据你的版本调整)pipinstalltorch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118# 安装 Ultralytics YOLOv8pipinstallultralytics# 安装 OpenCV(图像处理)pipinstallopencv-python-headless# 其他工具(可选)pipinstallmatplotlib pillow tqdm

✅ 验证安装:

importtorchprint(torch.__version__)print(torch.cuda.is_available())# 应输出 True

✅ 二、数据集结构(YOLO 格式)

文件目录结构

datasets/ └── concrete_crack/ ├── images/ │ ├── train/ │ ├── val/ │ └── test/ ├── labels/ │ ├── train/ │ ├── val/ │ └── test/ └── data.yaml

1. 数据说明

  • 图像数量:约 2000 张
  • 分辨率:1000×1000(统一,适合训练)
  • 标签格式:.txt(YOLO 格式),每行:
    class_id x_center y_center width height # 归一化 [0,1]
  • 类别:通常为crack(裂缝),即class_id = 0
  • 附带.xml文件可忽略(YOLO 使用.txt

2. 划分数据集(建议比例)

集合数量
train1400 张
val400 张
test200 张

你可以使用以下脚本自动划分:

# split_data.pyimportosimportrandomimportshutilfrompathlibimportPath# 路径配置(请修改为你的实际路径)image_dir='path/to/your/images'# 替换为你的图像文件夹label_dir='path/to/your/labels'# 替换为你的标签文件夹output_dir='datasets/concrete_crack'# 创建输出目录forsplitin['train','val','test']:(Path(output_dir)/'images'/split).mkdir(parents=True,exist_ok=True)(Path(output_dir)/'labels'/split).mkdir(parents=True,exist_ok=True)# 获取所有图像文件images=[fforfinos.listdir(image_dir)iff.endswith(('.jpg','.png','.jpeg'))]random.shuffle(images)# 划分n_train=int(0.7*len(images))n_val=int(0.2*len(images))train_files=images[:n_train]val_files=images[n_train:n_train+n_val]test_files=images[n_train+n_val:]# 复制函数defcopy_files(files,img_dir,lbl_dir,out_img_dir,out_lbl_dir):forfinfiles:# 图像shutil.copy(os.path.join(img_dir,f),out_img_dir)# 标签label_file=os.path.splitext(f)[0]+'.txt'label_path=os.path.join(lbl_dir,label_file)ifos.path.exists(label_path):shutil.copy(label_path,out_lbl_dir)copy_files(train_files,image_dir,label_dir,os.path.join(output_dir,'images','train'),os.path.join(output_dir,'labels','train'))copy_files(val_files,image_dir,label_dir,os.path.join(output_dir,'images','val'),os.path.join(output_dir,'labels','val'))copy_files(test_files,image_dir,label_dir,os.path.join(output_dir,'images','test'),os.path.join(output_dir,'labels','test'))print("✅ 数据集划分完成:train=1400, val=400, test=200")

3. 创建data.yaml

datasets/concrete_crack/下创建data.yaml

# data.yamltrain:../datasets/concrete_crack/images/trainval:../datasets/concrete_crack/images/valtest:../datasets/concrete_crack/images/testnc:1names:['crack']

✅ 三、训练代码(调用官方预训练模型)

📌train.py—— 完整训练脚本

# train.pyfromultralyticsimportYOLOimporttorch# 检查 GPUdevice='cuda'iftorch.cuda.is_available()else'cpu'print(f"Using device:{device}")# 加载官方预训练模型(推荐使用 yolov8m 或 yolov8l 提升小目标检测能力)model=YOLO('yolov8m.pt')# 可选: yolov8s, yolov8l# 开始训练results=model.train(data='datasets/concrete_crack/data.yaml',# 数据配置文件epochs=150,# 训练轮数imgsz=1024,# 输入尺寸(匹配 1000x1000)batch=8,# 批次大小(根据显存调整,16G显卡可用8)name='concrete_crack_yolov8m',# 实验名称device=device,# 使用 GPUworkers=4,# 数据加载线程optimizer='AdamW',# 优化器lr0=0.001,# 初始学习率weight_decay=0.0005,patience=20,# 早停project='runs/crack',# 保存路径amp=True,# 自动混合精度close_mosaic=10,# 最后10轮关闭 Mosaichsv_h=0.015,# 色相增强hsv_s=0.7,# 饱和度hsv_v=0.4,# 明度(增强对比度)translate=0.2,scale=0.5,fliplr=0.5,mosaic=1.0,degrees=10.0,)

📌说明

  • imgsz=1024:匹配你的 1000×1000 图像,避免过度缩放
  • yolov8m:适合小目标(裂缝细长、不规则)
  • batch=8:16G 显存推荐值,若显存不足可降为 4

✅ 四、推理代码(检测新图像)

📌predict.py

# predict.pyfromultralyticsimportYOLO# 加载训练好的最佳模型model=YOLO('runs/crack/concrete_crack_yolov8m/weights/best.pt')# 推理单张图像results=model.predict(source='test_crack.jpg',# 输入图像路径save=True,# 保存带框图像conf=0.3,# 置信度阈值(裂缝建议低阈值)iou=0.45,show=False,project='runs/predict',name='crack_test',imgsz=1024)# 打印结果forresultinresults:boxes=result.boxesprint(f"检测到{len(boxes)}条裂缝:")forboxinboxes:cls_id=int(box.cls)conf=float(box.conf)print(f" 裂缝置信度:{conf:.3f}")

✅ 五、评估模型性能

📌evaluate.py

# evaluate.pyfromultralyticsimportYOLO# 加载训练好的模型model=YOLO('runs/crack/concrete_crack_yolov8m/weights/best.pt')# 在验证集上评估metrics=model.val(data='datasets/concrete_crack/data.yaml',split='val',imgsz=1024,batch=8,conf=0.001,iou=0.6,device='cuda'iftorch.cuda.is_available()else'cpu')# 输出关键指标print(f"mAP@0.5:{metrics.box.map:.4f}")print(f"mAP@0.5:0.95:{metrics.box.map50_95:.4f}")print(f"Precision:{metrics.box.p:.4f}")print(f"Recall:{metrics.box.r:.4f}")

✅ 六、训练结果可视化

训练完成后,查看:

  • runs/crack/concrete_crack_yolov8m/results.png:训练曲线(loss, mAP)
  • confusion_matrix.png:是否误检背景为裂缝
  • PR_curve.png:Precision-Recall 曲线

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/11 20:49:38

旱涝预警新方案:地下2米土壤墒情实时追踪系统,管式墒情监测仪

我司自主研发的管式土壤墒情监测仪,是一款以介电常数原理为基础的传感器;能够对不同土层的土壤温湿度进行快速、准确、全面地监测。在农业现代化进程中,水资源短缺与种植成本攀升成为制约产业发展的关键瓶颈。精准把握土壤墒情、科学调控水肥…

作者头像 李华
网站建设 2026/4/11 10:39:37

智慧校园数据安全新挑战:数据库审计如何守护教育信息资产

✅作者简介:合肥自友科技 📌核心产品:智慧校园平台(包括教工管理、学工管理、教务管理、考务管理、后勤管理、德育管理、资产管理、公寓管理、实习管理、就业管理、离校管理、科研平台、档案管理、学生平台等26个子平台) 。公司所有人员均有多…

作者头像 李华
网站建设 2026/4/10 11:34:10

算法题 连续整数求和

829. 连续整数求和 问题描述 给定一个正整数 n,返回可以表示为 连续正整数之和 的方案数。 示例: 输入: n 5 输出: 2 解释: 5 2 3,共2种表示方法(包括5本身)输入: n 9 输出: 3 解释: 9 9 4 5 2 3 4&#xff…

作者头像 李华