• 基于DeepLabV3实践路面、桥梁、基建裂缝裂痕分割


    在我前面的文章中有基于改进的模型开发的裂缝裂痕检测模型,感兴趣的话可以看下:

    《基于yolov5s+bifpn实践隧道裂缝裂痕检测》

    今天主要是趁着有时间基于deeplabv3来实践裂缝裂痕分割。首先来看效果图:

     为了整体直观,这里专门是开发了对应的界面,方便使用的。

    完整项目截图如下所示:

     下表是对整个项目中各个文件的介绍说明:

    文件名称文件说明
    datasets/数据集目录
    modules/模块模块
    results/结果目录
    utils/组件目录
    weights/权重目录
    guiAPP.py系统模块
    inference.py推理模块
    model_structure.png模型结构图
    models.py模型实例化模块
    splitDataset.py数据集构建模块
    train.py模型训练模块
    启动系统.bat双击启动系统bat脚本
    执行.bat双击启动训练bat脚本

    datasets目录如下所示:

     JPEGImages为原始图像数据目录。

    SegmentationClass为mask图像目录。

    modules为网络定义模块目录,如下所示:

     results为结果目录,如下所示:

     设置每个epoch都会存储一次最新的权重文件,方便自己随时使用。

    utils目录主要是存储公共组件模块,如下所示:

     weights用于存储预训练的权重文件,这里的预训练模型来资源公开数据集训练得到。

    model_structure.png是绘制出来的deeplabv3的网络结构图,如下所示:

    inference.py是离线推理模块,核心实现如下所示

    1. def singImgInfer(pic_path="test.jpg", save_path="result.jpg"):
    2. """
    3. 单张图像推理
    4. """
    5. try:
    6. print("Loading Image From: ", pic_path)
    7. image = Image.open(img)
    8. resImg = deeplabv3.detect_image(image)
    9. resImg.save(save_path)
    10. print("Saving Image To: ", save_path)
    11. except Exception as e:
    12. print("Exception: ", e)

    如果想要批处理也可以用下面的:

    1. def batchImgsInfer(picDir="test/", saveDir="result/"):
    2. """
    3. 批量图像推理
    4. """
    5. if not os.path.exists(saveDir):
    6. os.makedirs(saveDir)
    7. pic_list = os.listdir(picDir)
    8. print("pic_list_length: ", len(pic_list))
    9. for one_pic in tqdm(pic_list):
    10. one_path = picDir + one_pic
    11. print("Loading Image From: ", one_path)
    12. one_img = Image.open(one_path)
    13. one_resImg = deeplabv3.detect_image(one_img)
    14. one_resImg.save(saveDir + one_pic)
    15. print("Saving Image To: ", saveDir + one_pic)

    我是在本地cpu模式下运行的推理计算,整体来看速度并不是很快大概在1s左右。

    guiAPP.py模块时开发的界面模块,能够将离线推理过程以可视化的形式展示出来,实例如下:

    启动界面:

     上传图像:

     分割推理:

     因为数据集没有很多,训练的epoch次数也只有100左右,所有有些效果就不是很好,如下所示:

     后期自建数据集获取到更大数据量后可以重新迭代训练,效果也会有所提升。

  • 相关阅读:
    python cv打开USB摄像头报错 CvCapture_python MSMF::initStream Failed to set mediaType
    2023最受推荐的五款项目管理工具
    mmcv常用API介绍
    语言基础篇12——Python有哪些异常,优雅的处理异常
    大模型会毁了初级程序员 —— 对话图灵奖得主 Joseph Sifakis | 新程序员
    MySQL-使用CPP接入到MySQL
    Python综合案例(动态柱状图)
    Java 多线程系列Ⅴ(常见锁策略+CAS+synchronized原理)
    SpringBoot整合Mybatis
    ESP三相SVPWM控制器的simulink仿真
  • 原文地址:https://blog.csdn.net/Together_CZ/article/details/127793153