文章前瞻:优质数据集与检测系统精选

点击链接:更多数据集与系统目录清单

数据集与检测系统 数据集与检测系统
基于深度学习的道路积水检测系统 基于深度学习的道路垃圾检测系统
基于深度学习的道路裂缝检测系统 基于深度学习的道路交通事故检测系统
基于深度学习的道路病害检测系统 基于深度学习的道路积雪结冰检测系统
基于深度学习的汽车车牌检测系统 基于深度学习的井盖丢失破损检测系统
基于深度学习的行人车辆检测系统 基于深度学习的航拍行人检测系统
基于深度学习的车辆分类检测系统 基于深度学习的电动车头盔佩戴检测系统
基于深度学习的交通信号灯检测系统 基于深度学习的共享单车违停检测系统
基于深度学习的摆摊占道经营检测系统 基于深度学习的人员游泳溺水检测系统
基于深度学习的航拍水面垃圾检测系统 基于深度学习的水面垃圾检测系统
基于深度学习的水面船舶分类检测系统 基于深度学习的海洋垃圾检测系统
基于深度学习的救生衣穿戴检测系统 基于深度学习的海洋生物检测系统
基于深度学习的人员吸烟检测系统 基于深度学习的口罩佩戴检测系统
基于深度学习的烟雾和火灾检测系统 基于深度学习的人员睡岗玩手机检测系统
基于深度学习的人员摔倒检测系统 基于深度学习的人员姿势检测系统(站坐躺摔倒)
基于深度学习的工地安全穿戴检测系统 基于深度学习的安全帽检测系统
基于深度学习的反光背心穿戴检测系统 基于深度学习的吸烟玩手机行为检测系统
基于深度学习的工地挖掘机检测系统 基于深度学习的工地工程车检测系统
基于深度学习的人体手势检测系统 基于深度学习的消防灭火器检测系统
基于深度学习的人员高空作业检测系统 基于深度学习的水果分类检测系统
基于深度学习的农作物病害检测系统 基于深度学习的水稻病害检测系统
基于深度学习的害虫检测系统 基于深度学习的蓝莓成熟度检测系统
基于深度学习的草莓成熟度检测系统 基于深度学习的食品分类检测系统
基于深度学习的光伏板缺陷检测系统 基于深度学习的航拍光伏板检测系统
基于深度学习的建筑垃圾废料检测系统 基于深度学习的可回收/不可回收垃圾检测系统
基于深度学习的垃圾分类检测系统 基于深度学习的猪只行为动作检测系统
基于深度学习的动物分类检测系统 基于深度学习的明厨亮灶鼠患检测系统
基于深度学习的猫狗分类检测系统 基于深度学习的服饰分类检测系统
基于深度学习的电动车进电梯检测系统 基于深度学习的无人机设备检测系统
基于深度学习的树木倒塌检测系统 基于深度学习的电线杆杂物检测系统
基于深度学习的航拍树木检测系统 基于深度学习的学生课堂行为检测系统
基于深度学习的家具分类检测系统 基于深度学习的武器刀具检测系统

一、数据集介绍

【数据集】道路裂缝分类识别数据集 4710 张,目标检测,包含YOLO(TXT)/ JSON格式标注

数据集中包含 3 种分类,具体分类为:names: ['Alligator_crack', 'Longitudinal_crack', 'Transverse_crack'],对应网状裂缝、纵向裂缝、横向裂缝。

数据集图片来自国内外网站、网络爬虫、视频抽帧等;

可用于路面裂缝语义分割识别

检测场景为城市道路、园区路面、隧道、乡镇路面等,可以应用于通过裂缝几何特征(如宽度、走向)评估道路健康状态,预测病害发展趋势

文章底部名片或主页私信获取数据集~

  ​​​​​

1、数据概述

道路裂缝分类识别的重要性

随着城市化进程加速,道路基础设施面临严峻的老化问题。裂缝作为道路病害的早期表征,若不及时修复,将导致路面结构进一步恶化,甚至引发交通安全事故。传统裂缝检测依赖人工巡查或简单图像处理技术,存在效率低、主观性强、对复杂环境适应性差等缺陷。例如,在光照不均、阴影遮挡或裂缝形态复杂(如网状、横向、纵向裂缝交织)的场景下,传统方法难以保证检测精度。

深度学习技术的兴起为裂缝检测提供了新思路。卷积神经网络(CNN)通过自动提取图像特征,可显著提升检测效率和准确性。然而,道路裂缝检测任务对算法提出更高要求:

  1. 实时性:需在动态视频流中快速定位裂缝;

  2. 多尺度适应性:需兼顾微小裂缝(毫米级)与大范围病害的检测;

  3. 抗干扰能力:需区分裂缝与道路标记、阴影、污渍等干扰因素。

