Python基于滑动窗口CNN损伤梁桥数据、故宫城墙图像数据分类可视化|数据分享

全文链接:https://tecdat.cn/?p=38442

分析师:Yufei Guo

在现代土木结构工程领域,结构损伤的准确识别与定位对于保障基础设施的安全性和耐久性具有极为关键的意义。传统的人工检查方法,如目视检查以及借助专业设备进行检测,在很长一段时间内占据着主导地位,成为识别和评估砖石历史建筑等土木结构表面损伤的常用手段**(** 点击文末"阅读原文"获取完整代码数据******** )。

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

随着科技的飞速发展,深度学习技术在图像识别、目标检测等领域取得了令人瞩目的成就,为土木结构损伤检测带来了新的契机。卷积神经网络(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车模型与桥梁进行车桥耦,通过正弦函数呼吸裂缝模型模拟桥梁损伤,车辆与桥梁的耦合振动根据车、桥之间位移与作用力的协调关系建立动力学方程求解

特征转换

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

划分训练集和测试集

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

建模

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

模型优化


点击标题查阅往期内容

MATLAB贝叶斯优化混合Bayes-CNN-RNN分析股票市场数据与浅层网络超参数优化

左右滑动查看更多

01

02

03

04

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

本项目利用卷积神经网络(基于 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,您只需更改文件中的超参数。

go 复制代码
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 的不同层可能会对图像中的纹理、颜色、形状等特征进行逐步抽象和分析,最终确定损伤的类别。

图 2:基于 CNN 的砖单元损伤识别与分类示意图

图 3 是全连接模式与局部连接模式对比图,包括全连接模式(a)和局部连接模式(b)。

go 复制代码
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)局部连接模式

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

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

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

图 5:Faster - RCNN 训练样本

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

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

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

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

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

图 8:滑动窗口策略

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

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

关于分析师

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

数据获取

在公众号后台回复"城墙数 ",可免费获取完整数据。


资料获取

在公众号后台回复"领资料",可免费获取数据分析、机器学习、深度学习等学习资料。

点击文末**"阅读原文"**

获取全文完整代码数据资料。

本文选自《Python基于滑动窗口CNN损伤梁桥数据、故宫城墙图像数据分类可视化|附数据代码》。

点击标题查阅往期内容

R语言KERAS用RNN、双向RNNS递归神经网络、LSTM分析预测温度时间序列、 IMDB电影评分情感

Python用CNN-LSTM、ARIMA、Prophet股票价格预测的研究与分析|附数据代码

【视频讲解】线性时间序列原理及混合ARIMA-LSTM神经网络模型预测股票收盘价研究实例

RNN循环神经网络 、LSTM长短期记忆网络实现时间序列长期利率预测

结合新冠疫情COVID-19股票价格预测:ARIMA,KNN和神经网络时间序列分析

深度学习:Keras使用神经网络进行简单文本分类分析新闻组数据

用PyTorch机器学习神经网络分类预测银行客户流失模型

PYTHON用LSTM长短期记忆神经网络的参数优化方法预测时间序列洗发水销售数据

Python用Keras神经网络序列模型回归拟合预测、准确度检查和结果可视化

R语言深度学习卷积神经网络 (CNN)对 CIFAR 图像进行分类:训练与结果评估可视化

深度学习:Keras使用神经网络进行简单文本分类分析新闻组数据

Python用LSTM长短期记忆神经网络对不稳定降雨量时间序列进行预测分析

R语言深度学习Keras循环神经网络(RNN)模型预测多输出变量时间序列

R语言KERAS用RNN、双向RNNS递归神经网络、LSTM分析预测温度时间序列、 IMDB电影评分情感

Python用Keras神经网络序列模型回归拟合预测、准确度检查和结果可视化

Python用LSTM长短期记忆神经网络对不稳定降雨量时间序列进行预测分析

R语言中的神经网络预测时间序列:多层感知器(MLP)和极限学习机(ELM)数据分析报告

R语言深度学习:用keras神经网络回归模型预测时间序列数据

Matlab用深度学习长短期记忆(LSTM)神经网络对文本数据进行分类

R语言KERAS深度学习CNN卷积神经网络分类识别手写数字图像数据(MNIST)

MATLAB中用BP神经网络预测人体脂肪百分比数据

Python中用PyTorch机器学习神经网络分类预测银行客户流失模型

R语言实现CNN(卷积神经网络)模型进行回归数据分析

SAS使用鸢尾花(iris)数据集训练人工神经网络(ANN)模型

【视频】R语言实现CNN(卷积神经网络)模型进行回归数据分析

Python使用神经网络进行简单文本分类

R语言用神经网络改进Nelson-Siegel模型拟合收益率曲线分析

R语言基于递归神经网络RNN的温度时间序列预测

R语言神经网络模型预测车辆数量时间序列

R语言中的BP神经网络模型分析学生成绩

matlab使用长短期记忆(LSTM)神经网络对序列数据进行分类

R语言实现拟合神经网络预测和结果可视化

用R语言实现神经网络预测股票实例

使用PYTHON中KERAS的LSTM递归神经网络进行时间序列预测

python用于NLP的seq2seq模型实例:用Keras实现神经网络机器翻译

用于NLP的Python:使用Keras的多标签文本LSTM神经网络分类

相关推荐
Niuguangshuo3 分钟前
深度学习模型中音频流式处理
人工智能·深度学习·音视频
m0_748256564 分钟前
Rust环境安装配置
开发语言·后端·rust
程序猿阿伟6 分钟前
《C++巧铸随机森林:开启智能决策新境界》
开发语言·c++·随机森林
带带老表学爬虫15 分钟前
opencv阈值操作
人工智能·opencv·计算机视觉
假意诗人28 分钟前
【NextJS】Arco Design与Next.js快速上手
开发语言·javascript·arco design
凡人的AI工具箱32 分钟前
40分钟学 Go 语言高并发教程目录
开发语言·后端·微服务·性能优化·golang
dundunmm33 分钟前
论文阅读:Statistical Comparisons of Classifiers over Multiple Data Sets
论文阅读·人工智能·算法·机器学习·评估方法
pzx_00133 分钟前
【论文阅读】相似误差订正方法在风电短期风速预报中的应用研究
开发语言·论文阅读·python·算法·leetcode·sklearn
每天写点bug37 分钟前
【golang】匿名内部协程,值传递与参数传递
开发语言·后端·golang
WBingJ43 分钟前
李宏毅机器学习深度学习:机器学习任务攻略
人工智能·深度学习·机器学习