Python滑动窗口卷积神经网络CNN对损伤梁桥数据、故宫城墙图像数据分类可视化|附数据代码

在现代土木结构工程领域,结构损伤的准确识别与定位对于保障基础设施的安全性和耐久性具有极为关键的意义。

由Kaizong Ye,Weilong Zhang撰写

传统的人工检查方法,如目视检查以及借助专业设备进行检测,在很长一段时间内占据着主导地位,成为识别和评估砖石历史建筑等土木结构表面损伤的常用手段。然而,这种传统方式存在着诸多局限性。

其成本高昂,需要投入大量的人力、物力和时间资源。在面对一些偏远地区的结构或部件时,由于地理条件限制、交通不便等因素,人工检查往往难以有效实施,导致这些区域的结构健康状况无法及时、准确地被掌握。

随着科技的飞速发展,深度学习技术在图像识别、目标检测等领域取得了令人瞩目的成就,为土木结构损伤检测带来了新的契机。卷积神经网络(CNN)作为深度学习中的重要分支,已在众多领域展现出强大的特征提取和模式识别能力。但现有的基于 CNN 的损伤检测方法大多并非专门针对砖石历史建筑的多种损伤识别而设计,难以满足这类特殊结构的检测需求。

针对我国连续梁桥数量众多且分布广泛,以及现场测试信号容易受到各种干扰的现状,本研究提出了一种创新的方法。通过一个或几个加速度传感器监测信号,依据车桥耦合理论,并借助正弦函数型呼吸裂缝模型来模拟连续梁桥的损伤情况。在此基础上,采用 Tsfresh 特征提取方法与 1D – CNN 模型相结合的方式,有效提升模型的特征提取能力,进而提高 CNN 的计算效率,实现对桥梁损伤的精准识别。


作者


可下载资源


本文分析的数据、代码、报告分享至会员群


同时,在土木结构损伤检测领域的另一个重要研究方向 —— 砖石历史建筑损伤检测方面,本项目利用卷积神经网络(基于 LeNet – 5、AlexNet – 8、ZFNet – 8 和 GoogLeNet (inception v1) – 22)开发了一种专门的损伤识别与定位技术。通过基于区域的卷积神经网络(Faster – RCNN)应用于实时损伤检测,并采用基于滑动窗口的 CNN 方法,能够对完好、裂缝、泛碱和剥落等四类损伤进行准确的识别与定位,准确率高达 94.3%。本研究的数据仅来自中国故宫城墙图像的训练和测试,通过对不同数据集和网络架构的深入研究与实验,为基础设施工程中的人工智能应用提供了有价值的见解和实践经验,有望推动整个土木结构损伤检测技术朝着更加高效、精准和智能化的方向发展。

Tsfresh-CNN损伤梁桥数据分类

针对我国连续梁桥量大面广及现场测试信号易受干扰等问题,根据一个或几个加速度传感器监测信号,基于车桥耦合理论和正弦函数型呼吸裂缝模型模拟连续梁桥的损伤,通过对监测信号的特征提取以达到减少数据维数,降低数据噪声的效果,进而采用卷积神经网络实现桥梁损伤识别。

数据源准备

为准确考虑车辆上桥对桥梁的振动影响,引入车桥耦合振动模型,将车辆简化为1/4车模型与桥梁进行车桥耦,通过正弦函数呼吸裂缝模型模拟桥梁损伤,车辆与桥梁的耦合振动根据车、桥之间位移与作用力的协调关系建立动力学方程求解


自适应网页宽度的 Youku 视频

视频

CNN(卷积神经网络)模型以及R语言实现

探索见解

去bilibili观看

探索更多视频


视频

卷积神经网络CNN肿瘤图像识别

探索见解

去bilibili观看

探索更多视频


视频

Python、R时间卷积神经网络TCN与CNN、RNN预测时间序列实例

探索见解

去bilibili观看

探索更多视频


视频