基于YOLO的道路裂缝分割算法

语义分割通过逐像素分类可解决上述问题:

  • 精确轮廓标注:将裂缝区域从背景中分离,支持病害面积、长度等参数的精确计算;

  • 细粒度分类:基于像素级标注实现裂缝类型识别,为维修决策提供依据;

  • 结构化信息提取:通过裂缝几何特征(如宽度、走向)评估道路健康状态,预测病害发展趋势。

该数据集含有 4710 张图片,包含Labelme JSON 格式和YOLO TXT格式,用于训练和测试城市道路、园区路面、隧道、乡镇路面等场景进行道路裂缝分类识别

图片格式为jpg格式,标注格式分别为:

YOLO:txt

labelme:Json

数据集均为 labelme 标注,保证标注精确度。

2、数据集文件结构

cracks_class/

——test/

————images/

————labels/

——train/

————images/

————labels/

——valid/

————images/

————labels/

——data.yaml

  • 该数据集已划分训练集样本,分别是:test目录(测试集)、train目录(训练集)、valid目录(验证集);
  • images文件夹为jpg格式的数据样本;
  • labels文件夹是YOLO格式的TXT文件;(json格式可通过脚本转换,yolo分割模型需要txt格式)
  • data.yaml是数据集配置文件,包含道路裂缝分类识别的目标分类和加载路径。

​​​​​​

yolo格式的标注文件内容如下:

1 0.610103125 0 0.595634375 0.0095375 0.5775015625 0.0245453125 0.56289375 0.044496875000000005 0.546271875 0.05723906250000001 0.5477828125 0.0697 0.5326703125 0.0987109375 0.5241078124999999 0.10777343749999999 0.52561875 0.1188171875 0.5407296875000001 0.12929531249999998 0.5246109375 0.1683703125 0.5200781250000001 0.17545 0.5079890625 0.188759375 0.5105078125 0.204334375 0.52058125 0.21820937499999998 0.514034375 0.23775 0.49690781250000005 0.2601203125 0.487840625 0.257571875 0.48431562499999997 0.24879375 0.47625624999999994 0.2269890625 0.45761874999999996 0.22302343750000003 0.468196875 0.20065312500000002 0.4999296875 0.1949890625 0.5019453125 0.18819375 0.4883453125 0.185078125 0.4601375 0.1927234375 0.43444843750000006 0.1986703125 0.44653593750000004 0.22415625 0.47323281250000004 0.249359375 0.460640625 0.2606734375 0.4374703125 0.26973437499999997 0.450565625 0.30145 0.442003125 0.3232546875 0.4143 0.35357500000000003 0.4057359375 0.377928125 0.38860937500000003 0.40199843749999997 0.37450625 0.42380312499999995 0.376521875 0.4627265625 0.3815578125 0.48368124999999995 0.39263906249999997 0.5060515624999999 0.41530625 0.51115 0.4435140625 0.5054859375 0.45358906250000003 0.508721875 0.47222656250000006 0.5274125 0.4626546875 0.5395890624999999 0.4772625 0.5608265625 0.4777671875 0.588578125 0.47625624999999994 0.6337375 0.47071406250000003 0.6447812500000001 0.46920312500000005 0.6731 0.4868328125 0.6932046875 0.4943890625 0.715009375 0.47272968750000005 0.7351156249999999 0.4404921875 0.7583359375 0.44955937500000004 0.7835390624999999 0.45358906250000003 0.809590625 0.42890625 0.8262984375 0.41278750000000003 0.8506515625000001 0.41228437500000004 0.879253125 0.422359375 0.89624375 0.41228437500000004 0.9265437500000001 0.41530625 0.9520296874999999 0.4143 0.9797812499999999 0.4041359375 0.9984375 0.434334375 0.9984375 0.43344062499999997 0.9896921875 0.44653593750000004 0.9690203125 0.468196875 0.9704359374999999 0.5029515625000001 0.978365625 0.5296484375 0.9939406249999999 0.5343859375 0.9984375 0.569009375 0.9984375 0.5649078125 0.996771875 0.5367 0.9797812499999999 0.514034375 0.9653390625 0.4868328125 0.9548609375 0.4551 0.94891875 0.4510703125 0.927396875 0.44704062499999997 0.9013578125 0.4409953125 0.88465 0.4319296875 0.8642609374999999 0.44704062499999997 0.844184375 0.4621515625 0.8232296874999999 0.4641671875 0.7725453124999999 0.48431562499999997 0.749325 0.5291453125000001 0.724521875 0.5291453125000001 0.7058328125 0.5084921875 0.6804875 0.5034562499999999 0.654434375 0.48733750000000003 0.6133734375000001 0.5074859375 0.5767109375 0.5009375 0.5500921875 0.485321875 0.516959375 0.46920312500000005 0.49855312500000004 0.4566109375 0.48609375000000005 0.45006250000000003 0.47221718749999997 0.4455296875 0.435971875 0.4279 0.43115781249999996 0.43293593750000003 0.4444671875 0.43847812499999994 0.47788125 0.43495156250000006 0.4914734375 0.4188328125 0.49996875 0.3971734375 0.49260624999999997 0.39666875 0.45707812499999995 0.403721875 0.42722499999999997 0.4188328125 0.40230468750000004 0.438146875 0.365625 0.4557765625 0.35259843750000003 0.4638359375 0.321175 0.46937656250000004 0.29200781249999996 0.4885171875 0.2764328125 0.5096734374999999 0.25915937499999997 0.537378125 0.2282921875 0.5333484375 0.20475625000000003 0.5338515625 0.188615625 0.5494671875 0.166528125 0.554 0.1486875 0.556015625 0.1268828125 0.5504734375 0.097715625 0.5590375 0.0815734375 0.5756593750000001 0.0648671875 0.5932890625 0.0484421875 0.6094078125 0.0314515625 0.6089046875 0.018425 0.62099375 0.007664062500000001 0.62248125 0 0.610103125 0

