• 基于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左右,所有有些效果就不是很好,如下所示:

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

  • 相关阅读:
    【问题解决】Maven密码加密
    web概述19
    深入Vue原理_全面剖析发布订阅模式
    RK3288 Android11 mini-pcie接口 4G模组EC200A适配(含自适应功能)
    【推荐】10款最好用的下载工具
    编译原理(gcc,makefile)
    win10 Tesseract-ORC安装教程以及使用案例(pdf拆分)
    C#中DataAdapter对象
    CVPR2022 | 无需对齐就能胜任大运动超分的内存增强非局部注意方法
    2022年6月英语六级作文范文
  • 原文地址:https://blog.csdn.net/Together_CZ/article/details/127793153