道路坑洞分割数据集/道路裂纹分割数据集

1.道路坑洞,道路裂纹分割数据集,包含5790张坑洞分割图像数据(默认分割标注png图片,850MB)2.10000余张道路裂纹图像数据(默认分割标注png图片,3.7GB)3。道路坑洞,道路

道路坑洞与裂纹检测及分割数据集

数据集描述

该数据集是一个专门用于道路维护和安全监控的数据集,旨在帮助研究人员和开发者训练和评估基于深度学习的道路坑洞和裂纹的检测及分割模型。数据集分为三个部分,涵盖了道路坑洞和裂纹的不同类型和场景,提供了高质量的图像和详细的标注信息。

数据1:道路坑洞分割数据集

数据规模
  • 总样本数量:5,790张坑洞分割图像
  • 数据量:约850MB
  • 标注格式:默认分割标注PNG图片
  • 目标类别
    • 道路坑洞
图像特性
  • 高分辨率影像:图像为高分辨率,确保细节清晰。
  • 像素级标注:每张图像都有对应的像素级分割掩码,适用于语义分割任务。
  • 多样化场景:覆盖了不同类型的道路和不同的光照条件下的坑洞情况。
  • 高质量标注:提供详细的像素级掩码,支持直接用于训练分割模型。
应用场景
  • 道路维护:通过自动检测和分割道路坑洞,辅助道路维护部门及时修复,提高道路安全性。
  • 智能交通系统:集成到智能交通系统中,实时监测道路状况,提供预警信息。
  • 科研分析:用于研究语义分割算法在道路维护中的应用,特别是在不同光照和背景条件下的鲁棒性。

数据2:道路裂纹分割数据集

数据规模
  • 总样本数量:10,000余张裂纹分割图像
  • 数据量:约3.7GB
  • 标注格式:默认分割标注PNG图片
  • 目标类别
    • 道路裂纹
图像特性

  • 高分辨率影像:图像为高分辨率,确保细节清晰。
  • 像素级标注:每张图像都有对应的像素级分割掩码,适用于语义分割任务。
  • 多样化场景:覆盖了不同类型的道路和不同的光照条件下的裂纹情况。
  • 高质量标注:提供详细的像素级掩码,支持直接用于训练分割模型。
应用场景
  • 道路维护:通过自动检测和分割道路裂纹,辅助道路维护部门及时修复,提高道路安全性。
  • 智能交通系统:集成到智能交通系统中,实时监测道路状况,提供预警信息。
  • 科研分析:用于研究语义分割算法在道路维护中的应用,特别是在不同光照和背景条件下的鲁棒性。

数据3:道路坑洞与裂纹检测数据集

数据规模
  • 总样本数量:38,000余张图像
  • 数据量:约13GB
  • 标注格式:默认VOC格式XML标注
  • 目标类别
    • 道路坑洞
    • 道路裂纹
图像特性
  • 高分辨率影像:图像为高分辨率,确保细节清晰。
  • 边界框标注:每张图像都有对应的边界框标注,适用于目标检测任务。
  • 多样化场景:覆盖了不同类型的道路和不同的光照条件下的坑洞和裂纹情况。
  • 高质量标注:提供详细的边界框和类别标签,支持PASCAL VOC格式。
应用场景
  • 道路维护:通过自动检测道路坑洞和裂纹,辅助道路维护部门及时修复,提高道路安全性。
  • 智能交通系统:集成到智能交通系统中,实时监测道路状况,提供预警信息。
  • 科研分析:用于研究目标检测算法在道路维护中的应用,特别是在不同光照和背景条件下的鲁棒性。

数据集结构

典型的数据集目录结构如下:

 

深色版本

1road_defects_dataset/
2├── road_potholes_segmentation/
3│   ├── images/
4│   │   ├── img_00001.jpg
5│   │   ├── img_00002.jpg
6│   │   └── ...
7│   ├── masks/
8│   │   ├── img_00001.png
9│   │   ├── img_00002.png
10│   │   └── ...
11├── road_cracks_segmentation/
12│   ├── images/
13│   │   ├── img_00001.jpg
14│   │   ├── img_00002.jpg
15│   │   └── ...
16│   ├── masks/
17│   │   ├── img_00001.png
18│   │   ├── img_00002.png
19│   │   └── ...
20└── road_defects_detection/
21    ├── images/
22    │   ├── img_00001.jpg
23    │   ├── img_00002.jpg
24    │   └── ...
25    ├── annotations/
26    │   ├── img_00001.xml
27    │   ├── img_00002.xml
28    │   └── ...
29    └── README.md  # 数据集说明文件