3、数据集适用范围 

  • 语义分割识别场景,监控摄像头识别
  • yolo训练模型或其他模型
  • 城市道路、园区路面、隧道、乡镇路面等场景
  • 可以用于通过裂缝几何特征(如宽度、走向)评估道路健康状态,预测病害发展趋势等。

4、数据集标注结果 

​  ​​​​​​ ​  ​​​​

​  ​​​​  ​​​​​​​​​​​​​​​  ​​​​​​​​​​​​​​​​​ ​​​​​​​​​​​​​​​​​​​  ​​​​​​​​​​​​​​​​​​​​​​​​​ ​​​​​​​​​​​​​​ ​​​​​​​​​​​​​​​​​​​​​​  ​​​​​​​

4.1、数据集内容 

  1. 多角度场景:监控摄像头视角,低空航拍视角;
  2. 标注内容:3个分类;
  3. 图片总量:4710 张图片数据;
  4. 标注类型:labelme Json格式和yolo TXT格式;

5、训练过程

5.1、导入训练数据

下载YOLO项目压缩包,解压在任意本地workspace文件夹中。

下载YOLO预训练分割模型,导入到ultralytics-main项目根目录下。

​​

ultralytics-main项目根目录下,创建data文件夹,并在data文件夹下创建子文件夹:images、labels,其中,将YOLO格式的TXT文件手动导入到labels文件夹中,将JPG格式的图像数据导入到images文件夹中。

(注:数据集文件包中train、test、valid三个文件夹的images和labels合并)

data目录结构如下:

​​​​​​

5.2、数据划分

首先在ultralytics-main目录下创建一个split.py文件,运行文件之后会在ultralytics-main目录下生成datasets文件夹,具体目录如下:

训练集、验证集、测试集已经完成划分。

import shutil
import random
import os

# 原始路径
image_original_path = "data/images/"
label_original_path = "data/labels/"

# 数据集划分比例(可以自定义)
train_percent = 0.8
val_percent = 0.1
test_percent = 0.1

cur_path = os.getcwd()
# 训练集路径
train_image_path = os.path.join(cur_path, "datasets/images/train/")
train_label_path = os.path.join(cur_path, "datasets/labels/train/")

# 验证集路径
val_image_path = os.path.join(cur_path, "datasets/images/val/")
val_label_path = os.path.join(cur_path, "datasets/labels/val/")

# 测试集路径
test_image_path = os.path.join(cur_path, "datasets/images/test/")
test_label_path = os.path.join(cur_path, "datasets/labels/test/")

# 训练集目录
list_train = os.path.join(cur_path, "datasets/train.txt")
list_val = os.path.join(cur_path, "datasets/val.txt")
list_test = os.path.join(cur_path, "datasets/test.txt")

def del_file(path):
    for i in os.listdir(path):
        file_data = path + "\\" + i
        os.remove(file_data)

