使用 Python 进行深度学习以进行裂纹检测

article/2024/12/22 9:23:44

使用 Python 进行深度学习以进行裂纹检测

    • 问题陈述
    • 数据集准备
    • 训练模型
    • 结论
    • 参考

问题陈述

虽然新技术已经改变了我们生活的方方面面,在建筑领域似乎牛逼Ø正在努力追赶。目前,建筑物的结构状况仍然主要是人工检查。简单来说,即使现在需要检查结构是否有任何损坏,工程师也会手动检查所有表面并拍下一堆照片,同时记录任何裂缝的位置。然后需要在办公室多花几个小时来整理所有照片和笔记,试图从中做出有意义的报告。显然,这是一个费力、昂贵且主观的过程。**最重要的是,出现了安全问题,因为有些结构的访问限制并且难以到达。**举个例子,金门大桥需要定期检查。换句话说,
在这里插入图片描述

金门大桥 (照片作者 · Pixabay上的免费照片)

幸运的是,如今在出现可访问性问题的情况下,会部署无人机(例如无人机)来拍照,但仍然需要一个人花费数小时和数小时检查拍摄的每张照片是否有损坏迹象。
这就是我们的工作要彻底改变检查过程的地方。人工智能率先,更具体地说,深度学习通过训练我们的机器能够取代人类完成检测结构照片裂缝的繁琐任务。

照片中的裂纹检测分为三个级别:
· 图像被分成补丁,每个补丁被分配一个裂纹或非裂纹标签
· 在任何检测到的裂纹周围绘制一个矩形
· 每个像素被标记为裂纹或非裂纹

在这里插入图片描述

使用图像块分类(左)、边界框回归(中)和像素分割(右)进行裂纹检测(Dais 等人,2021 年)

虽然用于混凝土表面或沥青的深度学习裂缝检测方法已被广泛研究,但关于基于视觉的评估,特别是应用于砖砌体表面的缺陷检测的研究很少。我们试图弥合这一差距。我们工作的重点是在补丁和像素级别检测砖石表面照片上的裂缝。有关我们研究的更多详细信息,请参见我们的开放获取期刊论文[1]。与实施深度学习模型相关的代码、数据和网络可以在GitHub 存储库[2] 上找到。

数据集准备

**训练深度学习模型最重要的部分是数据;**模型的准确性在很大程度上取决于数据的质量和数量。现实世界的表现越好,模型能够准确地处理真实结构的机会就越大。无可争议的是,与混凝土或沥青相比,砖石的表面不那么均匀,而且噪音明显更大。此外,没有可用的砖石表面裂缝照片数据集。为了解决数据不足的问题,在互联网上查找了任何相关照片,同时我拿起相机捕捉了格罗宁根中心的所有裂缝!

对已开发的深度学习方法的一个普遍批评是,它们在单调背景下测试时取得了显着的结果,但在部署到具有复杂背景的图像上时,它们的准确性会严重下降。诸如窗户、门、装饰品、标签、灯、电缆、植被等物体可以被表征为裂缝检测过程的噪声,网络需要学习否定它们以准确检测裂缝。 因此,在拍照时,这些物体也被有意包括在内。
因此,我们从包含复杂背景的砖石结构照片中准备了一个广泛的数据集,现在我们已准备好进行下一步:训练深度学习模型。

在这里插入图片描述

裂纹和无裂纹的结构图像(Dais 等人,2021 年)

在这里插入图片描述

可以在结构的立面上找到的对象(Dais 等人,2021 年)

训练模型

关于补丁级别的裂缝检测,本文检查了在 ImageNet 上预训练的不同最先进的 CNN 将来自砖石表面的图像在补丁级别分类为裂缝或非裂缝的功效。考虑的网络是:VGG16、MobileNet、MobileNetV2、InceptionV3、DenseNet121、DenseNet169、ResNet34 和 ResNet50。最好的结果是通过预训练的 MobileNet 获得的,MobileNet 是一种轻量级网络,旨在在计算受限的平台上运行。特别是,预训练的 MobileNet 的准确率达到 95.3%,而当不考虑预训练时,准确率下降到 89.0%

在这里插入图片描述

使用 MobileNet 获得的混淆矩阵(Dais 等人,2021 年)

对于裂缝分割 U-net 和特征金字塔网络,一种通用的金字塔表示被考虑并与不同的 CNN 相结合,作为网络编码器部分的骨干 [3]。用作主干的 CNN 是以前用于补丁分类的网络。此外,DeepLabv3+、DeepCrack 和基于 VGG16 的 FCN,已在文献中成功用于裂纹分割的网络也进行了广泛的比较研究。