PCA原理与水果成熟状态数据分析实例:Python中PCA-LDA 与卷积神经网络CNN

探索见解

去bilibili观看

探索更多视频


视频

神经网络正则化技术减少过拟合和R语言CNN卷积神经网络手写数字图像数据MNIST分类

探索见解

去bilibili观看

探索更多视频

 特征转换

Tsfresh特征提取方法与1D-CNN模型结合,可以有效提高模型的特征提取能力,提高CNN计算效率

划分训练集和测试集

在对1D-CNN进行搭建之前需要对Tsfresh算法进行合理设置,每种工况得到70000×3个数据点。为保证每段数据的数据量相等,对其进行合理分割,令单个传感器每段的数据量λ=500,即每段数据含有500×3个数据点,则每种工况一共有140段数据。

建模

考虑到节省计算资源,本文搭建的卷积神经网络加入较少卷积层,经过多次实验比对,在网络中加入4层卷积层,下采样适当地加入用来优化网络架构对于其余超参数的设置,本文将Ts-CNN的网络参数首先根据经验进行初始化,再利用网格搜索法对超参数进行优化。

模型优化

​ ​

基于深度学习的结构损伤检测|附数据代码

本项目利用卷积神经网络(基于 LeNet – 5、AlexNet – 8、ZFNet – 8 和 GoogLeNet(inception v1) – 22)开发了一种用于土木结构的损伤识别与定位技术。同时将基于区域的卷积神经网络(Faster – RCNN)应用于实时损伤检测。
注意:本项目主要是对砖石历史建筑应用微调后的深度学习算法。若您对 CNN 架构或实现更感兴趣,可能此处细节不足。本项目旨在为基础设施工程中的人工智能提供见解。

摘要

目前,人工检查(即目视检查和/或使用专业设备)是识别和评估砖石历史建筑表面损伤的主要方法。然而,该方法成本高昂,有时难以应用于偏远结构或部件。现有的基于卷积神经网络(CNN)的损伤检测方法并非专门针对砖石历史建筑的多种损伤识别而设计。为克服这些局限,本文提出了一种用于砖石历史建筑的 CNN 损伤分类技术的深度架构,采用基于滑动窗口的 CNN 方法来识别和定位四类损伤(完好、裂缝、泛碱和剥落),准确率达 94.3%。这是首次尝试基于 CNN 技术识别历史砖石建筑的多种损伤并取得优异分类结果。数据仅来自中国故宫城墙图像的训练和测试,顺砖图像和丁砖图像的像素分辨率分别为 480×105 和 210×105。两个 CNN(AlexNet 和 GoogLeNet)均在小数据集(2000 张图像用于训练,400 张图像用于验证和测试)和大数据集(20000 张图像用于训练,4000 张图像用于验证和测试)上进行训练。在五张 1860×1260 像素分辨率的新图像上检验训练模型的性能(准确率 94.3%)。

实现

数据集:

您可以使用我们的中国故宫城墙图像数据,也可以创建自己的数据集!只需尽可能多地拍摄您感兴趣研究的对象的照片。您可能还想使用众包技术让其他人帮您收集数据!

训练:

训练环境取决于您的数据集和 CNN。例如,如果您的数据集很大(GB/TB/PB 级),您可能考虑使用分布式工作站而非个人电脑,这同样适用于更深层次的 CNN(ResNet、Inception v – 4 等)。由于 GPU 计算比仅使用 CPU 快得多,您可能还需要 GPU 进行计算。
对于训练数据集的工具,我建议使用 TensorFlow 或 PyTorch。但如果您仅关注应用,Caffe 也可以。如果您选择 Caffe,您只需更改文件中的超参数。 ​

 

    uid = caffe.NCCL.new_uid()

    caffe.init_log()
    caffe.log('Using devices %s' % str(gpus))

    procs = []
    for rank in range(len(gpus)):
        p = Process(target=solve,
                    args=(solver, snapshot, gpus, timing, uid, rank))
        p.daemon = True
        p.start()
        procs.append(p)
    for p in procs:
        p.join()