示例代码

以下是一个使用Python和相关库(如OpenCV、PIL等)来加载和展示数据集的简单示例代码:

 

python

深色版本

1import os
2import cv2
3import numpy as np
4from PIL import Image
5import xml.etree.ElementTree as ET
6
7# 数据集路径
8dataset_path = 'path/to/road_defects_dataset/'
9
10# 加载图像和分割掩码 (分割数据集)
11def load_image_and_mask(image_path, mask_path):
12    # 读取图像
13    image = Image.open(image_path).convert('RGB')
14    
15    # 读取分割掩码
16    mask = Image.open(mask_path).convert('L')  # 掩码通常是灰度图像
17    
18    return image, mask
19
20# 展示图像和分割掩码
21def show_image_with_mask(image, mask):
22    img = np.array(image)
23    mask_array = np.array(mask)
24    
25    # 将掩码转换为彩色图层
26    colored_mask = np.zeros_like(img)
27    colored_mask[mask_array > 0] = [0, 255, 0]
28    
29    # 叠加掩码到原图
30    img = cv2.addWeighted(img, 1, colored_mask, 0.5, 0)
31    
32    cv2.imshow('Image with Mask', img)
33    cv2.waitKey(0)
34    cv2.destroyAllWindows()
35
36# 加载图像和边界框标注 (检测数据集)
37def load_image_and_boxes(image_path, annotation_path):
38    # 读取图像
39    image = Image.open(image_path).convert('RGB')
40    
41    # 解析VOC标注文件
42    tree = ET.parse(annotation_path)
43    root = tree.getroot()
44    boxes = []
45    for obj in root.findall('object'):
46        class_name = obj.find('name').text
47        bbox = obj.find('bndbox')
48        xmin = int(bbox.find('xmin').text)
49        ymin = int(bbox.find('ymin').text)
50        xmax = int(bbox.find('xmax').text)
51        ymax = int(bbox.find('ymax').text)
52        boxes.append([class_name, xmin, ymin, xmax, ymax])
53    return image, boxes
54
55# 展示图像和边界框
56def show_image_with_boxes(image, boxes):
57    img = np.array(image)
58    for box in boxes:
59        class_name, xmin, ymin, xmax, ymax = box
60        cv2.rectangle(img, (xmin, ymin), (xmax, ymax), (0, 255, 0), 2)
61        label = f'{class_name}'
62        cv2.putText(img, label, (xmin, ymin - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 2)
63    
64    cv2.imshow('Image with Boxes', img)
65    cv2.waitKey(0)
66    cv2.destroyAllWindows()
67
68# 主函数
69if __name__ == "__main__":
70    subset = 'road_potholes_segmentation'  # 可以选择 'road_cracks_segmentation' 或 'road_defects_detection'
71    
72    if subset in ['road_potholes_segmentation', 'road_cracks_segmentation']:
73        images_dir = os.path.join(dataset_path, subset, 'images')
74        masks_dir = os.path.join(dataset_path, subset, 'masks')
75        
76        # 获取图像列表
77        image_files = [f for f in os.listdir(images_dir) if f.endswith('.jpg')]
78        
79        # 随机选择一张图像
80        selected_image = np.random.choice(image_files)
81        image_path = os.path.join(images_dir, selected_image)
82        mask_path = os.path.join(masks_dir, selected_image.replace('.jpg', '.png'))
83        
84        # 加载图像和掩码
85        image, mask = load_image_and_mask(image_path, mask_path)
86        
87        # 展示带有掩码的图像
88        show_image_with_mask(image, mask)
89    elif subset == 'road_defects_detection':
90        images_dir = os.path.join(dataset_path, subset, 'images')
91        annotations_dir = os.path.join(dataset_path, subset, 'annotations')
92        
93        # 获取图像列表
94        image_files = [f for f in os.listdir(images_dir) if f.endswith('.jpg')]
95        
96        # 随机选择一张图像
97        selected_image = np.random.choice(image_files)
98        image_path = os.path.join(images_dir, selected_image)
99        annotation_path = os.path.join(annotations_dir, selected_image.replace('.jpg', '.xml'))
100        
101        # 加载图像和边界框
102        image, boxes = load_image_and_boxes(image_path, annotation_path)
103        
104        # 展示带有边界框的图像
105        show_image_with_boxes(image, boxes)
106    else:
107        raise ValueError("Invalid subset. Choose 'road_potholes_segmentation', 'road_cracks_segmentation', or 'road_defects_detection'.")

这段代码展示了如何加载图像和其对应的分割掩码或边界框标注文件,并在图像上绘制分割掩码或边界框。您可以根据实际需求进一步扩展和修改这段代码,以适应您的具体应用场景。

示例代码:使用预训练模型进行推理

以下是使用预训练模型进行推理的示例代码。这里我们假设您使用的是基于U-Net的模型进行分割任务,以及基于YOLOv5的模型进行检测任务。

分割任务 (U-Net)
 

python

深色版本

1import torch
2import torchvision
3import segmentation_models_pytorch as smp
4import cv2
5import numpy as np
6from PIL import Image
7
8# 数据集路径
9dataset_path = 'path/to/road_defects_dataset/'
10
11# 加载预训练模型
12model = smp.Unet(
13    encoder_name='resnet34',
14    encoder_weights='imagenet',
15    in_channels=3,
16    classes=2  # 背景 + 坑洞/裂纹
17)
18weights_path = 'path/to/pretrained/unet_weights.pth'  # 替换成实际的预训练模型路径
19model.load_state_dict(torch.load(weights_path))
20model.eval()
21
22# 主函数
23if __name__ == "__main__":
24    subset = 'road_potholes_segmentation'  # 可以选择 'road_cracks_segmentation'
25    images_dir = os.path.join(dataset_path, subset, 'images')
26    
27    # 获取图像列表
28    image_files = [f for f in os.listdir(images_dir) if f.endswith('.jpg')]
29    
30    # 随机选择一张图像
31    selected_image = np.random.choice(image_files)
32    image_path = os.path.join(images_dir, selected_image)
33    
34    # 读取并预处理图像
35    image = Image.open(image_path).convert('RGB')
36    transform = torchvision.transforms.Compose([
37        torchvision.transforms.Resize((512, 512)),
38        torchvision.transforms.ToTensor(),
39        torchvision.transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])
40    ])
41    image_tensor = transform(image).unsqueeze(0)
42    
43    # 使用预训练模型进行推理
44    with torch.no_grad():
45        predictions = model(image_tensor)
46    
47    # 处理预测结果
48    pred_mask = predictions.squeeze().cpu().numpy()
49    pred_mask = (pred_mask > 0.5).astype(np.uint8)  # 二值化掩码
50    
51    # 在图像上绘制掩码
52    img = np.array(image)
53    colored_mask = np.zeros_like(img)
54    colored_mask[pred_mask == 1] = [0, 255, 0]
55    img = cv2.addWeighted(img, 1, colored_mask, 0.5, 0)
56    
57    # 显示结果
58    cv2.imshow('Image with Mask', img)
59    cv2.waitKey(0)
60    cv2.destroyAllWindows()
检测任务 (YOLOv5)
 