U-net-MobileNet(U-Net 作为基础模型,MobileNet 作为主干)和 FPN-InceptionV3(FPN 作为基础模型,InceptionV3 作为主干)获得了最高的 F1 分数,即 79.6%。没有预训练的 U-net 和 U-net-MobileNet 的原始实现达到了相似的 F1 分数,分别为 75.7% 和 75.4%。因此,使用预训练网络作为主干可以将 F1 分数提高大约 4%。再一次,迁移学习似乎可以解决问题!

**裂缝分割数据集的特点是严重的类别不平衡,即背景类别占据照片的大部分,而裂缝扩展到有限的像素。**由于这种不平衡,如果不采取特殊措施,网络在预测背景类别时往往会变得过于自信,这可能导致裂缝的错误分类和大量的假阴性。为了克服这个问题,研究了不同的损失函数。加权交叉熵损失函数允许网络通过增加正错误成本的权重来专注于正类,其性能优于其余函数。
在这里插入图片描述

原始图像、ground truth 和使用 U-net-MobileNet 的预测(Dais 等人,2021 年)

结论

通过我们的研究,我们展示了建筑行业的现代化,特别是检查过程的现代化是可能的。当然,这些新技术具有无限的可能性,只有通过进一步的研究才能揭示.

目前,我们收集更多数据,进一步开发裂纹检测过程,并将其与 3D 场景重建相结合,以自动记录裂纹并进行度量测量
在这里插入图片描述

使用 3D 场景重建进行裂纹检测(作者提供的图片)

参考

[1] D. Dais, İ.E. Bal, E. Smyrou, V. Sarhosis,使用卷积神经网络和转移学习在砌体表面自动裂缝分类和分割,建筑自动化。125 (2021),第 103606 页。https : //doi.org/10.1016/j.autcon.2021.103606 。
[2] 砌体表面裂纹检测:GitHub Repository https://github.com/dimitrisdais/crack_detection_CNN_masonry
[3] https://github.com/qubvel/segmentation_models
[4]链接https://towardsdatascience.com/deep-learning-with-python-for-crack-detection-eceeeb3e182e


http://chatgpt.dhexx.cn/article/QglUUIfg.shtml

相关文章

Halcon-表面检测-----裂纹检测

对应示例程序: detect_mura_defects_blur.hdev 目标:实例实现LCD上有很多污点干扰下,检测LCD的印痕检测。 思路为:对LCD图像进行拆分,提取RGB三个分量。 对B分量进行处理,将其转换为频域内图像&#xff0…

图像中的裂纹检测

01. 数据集 我们首先需要从互联网上获取包含墙壁裂缝的图像(URL格式)数据。总共包含1428张图像:其中一半是新的且未损坏的墙壁;其余部分显示了各种尺寸和类型的裂缝。 第一步:读取图像,并调整大小。 images = []for url in tqdm.tqdm(df[content]): response = req…

html图片与文字轮播,我是这样写文字轮播的

原标题:我是这样写文字轮播的 作者:一半水一半冰 原文:http://www.cnblogs.com/jingh/p/6377736.html 1写在前面 最近总结下之前的工作,才恍然发现时间的流逝永远是悄无声息的,离开学校那座象牙塔已经也有大半年的时间…

IOS 文本文字下面添加下划线

