Automatic Pixel-Level Crack Detection on Dam Surface Using Deep Convolutional Network 论文笔记

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Automatic Pixel-Level Crack Detection on Dam Surface Using Deep Convolutional Network 论文笔记相关的知识,希望对你有一定的参考价值。

参考技术A Automatic Pixel-Level Crack Detection on Dam Surface Using Deep Convolutional Network 论文笔记

论文:Automatic Pixel-Level Crack Detection on Dam Surface Using Deep Convolutional Network

Received: 2020.01.17

大多数坝面裂缝检测只能实现裂缝分类及粗略的定位。像素级语义分割检测可以提供更加精确直观的检测结果。作者提出一种基于深度卷积网络的坝面裂缝检测算法。首先使用无人机进行数据采集,然后对采集到的图像进行预处理(包括裁剪、手动标注),最后对设计好的CDDS 网络结构进行训练、验证和测试。

与ResNet152-based SegNet U-Net FCN 进行了比较。 

大坝是水电站的重要水利建筑物。大坝的安全运行对于水电站有着重要的意义。由于结构变形、地震、水流引起的裂缝对大坝坝体产生严重的影响并威胁到水电站的安全运行。因此,对大坝结构的定期健康评估,特别是对大坝裂缝的检测任务变得尤为重要。

根据大坝裂缝的结构特征以及裂缝强度,人们可以对大坝的结构健康进行评估和监测。传统的大坝裂缝的巡检任务通常基于人工进行检测,但是效率低下、耗时费力,浪费了大量的人工成本,因此对裂缝的自动高效检测是非常必要的。

基于计算机视觉的裂缝检测算法得到了广泛的研究。这些方法大多采用传统的图像处理技术和机器学习方法,以识别出一些简单的结构损伤。

这些方法利用手工提取的特征从图像中提取特征,然后评估提取的特征是否表示缺陷。然而,上述方法的结果不可避免地受到主观因素的影响

卷积神经网络(CNN)在图像分类和识别领域取得很大的进步,基于CNN的裂缝检测算法也展示出更优异的表现。

大坝裂缝的特点:

修补痕迹、噪声大、背景纹理复杂、非结构化的、分布不均匀、裂缝位置随机、背景模糊等缺点

提出了一种像素级的大坝表面裂缝检测方法,利用深卷积网络进行特征提取。利用浅卷积层的定位特征和深卷积层的抽象特征,进行 多尺度卷积级联融合和多维损失值计算 ,实现裂纹缺陷像素级分割,并以高精度、高效率等优点解决了坝面明显裂缝检测问题,消除了可能存在的安全隐患,确保了坝面安全。实验结果表明,该方法对大坝表面像素级裂缝的检测是最优的。

语义分割

PSPNet [42],ICNet [43], Deeplabv3[44],UNet [45] and SegNet [46]

语义分割网络通常分为编码网络和解码网络。

编码网络:

卷积层:用于提取输入图像的特征

池化层:减小feature map的规模,减轻计算负担。

解码网络:

反卷积层(反褶积层):上采样还原feature map大小与输入图像相同,并输出预测结果。

编解码网络结构高度对称:同时利用稀疏feature map和稠密feature map。

为了融合sparse 和 dense feature ,采用跳跃模块以连接编解码网络。

编码网络:

    15 卷积层:3*3  步长1

    4 池化层: 2*2 步长2

解码网络:

    15 反卷积层 1*1

    4池化层

    采用dropout和BN防止过拟合。

    Skip branch

    4个,1*1卷积和反卷积

    每个branch计算 branch loss,4个branch loss级联为总损失的一部分。

    Skip branch 的输入输出图像大小不变。

卷积核的通道数必须等于输入张量的通道数。

降采样 取矩阵最大值 卷积核大小 2*2 步长为2。

反褶积也叫做转置卷积

通过上采样还原feature map与输入图像大小相同。

上采样方法:反褶积法、 插值法

反褶积法:对张量进行zero-padding填充最外层,再用反褶积核进行反褶积,修剪第一行和最后一行。

1000副5472*3648图像

使用LEAR软件手动标记。

得到504张数据集,404用于训练,50用于验证,50用于测试。

在Linux系统上使用TensorFlow构建的

在配置了8 GB GPU的HP工作站上执行培训、验证和测试

利用Anaconda建立了CDDS网络的虚拟python环境

评价指标:

Precision精度表示在所有预测破裂的样本中,样本的基本真实性也被破解的概率。

Recall召回表明在所有标记为开裂的样本中,样本被预测为开裂的概率。当正负样本数量存在较大差距时,仅使用精确性或召回率来评估性能是不合理的。TPR表示所有标记为裂纹的样本中被正确预测为裂纹的概率。TNR代表以标签为背景的所有样本中被正确预测为背景的概率.

F-measure考虑到查全率和查准率的综合影响,F-测度是一个综合指标。

IoU是目标检测领域中常用的评价定位精度的方法。IoU表示预测结果与地面真实值的交集与联合的交集的比率。

大坝表面裂缝图像分为背景和裂缝两类。背景像素的数目远大于裂纹像素的数目。通常情况下,我们会同时计算背景arrears和裂缝arrears,然后以两张arrears的平均数作为最终arrears。IoU值是由背景像素决定的,不能准确表达裂纹的定位精度。

使用三种学习速率10^4,10^5,10^6

使用softmax函数计算概率

使用Dice loss计算网络损失。

裂缝骨架提取:快速细化算法

调用OpenCV库,进行计算。

计算裂缝面积及长度宽度。

使用其他裂缝数据集进行补充验证 ,在测试数据集上,提出的CDDS网络的裂纹IOU和F测度分别达到67.41%和80.14%

略。

不需要在 CRA 中加载图像

【中文标题】不需要在 CRA 中加载图像【英文标题】:Requires not loading images in CRA 【发布时间】:2021-04-10 19:21:15 【问题描述】:

我目前正在尝试在 react 中显示列表的元素,但我无法使用 require 加载图像。 我正在使用 CRA 并且没有更改 webpack.config.js。

列表

import img1 from "../../assets/work-in-progress.png";

const projects = [
    
        id: 1,
        image_path: img1,
        title: "t1",
        category: "testing"
    ,
    
        id: 2,
        image_path: require("../../assets/work-in-progress.png"),
        title: "t2",
        category: "testing"
    ,
]

我如何显示图像

<img src= entry.image_path   className="rounded" />

目前,第一张图片显示正确,但第二张图片未加载。

我已经尝试过使用src= "" + entry.image_path 并得到相同的结果。

【问题讨论】:

image_path: img1 这应该可以。请确保您已将图片上传到公共文件夹中。 是的,这行得通。问题出在数组的第二个元素中,图像没有使用“require”加载,而是使用 import 语句加载。 【参考方案1】:

我认为你的路径不正确。它对我有用。这是工作的code

【讨论】:

是的,这也适用于我,问题出在数组的第二个元素上。 我已经编辑了您的沙箱以添加我在本地编写的第二个元素,您可以看到 here 并且奇怪的是它起作用了。我想问题出在某些本地配置中?我正在使用 CRA

以上是关于Automatic Pixel-Level Crack Detection on Dam Surface Using Deep Convolutional Network 论文笔记的主要内容,如果未能解决你的问题,请参考以下文章

什么是 CRA ?

CRA 打字稿皮棉

找不到带有自定义 cra 模板的 package.json

如何将 React-app-rewired 与 Customize-CRA 集成

不需要在 CRA 中加载图像

Storybook 和 AntDesign 组件 - 如何使用 CRA 和 Typescript 进行设置?