应用与可视化:

如果您要将深度学习应用于实际工程问题,仅以计算机视觉方式对目标进行分类是不够的。您应该弄清楚如何呈现或处理输出。此外,适用性和可重复性也非常重要。例如,您可能会问自己:成本是多少?效率如何?或者它在实际问题中是否有效? ​

 图示与部分结果

在图 1 中,我们可以清晰地看到砖单元图像分类示意图。它展示了对砖单元图像进行分类的整体框架和流程,为后续基于 CNN 的损伤识别奠定了基础。从图中可以初步了解到图像分类所涉及的各个环节以及它们之间的相互关系,这有助于理解整个损伤检测系统如何对输入的砖单元图像进行预处理和初步分类判断。

图 1:砖单元图像分类示意图 ​

图 2 呈现的是基于 CNN 的砖单元损伤识别与分类示意图。此图详细说明了 CNN 在砖单元损伤识别与分类过程中的架构和工作原理。通过该图,能够直观地认识到 CNN 如何提取砖单元图像的特征,以及如何依据这些特征对不同类型的损伤进行区分和归类。例如,CNN 的不同层可能会对图像中的纹理、颜色、形状等特征进行逐步抽象和分析,最终确定损伤的类别。


MATLAB用CNN-LSTM神经网络的语音情感分类深度学习研究

阅读文章


图 2:基于 CNN 的砖单元损伤识别与分类示意图
图 3 是全连接模式与局部连接模式对比图,包括全连接模式(a)和局部连接模式(b)。 ​


