巴中网站建设开发公司,网站建设描述,注册域名的官方网站,微信公众平台网站建设yolov8模型训练深度学习 yolo混凝土裂缝检测数据集 水泥裂缝数据集 裂缝识别数据集的训练及应用 混凝土结构健康监测、裂缝检测、基础设施巡检 文章目录✅ 一、环境搭建#xff08;从 CUDA 到依赖安装#xff09;1. 确认 CUDA 驱动#xff08;GPU 加速#xff09;2. 安装 A…yolov8模型训练深度学习 yolo混凝土裂缝检测数据集 水泥裂缝数据集 裂缝识别数据集的训练及应用 混凝土结构健康监测、裂缝检测、基础设施巡检文章目录✅ 一、环境搭建从 CUDA 到依赖安装1. 确认 CUDA 驱动GPU 加速2. 安装 AnacondaPython 包管理器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 Box111111✅ 一、环境搭建从 CUDA 到依赖安装1. 确认 CUDA 驱动GPU 加速打开终端或命令行nvidia-smi查看 CUDA Version如 12.1、11.8用于选择对应的 PyTorch 安装命令。✅ 推荐CUDA 11.8 或 12.12. 安装 AnacondaPython 包管理器下载地址https://www.anaconda.com/products/distribution安装完成后打开Anaconda PromptWindows或终端Mac/Linux3. 创建 Python 虚拟环境# 创建名为 crack-det 的虚拟环境Python 3.9conda create -n crack-detpython3.9# 激活环境conda activate crack-det4. 安装必要依赖# 安装 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.yaml1. 数据说明图像数量约 2000 张分辨率1000×1000统一适合训练标签格式.txtYOLO 格式每行class_id x_center y_center width height # 归一化 [0,1]类别通常为crack裂缝即class_id 0附带.xml文件可忽略YOLO 使用.txt2. 划分数据集建议比例集合数量train1400 张val400 张test200 张你可以使用以下脚本自动划分# split_data.pyimportosimportrandomimportshutilfrompathlibimportPath# 路径配置请修改为你的实际路径image_dirpath/to/your/images# 替换为你的图像文件夹label_dirpath/to/your/labels# 替换为你的标签文件夹output_dirdatasets/concrete_crack# 创建输出目录forsplitin[train,val,test]:(Path(output_dir)/images/split).mkdir(parentsTrue,exist_okTrue)(Path(output_dir)/labels/split).mkdir(parentsTrue,exist_okTrue)# 获取所有图像文件images[fforfinos.listdir(image_dir)iff.endswith((.jpg,.png,.jpeg))]random.shuffle(images)# 划分n_trainint(0.7*len(images))n_valint(0.2*len(images))train_filesimages[:n_train]val_filesimages[n_train:n_trainn_val]test_filesimages[n_trainn_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_fileos.path.splitext(f)[0].txtlabel_pathos.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(✅ 数据集划分完成train1400, val400, test200)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# 检查 GPUdevicecudaiftorch.cuda.is_available()elsecpuprint(fUsing device:{device})# 加载官方预训练模型推荐使用 yolov8m 或 yolov8l 提升小目标检测能力modelYOLO(yolov8m.pt)# 可选: yolov8s, yolov8l# 开始训练resultsmodel.train(datadatasets/concrete_crack/data.yaml,# 数据配置文件epochs150,# 训练轮数imgsz1024,# 输入尺寸匹配 1000x1000batch8,# 批次大小根据显存调整16G显卡可用8nameconcrete_crack_yolov8m,# 实验名称devicedevice,# 使用 GPUworkers4,# 数据加载线程optimizerAdamW,# 优化器lr00.001,# 初始学习率weight_decay0.0005,patience20,# 早停projectruns/crack,# 保存路径ampTrue,# 自动混合精度close_mosaic10,# 最后10轮关闭 Mosaichsv_h0.015,# 色相增强hsv_s0.7,# 饱和度hsv_v0.4,# 明度增强对比度translate0.2,scale0.5,fliplr0.5,mosaic1.0,degrees10.0,)说明imgsz1024匹配你的 1000×1000 图像避免过度缩放yolov8m适合小目标裂缝细长、不规则batch816G 显存推荐值若显存不足可降为 4✅ 四、推理代码检测新图像predict.py# predict.pyfromultralyticsimportYOLO# 加载训练好的最佳模型modelYOLO(runs/crack/concrete_crack_yolov8m/weights/best.pt)# 推理单张图像resultsmodel.predict(sourcetest_crack.jpg,# 输入图像路径saveTrue,# 保存带框图像conf0.3,# 置信度阈值裂缝建议低阈值iou0.45,showFalse,projectruns/predict,namecrack_test,imgsz1024)# 打印结果forresultinresults:boxesresult.boxesprint(f检测到{len(boxes)}条裂缝)forboxinboxes:cls_idint(box.cls)conffloat(box.conf)print(f 裂缝置信度:{conf:.3f})✅ 五、评估模型性能evaluate.py# evaluate.pyfromultralyticsimportYOLO# 加载训练好的模型modelYOLO(runs/crack/concrete_crack_yolov8m/weights/best.pt)# 在验证集上评估metricsmodel.val(datadatasets/concrete_crack/data.yaml,splitval,imgsz1024,batch8,conf0.001,iou0.6,devicecudaiftorch.cuda.is_available()elsecpu)# 输出关键指标print(fmAP0.5:{metrics.box.map:.4f})print(fmAP0.5:0.95:{metrics.box.map50_95:.4f})print(fPrecision:{metrics.box.p:.4f})print(fRecall:{metrics.box.r:.4f})✅ 六、训练结果可视化训练完成后查看runs/crack/concrete_crack_yolov8m/results.png训练曲线loss, mAPconfusion_matrix.png是否误检背景为裂缝PR_curve.pngPrecision-Recall 曲线