【图像分类】基于计算机视觉的坑洼道路检测和识别(2个类别)

写在前面:
首先感谢兄弟们的支持,让我有创作的动力,在创作过程我会尽最大能力,保证作品的质量,如果有问题,可以私信我,让我们携手共进,共创辉煌。

路虽远,行则将至;事虽难,做则必成。只要有愚公移山的志气、滴水穿石的毅力,脚踏实地,埋头苦干,积跬步以至千里,就一定能够把宏伟目标变为美好现实。

没有坑洼的数据集如下所示:

有坑洼的数据集如下所示:

1.介绍

坑洼道路检测和识别是一种计算机视觉任务,主要是通过数字图像(通常是地表坑洼图像)识别出存在坑洼的道路。这对于地质勘探、航天科学和自然灾害等领域的研究和应用具有极其重要的意义。例如,它可以帮助在地球轨道上识别坑洼(说实话有点吹牛逼的成分),以及分析和模拟地球表面的形态(太强了,极具科研价值)。

在坑洼道路检测任务中,传统的分类算法往往不能取得很好的效果,因为坑洼图像的特征往往是非常复杂和多变的。然而,近年来随着深度学习技术的飞速发展,为坑洼道路检测提供了新的解决方案。

深度学习具有很强的特征提取和表示能力,可以从图像中自动提取出最重要的特征。在坑洼图像分类任务中,利用深度学习可以提取到坑洼的轮廓、纹理和形态等特征,并将其转换为更容易分类的表示形式。同时,还可以通过迁移学习和知识蒸馏等技术进一步提升分类性能。例如,一些研究者使用基于深度学习的方法对道路图像进行分类,将其分为正常、坑洼两类:另外,一些研究者还使用基于迁移学习的方法,从通用的预训练模型中学习坑洼图像的特征,并利用这些特征来分类坑洼图像。

2.数据

本次介绍的数据总共2个类别,分别是坑洼Pothole、正常Normal

坑洼Pothole类别:630张

正常Normal类别:266张

数据集存放如下:

【图像分类】基于计算机视觉的坑洼道路检测和识别(2个类别)_第1张图片

normal文件夹存放正常的图片,没有坑洼的图片
pothole文件夹存放有坑洼的图片

该数据集可用于图像分类任务,注意是图像分类任务,图像分类任务,主要的事情说三遍!!!

通常需要将数据划分为训练集和测试集,训练集用于模型训练,测试集用于模型测试。

划分数据集代码的代码如下:

# -*- coding: utf-8 -*-
"""
Created on Mon Feb 20 09:59:24 2023

@author: augustqi
"""


import os
from shutil import copy, rmtree
import random


def mk_file(file_path: str):
    if os.path.exists(file_path):
        # 如果文件夹存在,则先删除原文件夹在重新创建
        rmtree(file_path)
    os.makedirs(file_path)


def main():
    # 保证随机可复现
    random.seed(0)

    # 将数据集中10%的数据划分到验证集中
    split_rate = 0.1

    # 指向你解压后的flower_photos文件夹
    cwd = os.getcwd()
    data_root = os.path.join(cwd, "data")
    origin_flower_path = os.path.join(data_root, "data")
    assert os.path.exists(origin_flower_path), "path '{}' does not exist.".format(origin_flower_path)

    flower_class = [cla for cla in os.listdir(origin_flower_path)
                    if os.path.isdir(os.path.join(origin_flower_path, cla))]

    # 建立保存训练集的文件夹
    train_root = os.path.join(data_root, "train")
    mk_file(train_root)
    for cla in flower_class:
        # 建立每个类别对应的文件夹
        mk_file(os.path.join(train_root, cla))

    # 建立保存验证集的文件夹
    val_root = os.path.join(data_root, "val")
    mk_file(val_root)
    for cla in flower_class:
        # 建立每个类别对应的文件夹
        mk_file(os.path.join(val_root, cla))

    for cla in flower_class:
        cla_path = os.path.join(origin_flower_path, cla)
        images = os.listdir(cla_path)
        num = len(images)
        # 随机采样验证集的索引
        eval_index = random.sample(images, k=int(num*split_rate))
        for index, image in enumerate(images):
            if image in eval_index:
                # 将分配至验证集中的文件复制到相应目录
                image_path = os.path.join(cla_path, image)
                new_path = os.path.join(val_root, cla)
                copy(image_path, new_path)
            else:
                # 将分配至训练集中的文件复制到相应目录
                image_path = os.path.join(cla_path, image)
                new_path = os.path.join(train_root, cla)
                copy(image_path, new_path)
            print("\r[{}] processing [{}/{}]".format(cla, index+1, num), end="")  # processing bar
        print()

    print("processing done!")


if __name__ == '__main__':
    main()

3.总结

坑洼检测是一种通过技术手段对路面进行检查和测量,以确定是否存在坑洼、不平整等缺陷的过程。这些缺陷可能会对车辆行驶的安全性和舒适性产生影响,因此及时进行检测和修复非常重要。坑洼检测通常采用激光扫描仪、高清相机等设备,通过对路面图像的处理和分析,识别出路面上的坑洼位置、尺寸和严重程度等信息。这些信息可以为道路维护部门提供决策支持,帮助他们制定更加精准的维护计划,提高道路质量和运输效率。

我们可以基于整理好的数据集,使用图像分类算法进行图像分类任务,常用的图像分类算法包括resnet、vgg、lenet5、alexnet等等。本次介绍的数据集是用于图像分类任务的数据集,训练一个图像分类模型,用于检测输入图片是否是坑洼图片;当然,我们也可以通过标注,训练目标检测算法(yolov3、yolov4、yolov5、yolov6、yolov7、yolov8)或者图像分割算法(unet、unet++、yolact),用于框出坑洼的位置或者坑洼的像素点,我们需要根据具体的任务进行算法选择。

4. 数据集获取

数据集,获取方式请看下面。

【图像分类】基于计算机视觉的坑洼道路检测和识别(2个类别)_第2张图片

本数据集请扫码关注下方的公众号并添加公众号小编vx,另提供远程搭建环境、手把手指导、GPU训练模型服务,价格可谈,详细信息请扫码联系小助理。
在这里插入图片描述

你可能感兴趣的:(深度学习,分类,计算机视觉,数据挖掘)