随时关注您喜欢的主题


 parser = ArgumentParser(description=__doc__,
                            formatter_class=ArgumentDefaultsHelpFormatter)

    parser.add_argument('input_net_proto_file',
                        help='Input network prototxt file')
    parser.add_argument('output_image_file',

全连接模式中,每个神经元都与前一层的所有神经元相连,这种连接方式虽然能够充分整合信息,但也会带来大量的参数,容易导致过拟合现象,并且计算复杂度较高。而局部连接模式则只连接局部区域的神经元,它在减少参数数量的同时,能够保留一定的局部特征信息,更适合于图像这类具有局部相关性的数据处理。

在本项目的 CNN 架构设计中,对这两种模式的理解和选择对于优化网络性能、提高损伤检测的准确性有着重要意义。 ​

图 3:全连接模式与局部连接模式对比:(a)全连接模式,(b)局部连接模式

图 3:全连接模式与局部连接模式对比:(a)全连接模式,(b)局部连接模式
图 4 展示了 4 类训练样本,即完好(a)、剥落(b)、裂缝(c)和泛碱(d)用于 CNN 的情况。这些训练样本是模型学习和识别不同损伤类型的基础。从图中可以观察到不同损伤类型在图像上呈现出的不同特征。例如,完好的砖单元图像表面相对平整,无明显瑕疵;剥落的部分可能会有块状缺失;裂缝则呈现出线状的破损;泛碱区域可能会有颜色和纹理的变化。

通过大量这样的训练样本,CNN 能够逐渐学习到不同损伤类型的图像特征模式,从而在实际检测中准确判断损伤类别。 ​

图 4:4 类训练样本:(a)完好,(b)剥落,(c)裂缝,(d)泛碱(用于 CNN)

图 4:4 类训练样本:(a)完好,(b)剥落,©裂缝,(d)泛碱(用于 CNN)
图 5 为 Faster – RCNN 训练样本。Faster – RCNN 是一种用于目标检测的有效算法,其训练样本的特点和质量直接影响到模型对损伤目标的检测效果。从图中可以推测样本的多样性、代表性以及标注信息等方面的情况。例如,样本是否涵盖了不同角度、不同光照条件下的损伤情况,标注是否准确地框定了损伤区域等。这些因素都对 Faster – RCNN 能否准确地在实际场景中检测到损伤并定位有着关键作用。 ​

图 5:Faster – RCNN 训练样本

图 5:Faster - RCNN 训练样本

图 6 给出了使用 AlexNet – 8 训练结果,包括训练损失(a)和验证准确率(b)。训练损失曲线反映了模型在训练过程中预测值与真实值之间的差异程度。随着训练的进行,损失值逐渐降低,说明模型在不断学习和优化,逐渐拟合数据。而验证准确率曲线则展示了模型在验证集上的性能表现。在训练初期,验证准确率可能会有波动,随着训练的深入,准确率逐渐上升并趋于稳定。通过对这两条曲线的分析,可以判断 AlexNet – 8 模型的训练效果,如是否存在过拟合或欠拟合现象,从而调整训练策略,如调整学习率、增加训练数据量等。 ​

图 6:使用 AlexNet - 8 训练结果:(a)训练损失,(b)验证准确率

图 6:使用 AlexNet – 8 训练结果:(a)训练损失,(b)验证准确率
图 7 展示了使用 GoogLeNet – 22 训练结果,同样包含训练损失(a)和验证准确率(b)。与 AlexNet – 8 类似,通过对这些曲线的研究,可以深入了解 GoogLeNet – 22 模型的训练动态。比较两者的曲线,可以分析不同网络架构在本项目损伤检测任务中的优劣。例如,可能发现 GoogLeNet – 22 在处理某些复杂损伤特征时具有更好的表现,而 AlexNet – 8 在计算资源消耗或训练速度上有一定优势,这有助于根据实际需求选择更合适的网络架构。

图 7:使用 GoogLeNet - 22 训练结果:(a)训练损失,(b)验证准确率

图 7:使用 GoogLeNet – 22 训练结果:(a)训练损失,(b)验证准确率
图 8 的滑动窗口策略是本项目中的一个重要技术手段。滑动窗口在图像上逐步移动,对每个窗口内的图像区域进行 CNN 分析,从而实现对整个图像的全面检测。这种策略能够有效地处理不同尺寸和位置的损伤,提高损伤检测的覆盖率和准确性。例如,对于较大尺寸的图像,通过滑动窗口可以避免因一次性处理整个图像而导致的计算资源不足或特征提取不充分的问题。

图 8:滑动窗口策略
最后,图 9 呈现了基于 GoogLeNet – 22 与滑动窗口算法的测试结果。从图中可以直观地看到模型在实际测试中的表现,如对不同损伤类型的检测准确性、是否存在误判或漏判情况等。这些结果是对整个基于深度学习的结构损伤检测系统性能的综合评估,通过对测试结果的详细分析,可以进一步优化模型和算法,提高系统在实际工程应用中的可靠性和有效性。

图 9:基于 GoogLeNet - 22 与滑动窗口算法的测试结果

图 9:基于 GoogLeNet – 22 与滑动窗口算法的测试结果

关于分析师

Yufei Guo

在此对 Yufei Guo 对本文所作的贡献表示诚挚感谢,他在重庆大学完成了结构健康监测专业的硕士学位,专注深度学习领域。擅长 Python、Matlab 仿真、数据清洗、神经网络、数据分析 。 ​


可下载资源

关于作者

Kaizong Ye拓端研究室(TRL)的研究员。在此对他对本文所作的贡献表示诚挚感谢,他在上海财经大学完成了统计学专业的硕士学位,专注人工智能领域。擅长Python.Matlab仿真、视觉处理、神经网络、数据分析。

本文借鉴了作者最近为《R语言数据分析挖掘必知必会 》课堂做的准备。

​非常感谢您阅读本文,如需帮助请联系我们!

 
QQ在线咨询
售前咨询热线
15121130882
售后咨询热线
0571-63341498

关注有关新文章的微信公众号


永远不要错过任何见解。当新文章发表时,我们会通过微信公众号向您推送。

技术干货

最新洞察

This will close in 0 seconds