2019独角兽企业重金招聘Python工程师标准>>> UILabel *infolabel [[UILabel alloc] initWithFrame:CGRectMake(30*RATIO,260*RATIO, self.view.bounds.size.width-60*RATIO, 20*RATIO)];infolabel.text "infoimcba.com";infolabel.textColor [UIColor …

html语言 特效字,用HTML和CSS实现酷炫的文字特效

前言 马上我们就要进入下一个阶段,也就是HTML和CSS实现前端界面的阶段了,想必很多小伙伴都想给自己的页面加点酷炫的特效,今天,我就给大家整理了一些非常酷炫的文字特效来装点你的页面!有些是从网络上找的,…

python抓取图片数字_python 实现识别图片上的数字

Python 3.6 版本 Pytesseract 图像验证码识别 环境: (1) win7 64位 (2) Idea (3) python 3.6 (4) pip install pillow <&nbsp>pip install pytesseract (5) 识别引擎tesseract-ocr 安装 安装tesseract-ocr的识别引擎 第一步:下载安装包 我下载的是64位,根据自…

html改变字母间距,css怎么调整字体间距?

在前端开发的过程中&#xff0c;有时候可能会出现字与字之间比较紧凑&#xff0c;我们可以通过css设置文字间隔让字与字之间的距离大一点&#xff0c;下面我们来看一下如何使用css调整字体间距。 css中解决字与字间隔的方法是使用css样式属性letter-spacing&#xff0c;letter-…

html ul 加点,HTML ul compact 属性 | 菜鸟教程

HTML compact 属性 实例 在无序列表中使用compact属性&#xff1a; CoffeeTeaMilk 尝试一下 浏览器支持 所有主流浏览器都不支持 compact 属性。 定义和用法 HTML5 不支持 compact 属性。 请使用 CSS 替代。 的 compact 属性在 HTML 4.01 已废弃。 compact 属性是一个 boole…

css怎么将文字底下设置颜色,css如何设置文字颜色

css设置文字颜色的方法&#xff1a;1、在DIV标签内使用color颜色样式&#xff0c;代码为【 www.php.cn 】&#xff1b;2、在CSS选择器中使用color颜色样式CSS代码。 本教程操作环境&#xff1a;windows7系统、css3版&#xff0c;DELL G3电脑。 css设置文字颜色的方法&#xff1…

markdown/LaTeX中在字母下方输入圆点的方法

看下面的关联代数的乘法定义, 如果需要在 z z z下面加上一个点, 应该怎么做呢? 下面是一个采用\stackrel命令的方法 {\huge{}_{\stackrel{{}_{{}_{{}_{{}_z}}}}{{}^\cdot}}}\!\leq y⋅ z ⁣ ≤ y {\huge{}_{\stackrel{{}_{{}_{{}_{{}_z}}}}{{}^\cdot}}}\!\leq y ⋅z​​​​​…

html 字前边自动加点,css实现文字越界加点点点显示,并且后面紧跟一个图标

文字越界添加...显比抖朋要插支一圈不者地示 在HTML页面上&#xff0c;会遇到当文字长度超出一定长度的时候&#xff0c;将超出的部分显示为...的情况&#xff0c;这个功能很好实现&#xff0c;很多人都可以直接写出来。 示例代码&#xff1a; .demo { display: block; text-ov…

css文字下方加点

1、border-bottom: 1px dashed #333; 2、 text-emphasis: dot; text-emphasis-position: under; -webkit-text-emphasis: dot; -webkit-text-emphasis-position: under;

css+html 在文字下面加点。

效果 代码&#xff1a; 通过伪类的方式在content里面加点。然后定位在文字的下面。 <head> <style> .wavy { position: relative; } .wavy:before { content: "."; position: absolute; top: 10p…

linux 问题-——退出vi编辑器 wq失效

退出linux的vi编辑器时&#xff0c;先按左上角的esc按键&#xff0c;再输出输入命令 保存不退出w强制保存但不退出w!保存并退出wq强制保存并退出wq&#xff01;不保存退出q不保存并强制退出q! 出现以下问题&#xff1a; esc退出后&#xff0c;不能成功输出上述命令退出。 原因…

vi编辑器 末尾添加_vi编辑器操作指令分享

vi编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器,这里只是简单地介绍一下它的用法和一小部分指令。由于对Unix及Linux系统的任何版本,vi编辑器是完全相同的,因此您可以在其他任何介绍vi的地方进一步了解它。Vi也是Linux中最基本的文本编…

vi编辑器

目录 一、vim编辑器概念 1、为什么用vim编辑器&#xff1f; 2、vim的格式 二、vim的模式 1、命令模式 1.1退出vim快捷键 1.2光标跳转 1.3常用操作命令 2、输入模式 3、末行模式 一、vim编辑器概念 1、为什么用vim编辑器&#xff1f; Linux 系统中“一切皆文件”&…

VI编辑器小结

文章目录 一、vi编辑器的简要介绍二、vi编辑器的工作模式三、vi编辑器的使用方法 工作中发现vi编辑器用处很大&#xff0c;现总结一部分 一、vi编辑器的简要介绍 1、vi编辑器通常被简称为vi&#xff0c;它是Linux和Unix系统上最基本的文本编辑器&#xff0c;类似于Windows 系统…

linux学习之vi编辑器

一、vi编辑器功能 打开、新建、保存文件光标移动文本编辑&#xff08;多/单行/列&#xff09;复制、粘贴、删除查找、替换 二、配置vi编辑器 输入&#xff1b; cd /etc/vim cp vimrc ~/.vimrc cd ~ gedit .vimrc使用notepad打开本地文件 将内容复制到在虚拟机的.vimrc文…

vi编辑器的基本使用

目录 一、vi的基本概念 1.1 命令行模式&#xff08;command mode&#xff09; 1.2 插入模式&#xff08;Insert mode&#xff09; 1.3 底行模式&#xff08;last line mode&#xff09; 二、vi的基本操作 2.1 进入vi&#xff08;重要&#xff09; 2.2 切换至插入模式&am…

如何退出Vi或Vim编辑器

The vi editor is confusing if you’re not used to it. It takes a secret handshake to escape this application if you’ve stumbled into it. Here’s how to quit vi or vim on Linux, macOS, or any other Unix-like system. 如果您不习惯使用vi编辑器,则会感到困惑。…