def mkdir():
    if not os.path.exists(train_image_path):
        os.makedirs(train_image_path)
    else:
        del_file(train_image_path)
    if not os.path.exists(train_label_path):
        os.makedirs(train_label_path)
    else:
        del_file(train_label_path)

    if not os.path.exists(val_image_path):
        os.makedirs(val_image_path)
    else:
        del_file(val_image_path)
    if not os.path.exists(val_label_path):
        os.makedirs(val_label_path)
    else:
        del_file(val_label_path)

    if not os.path.exists(test_image_path):
        os.makedirs(test_image_path)
    else:
        del_file(test_image_path)
    if not os.path.exists(test_label_path):
        os.makedirs(test_label_path)
    else:
        del_file(test_label_path)

def clearfile():
    if os.path.exists(list_train):
        os.remove(list_train)
    if os.path.exists(list_val):
        os.remove(list_val)
    if os.path.exists(list_test):
        os.remove(list_test)


def main():
    mkdir()
    clearfile()

    file_train = open(list_train, 'w')
    file_val = open(list_val, 'w')
    file_test = open(list_test, 'w')

    total_txt = os.listdir(label_original_path)
    num_txt = len(total_txt)
    list_all_txt = range(num_txt)

    num_train = int(num_txt * train_percent)
    num_val = int(num_txt * val_percent)
    num_test = num_txt - num_train - num_val

    train = random.sample(list_all_txt, num_train)
    # train从list_all_txt取出num_train个元素
    # 所以list_all_txt列表只剩下了这些元素
    val_test = [i for i in list_all_txt if not i in train]
    # 再从val_test取出num_val个元素,val_test剩下的元素就是test
    val = random.sample(val_test, num_val)

    print("训练集:{}, 验证集:{}, 测试集:{}".format(len(train), len(val), len(val_test) - len(val)))
    for i in list_all_txt:
        name = total_txt[i][:-4]

        srcImage = image_original_path + name + '.jpg'
        srcLabel = label_original_path + name + ".txt"

        if i in train:
            dst_train_Image = train_image_path + name + '.jpg'
            dst_train_Label = train_label_path + name + '.txt'
            shutil.copyfile(srcImage, dst_train_Image)
            shutil.copyfile(srcLabel, dst_train_Label)
            file_train.write(dst_train_Image + '\n')
        elif i in val:
            dst_val_Image = val_image_path + name + '.jpg'
            dst_val_Label = val_label_path + name + '.txt'
            shutil.copyfile(srcImage, dst_val_Image)
            shutil.copyfile(srcLabel, dst_val_Label)
            file_val.write(dst_val_Image + '\n')
        else:
            dst_test_Image = test_image_path + name + '.jpg'
            dst_test_Label = test_label_path + name + '.txt'
            shutil.copyfile(srcImage, dst_test_Image)
            shutil.copyfile(srcLabel, dst_test_Label)
            file_test.write(dst_test_Image + '\n')

    file_train.close()
    file_val.close()
    file_test.close()


if __name__ == "__main__":
    main()

5.3、修改数据集配置文件

在ultralytics-main目录下创建一个data.yaml文件

path: ../datasets/images
train: train  # 数据集路径下的train
val: val  # 数据集路径下的val
test: test  # 数据集路径下的test

# 标签个数
nc: 3
# Classes标签名称
names: ['Alligator_crack', 'Longitudinal_crack', 'Transverse_crack']

5.4、执行命令

在ultralytics-main目录下创建一个train.py文件,运行

from ultralytics import YOLO

if __name__ == '__main__':
    model = YOLO("yolo11s-seg.pt")
    model.train(data=r'data.yaml',
                imgsz=640,
                epochs=100,
                batch=16,
                workers=0,
                device='0'
                )

也可以在终端执行下述命令:

yolo segment train data=data.yaml model=yolo11s-seg.pt epochs=200 imgsz=640 batch=16 workers=0 device=0

模型训练结果如下:

5.5、模型预测 

在ultralytics-main目录下创建一个test_pic文件夹,导入测试集图片,在ultralytics-main目录下新建predict.py预测脚本文件,运行后会在 run/segment/predict 文件夹下生成推理图片。

代码如下:

import warnings

warnings.filterwarnings('ignore')
from ultralytics import YOLO

if __name__ == '__main__':
    model = YOLO('runs/segment/train/weights/best.pt')
    model.predict(source='test_pic',
                  imgsz=640,
                  device='0',
                  save=True
                  )

6、获取数据集 

文章底部名片或主页私信获取数据集~

——————————————————————————

更多数据集请查看

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