python

深色版本

1import torch
2import cv2
3import numpy as np
4from PIL import Image
5import yolov5  # 请确保已安装yolov5库
6
7# 数据集路径
8dataset_path = 'path/to/road_defects_dataset/'
9
10# 加载预训练模型
11model = yolov5.load('path/to/pretrained/yolov5_weights.pt')  # 替换成实际的预训练模型路径
12model.eval()
13
14# 主函数
15if __name__ == "__main__":
16    subset = 'road_defects_detection'
17    images_dir = os.path.join(dataset_path, subset, 'images')
18    
19    # 获取图像列表
20    image_files = [f for f in os.listdir(images_dir) if f.endswith('.jpg')]
21    
22    # 随机选择一张图像
23    selected_image = np.random.choice(image_files)
24    image_path = os.path.join(images_dir, selected_image)
25    
26    # 读取并预处理图像
27    image = Image.open(image_path).convert('RGB')
28    
29    # 使用预训练模型进行推理
30    results = model(image)
31    
32    # 处理预测结果
33    boxes = results.xyxy[0].cpu().numpy()
34    
35    # 在图像上绘制边界框
36    img = np.array(image)
37    for box in boxes:
38        xmin, ymin, xmax, ymax, conf, class_id = box
39        class_name = results.names[int(class_id)]
40        label = f'{class_name} {conf:.2f}'
41        cv2.rectangle(img, (int(xmin), int(ymin)), (int(xmax), int(ymax)), (0, 255, 0), 2)
42        cv2.putText(img, label, (int(xmin), int(ymin) - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 2)
43    
44    # 显示结果
45    cv2.imshow('Image with Boxes', img)
46    cv2.waitKey(0)
47    cv2.destroyAllWindows()

这些代码展示了如何使用预训练的U-Net模型进行分割任务和预训练的YOLOv5模型进行检测任务,并显示和保存推理结果。您可以根据实际需求进一步扩展和修改这段代码,以适应您的具体应用场景。如果您需要使用其他模型进行更高级的功能,如模型微调或增量训练,可以参考相应模型的官方文档来进行相应的配置和操作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/145513.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

华为昇腾服务器+Atlas300IPro*2 部署Dify+MindIE+Embedding+Rerank实现Qwen2.5-7B全国产化的大模型推理平台

文章目录 一、概要二、平台介绍和相关链接三、MindIE、Embedding、Rerank接口测试四、Dify安装和部署五、测试 一、概要 记录基于华为昇腾推理服务器Atlas300IPro两卡基于MindIE大模型推理引擎和Embedding、Rerank部署dify大模型应用平台。(LangChain-ChatChat和Ne…

安克创新25届校招CATA北森测评:笔试攻略、真题题库、高分技巧

安克创新自适应能力CATA测评是该公司用于评估候选人认知能力的计算机自适应测评系统。该测评系统由北森题库提供支持,是国内唯一被国际计算机自适应测验协会(IACAT)收录的产品。测评主要评估以下几个维度: 言语能力:测试理解言语信息并基于这…

QFramework v1.0 使用指南 更新篇:20240918. 新增 BindableList

20240918. 新增 BindableList BindableProperty 很好用,但是不支持 List 等集合。 而 Bindable List 功能群友呼吁了很久了。 应群友要求,笔者实现了 Bindable List。 基本使用方式如下: using System; using UnityEngine; using UnityEngine.UI;na…

科技打造智享出行:深蓝L07抢先试驾

在深秋九月的金风送爽中,在深蓝L07即将正式发布之际,趣味科技来到山城重庆参加了深蓝L07的全国媒体试驾活动,亲身体验了这款科技智享中型轿车。 而深蓝L07在本次试驾中的表现,也让趣味科技深刻感受到了“智享科技美学、智享科技座…

秒懂Linux之共享内存

目录 共享内存概念 模拟实现共享内存 创建key阶段 ​编辑创建共享内存阶段 删除共享内存阶段 查看共享内存属性阶段 挂接共享内存到进程阶段 取消共享内存与进程挂接阶段 进程通信阶段 添加管道改进版 共享内存函数 shmget函数 shmat函数 shmdt函数 shmctl函数 共享内存概念 共…

Redis中Hash(哈希)类型的基本操作

文章目录 一、 哈希简介二、常用命令hsethgethexistshdelhkeyshvalshgetallhmgethlenhsetnxhincrbyhincrbyfloathstrlen 三、命令小结四、哈希内部编码方式五、典型应用场景六、 字符串,序列化,哈希对比 一、 哈希简介 几乎所有的主流编程语言都提供了哈…

一文带你掌握 tmux -- 高效的终端复用工具

一、什么是tmux? tmux 是一款开源的终端复用器,允许用户在一个终端窗口中访问多个终端会话,同时提供了会话管理功能,使得用户可以在同一个窗口中创建、访问和控制多个会话。它对于需要同时运行多个命令行程序的用户来说非常有用&…

自动化立体仓库几种典型的解决方案

导语 大家好,我是社长,老K。专注分享智能制造和智能仓储物流等内容。 新书《智能物流系统构成与技术实践》 完整版文件和更多学习资料,请球友到 知识星球【智能仓储物流技术研习社】 自行下载。 文件《自动化立体仓库几种典型的解决方案》的核…

浅谈“流量回放”

一、流量回放定义 “流量回放”通常指的是将之前记录的网络请求和响应数据重新发送到系统中,以模拟真实用户的操作。这种技术主要用于测试和调试目的,帮助开发人员和测试人员更好地理解系统在特定条件下的行为。 二、流量回放的技术原理: 数…

3、无线通信系统的组成

通常把实现信息传输的系统称为通信系统,下图表示一个通信系统的基本组成。在通信系统中,一般要进行两种变换与反变换。在发送端,第一个变换是输入变换器,它把要传输的信号变为电信号,该信号一般是低频的,而…

YOLOv5白皮书-第Y1周:调用官方权重进行检测

>- **🍨 本文为[🔗365天深度学习训练营](小团体~第八波) 中的学习记录博客** >- **🍖 原作者:[K同学啊](K同学啊-CSDN博客)** 一、前言 拖了好久,终于要开始目标检测系列了。自己想过好几次&#xf…

python中ocr图片文字识别样例(一)

一、使用easyocr安装依赖 pip install easyocr pip install opencv-python-headless # 处理图像二、具体实现,此处有个缺陷,大家可以尝试解决下,识别的文字打印结果没问题,但是图片识别出现乱码: 2.1 具体识别的图片…

创新驱动,技术引领:2025年广州见证汽车电子技术新高度

汽车行业的创新浪潮正汹涌澎湃,一场引领未来出行的科技盛宴即将拉开帷幕! AUTO TECH 2025 第十二届广州国际汽车电子技术展览会将于 2025 年 11 月 20日至 22 日在广州保利世贸博览馆(PWTC Expo)隆重举行。 作为亚洲地区领先的汽…

AI助力低代码平台:从智能化到高效交付的全新变革

引言:技术融合的新时代 随着数字化转型的深入推进,企业对软件开发的需求迅速增长。然而,传统开发模式的高成本、长周期,以及对专业技术人才的依赖,正逐渐成为瓶颈。与此同时,低代码平台的崛起为企业提供了一…

传输大咖44 | 云计算企业大数据迁移如何更安全高效?

在云计算时代,数据已成为企业最宝贵的资产之一。对于依赖云服务的企业和组织来说,大数据迁移是实现业务扩展和优化的关键步骤。然而,这一过程并非没有挑战。传统的文件传输方式在安全性、稳定性和速度上往往无法满足云计算企业的需求。本文将…

Shire 智能体市场:IDE 一键安装多智能体,协同打造集体智慧 Copilot

太长不看版:在新版本(0.8)的 Shire 中,你可以通过 Shire 智能体市场,一键下载和安装多个智能体,并直接在你的当前项目中使用。与此同时,你还可以 将你的 Shire 代码段或者智能体上传到 Shire 智…

智慧火灾应急救援航拍检测数据集(无人机视角)

智慧火灾应急救援。 无人机,直升机等航拍视角下火灾应急救援检测数据集,数据分别标注了火,人,车辆这三个要素内容,29810张高清航拍影像,共31GB,适合森林防火,应急救援等方向的学术研…

GRU(门控循环单元)的原理与代码实现

1.GRU的原理 1.1重置门和更新门 1.2候选隐藏状态 1.3隐状态 2. GRU的代码实现 #导包 import torch from torch import nn import dltools#加载数据 batch_size, num_steps 32, 35 train_iter, vocab dltools.load_data_time_machine(batch_size, num_steps)#封装函数&…

免费在线压缩pdf 压缩pdf在线免费 推荐简单好用

压缩pdf在线免费?在日常生活和工作学习中,处理PDF文件是常见任务。但有时PDF文件体积较大,给传输、存储和分享带来不便。因此,学习PDF文件压缩技巧十分必要。压缩PDF文件是指通过技术手段减小文件占用的存储空间,同时尽…

【TabBar嵌套Navigation案例-JSON的简单使用 Objective-C语言】

一、JSON的简单使用 1.我们先来看一下示例程序里边,产品推荐页面, 在我们这个产品推荐页面里面, 它是一个CollectionViewController,注册的是一个xib的一个类型,xib显示这个cell,叫做item,然后,这个邮箱大师啊,包括这个图标,以及这些东西,都是从哪儿来的呢,都是从…