基于人工智能机器视觉技术的古建筑表层损伤检测
2017-09-27赵鹏赵雪峰赵庆安李生元方腾伟赵鑫如
赵鹏++赵雪峰++赵庆安++李生元++方腾伟++赵鑫如
摘 要:21世纪以来,在大数据和GPU加速訓练的支持下,以深度学习为核心的人工智能技术迅速发展,并在多领域得到了广泛应用。与此同时,随着国民经济实力和文化素质的不断提升,国家对于古建筑的保护也愈发重视。然而在长期自然及人为因素的共同作用下,古建筑难免会受到不同程度的损伤,这些损伤在很大程度上表现在结构的表层,如裂缝、酥碱、剥落、倾斜、空鼓等。因此,对这些表层损伤实施快速和高效的识别和定位,为后续的诊断和修复工作提供指导具有重大意义。目前国内对于古建筑表层损伤的检测主要为人工方法,即通过目测和借助专业的设备完成工作。然而人工方法效率不高,且需要较强的专业性和经验因素。为解决该问题,文中提出了一种基于人工智能方法的古建筑表层损伤检测技术,通过获取大量具有多类损伤古建筑的表层图像样本并进行人工分类,使用卷积神经网络对样本进行训练,得到一个用于识别损伤的分类器并验证其准确性。分类器成功建立后,使用滑动窗口算法对结构表层图像进行测试,从而完成损伤的定位工作。最后提出了众包式检测的思想,通过调动公众来收集训练样本,达到提高效率,节约成本的目的。
关键词:人工智能;深度学习;机器视觉;古建筑;损伤检测
中图分类号:TP368.5;TU317 文献标识码:A 文章编号:2095-1302(2017)09-00-05
0 引 言
古建筑作为一种重要的文明载体,是历史文化遗产不可或缺的一部分。自21世纪以来,国家对于古建筑的保护愈发重视,维护和修复工作大量展开,并且得到了长足的发展[1]。
然而,古建筑的破坏现状决定了损伤检测和维护修复工作的高难度和高成本。近些年,国内各地区将大量资金投入于古建筑修复工作。2014年,安徽省黄山市徽州区投入8 000万元,对该区147处古建筑实施保护利用工程[2];同年,贵州省铜仁市投入6 000万元,启动了40个古建筑维护项目[3];2015年,广东省珠海市高新区投入近3 000万元,完成了对该区18处重要古建筑的修缮和活化工作[4];2016年,国家文物局投入2610万元开始对永乐宫实施整体维修[5]。大量高投入的维护工作对损伤检测与评定环节提出了更高的要求。
当前古建筑砌体结构的表层损伤检测一般以目测为主,检测设备为辅的方法进行检测。这种方式虽然看似简便,但对检测人员的专业性要求十分高,且需具备一定的损伤判定经验。例如对墙体裂缝的检测,检测人员必须具备能够熟知该裂缝的性质以及判定是否需要对其修复处理的能力。并且大范围的检测消耗人力成本高,故只能采取定期检测和抽样检测的方式。就目前来说,这种检测方式虽然可以达到基本满意的效果,但有时仍然不能及时发现问题,无法对维护工作提供实时和必要的指导,导致维修成本大大提高。
以深度学习为核心的人工智能技术的最大优势是无需特征提取,只要拥有足够的样本,经过训练的分类器可以准确识别损伤。随着该研究领域的不断升温,每年都会出现许多训练更高效,分类更准确的卷积神经网络模型,将深度学习应用于结构损伤检测领域是趋势发展的必然。
目前将深度学习引入结构表层损伤检测的研究很少,相关研究的网络深度相对较浅[6],基本上均为二分类问题[7],且在识别的算法上效率不高。同时,也尚未见到任何应用于古建筑或砌体结构的相关研究。而本文将填补这一部分空白。
1 基本原理
以本文研究内容为例,假设输入一张像素分辨率为480×105的真彩色砖块图像,如图1所示。图像以像素为单位,因此该砖块图像宽度为480个像素,高度为105个像素。由于是真彩色图像,每个像素具有红、绿、蓝三原色通道,即三个数字分量,每个分量的范围为0~255,通过这三个分量的组合,形成了每个像素的颜色效果(例如三个分量均为0则为纯黑色;三个分量均为255则为纯白色)。对于计算机来说,真彩色图像是由数字组成的三维数组,因此,图1中的砖块图像在计算机中的表达为480×105×3=151 200个数字。图像分类的任务即为对这数十万个数字进行数学运算,从而得到一个最大概率的类别标签,如“裂缝”。
一般来说,图像分类任务的网络越深,效果就越好。但以全连接层为主的BP神经网络并不能做得很深。以图1中的砖块图像为例,假如使用隐层神经元个数为100的双层神经网络进行训练,则需要学习480×105×3×100+100+100×4+4= 15120504个参数,如果增加中间的隐层数量与更大尺寸的图像,参数数目极易达到上百亿。巨大的参数数量对计算机的运算速度来说是一个极大的障碍,再加之海量参数很快会形成过拟合,因此一般的BP神经网络做到4层就已足够。
卷积神经网络能够做得较深的主要原因在于它拥有一般BP神经网络所不具备的可以很大程度上减少参数数目的特征,即局部连接和参数共享[8]。由于本文的研究内容是基于视觉的损伤识别,因此只讨论用于图像分类的卷积神经网络,而这也是目前研究应用最为广泛,发展速度最快的卷积神经网络。
不同于一般的BP神经网络,卷积神经网络对于输入图像的处理方式并不是将其像素值排成一维的向量,而是直接将其看作一个三维的数组。例如上文提到的砖块,卷积神经网络直接将其看作一个宽度为480,高度为105,深度为3的三维数组。宽度和高度代表了砖块图像的实际宽度和高度的像素值,深度代表每个像素三原色的通道值。卷积神经网络对输入的数据在宽度和高度的方向上不断进行降维,但深度有时会增加,一般到最后的输出层会减到和类别一样的数量。本文的分类数目为4,因此最终通过卷积神经网络时,输出层将具有1×1×4的维度,其图形化架构如图2所示。
2 网络架构及超参数配置
本文的网络训练基于22层的GoogLeNet[9](层数的确定仅考虑具有学习参数的结构层,即卷积层和全连接层),GoogLeNet是ILSVRC-2014[10]的冠军模型,是一种非常具有代表性的经典卷积神经网络结构。endprint
针对砖块损伤的特定图像分类问题,本文对GoogLeNet的某些超参数做了细微调整,仍保留其基本的网络架构。为尊重原作者,本文将调整过的网络在下文中称为GoogLeNet for HMDI,HMDI为“古建筑”、“砌体结构”、“损伤”和“识别”四个词语的英文首字母。GoogLeNet for HMDI由卷积层、汇聚层、全连接层、ReLU层、局部响应归一化层(LRN层)、随机失活层和Softmax层组合而成。此外,GoogLeNet具有一种称为“Inception”的结构。在Inception结构中,将具有不同尺寸卷积核的卷积层并联,最后设置深度汇聚层,即将几个分支在深度方向进行组合并输出。这种连接方式实现了网络同时对多种尺度范围特征的提取。Inception结构如图3所示。
GoogLeNet在最后的全连接层前设置了一个全局平均汇聚层,再次有效降低了参数数量。同时,为防止由于网络过深造成梯度消失现象,GoogLeNet在网络中增加了两个辅助的Softmax层,用于反向传播时增加前层的梯度。GoogLeNet for HMDI网络架构如图4所示(省略了辅助的Softmax层)。
超参数配置如下:
(1)输入层。输入图像尺寸为227×227。
(2)LRN层。归一化区域尺寸n=5;LRN公式系数α=0.000 1,β=0.75。
(3)随机失活层。随机失活率为0.5。
(4)卷积层、汇聚层、全连接层超参数见表1所列。
3 数据集的建立及训练环境的搭建
本文用于实验的数据集均来自北京故宫博物院古建部提供的故宫某一段像素分辨率为57 780×11 400的城墙的整体正投影图像。使用人工方式将该图像分出5 145个单独砖块样本作为训练集,分成4类,即“未损伤”1 466个;“剥落”1830个;“酥碱”984个;“裂缝”865个。每种类别的图像如图5所示。
为保证训练集的样本数量足够多,本文采取数据增强操作,即对图像实施旋转、镜像和改变对比度处理,最终将训练集扩充为40 000个样本(每类10 000个)。同时,在整体样本图像距训练集较远的位置,由人工分割2 000个样本并进行分类(每类500个),作为验证集。最后,在城墙样本其余位置取1个具有60个砖块的部分城墙图像用于测试。
本文的网络训练及测试工作均在Windows环境下借助Caffe[11]深度学习框架使用GPU进行网络训练。Caffe基于C++语言,同时在训练和测试的过程中对结果的可视化处理需使用Matlab和Python语言。Caffe官方源代码可在GitHub网站上取得[12],并在工作站上进行调整和编译。
研究使用的工作站软硬件配置见表2、表3所列。
4 网络训练
网络训练之前需对数据进行预处理,本文采取零均值化方式。零均值化,即将所有输入图像 (训练集和验证集分开处理)的像素平均值计算出来,再用每个像素值减去该平均值得到新的图像代替原有图像作为输入,此举可降低由较大均值产生的梯度膨胀影响。若需进行一些后续处理工作,例如主成分分析,则需数据的均值为零。需要说明的是,零均值化并没有改变图像的有效特征信息,因为其并没有改变像素之间的相对差值。例如将灰色调的砖块图像整体变换为白色调,通过人眼仍然能够判断出其是否损伤,正如计算机对图像的识别也并非根据其绝对像素值一样。
网络训练采用随机梯度下降+动量法,基础学习率设为0.001,步长为5 000,衰减率为0.96,即每迭代5 000次将学习率乘上0.96;训练迭代200次进行一次验证,最大迭代次数为10 000;动量系数为0.9;权重正则化系数取0.000 2。
学习率随迭代次数变化如图6所示。训练损失随迭代次数变化如图7所示。验证准确率随迭代次数变化如图8所示。
由训练结果可知,在之前约20 000次迭代中,损失迅速减小,最终在第4 000次左右趋近于0。同时,准确率从初始的25%到第4 000次左右的迭代基本稳定,最终为90.85%,对于具有很多通过人工方式尚无法准确分类的砖块样本来说,这个准确率很高。
5 滑动窗口定位测试
利用卷积神经网络成功识别砖块的损伤后,便可完成“定位”任务,即给定输入的结构表面图像,计算机不仅可以识别其损伤,还能够将损伤的位置进行精确定位。为了实现此功能,本文提出了滑动窗口算法。
滑动窗口算法即采取若干较小尺寸的“滑窗”对输入图像进行等步长或变步长扫描。滑窗每停留在一个位置,便将该位置的部分图像提取并输入分类器。每次测试选取一个类别作为研究对象,若该位置的图像被分类器识别为这一类(结果为阳性),则保留该位置的图像;若识别为其他类(结果为阴性),则将该位置填充为白色。因此,最终的测试结果为在白色背景上显示检测出的阳性区域,即完成了定位工作。
如前文所述,選取一块具有60块砖块的城墙表层图像用于测试,图像像素分辨率为1 860×1 260,采取两种尺寸的滑窗:480×105作为砖块中“顺”的滑窗,第一次扫描将xy方向起始位置均设为1,第二次x方向设为480-(480-210)/2+1=346,y方向设为105+1=106;210×105作为“丁”的滑窗,第一次扫描x方向起始位置设为480+1=481,y方向设为1,第二次x方向设为(480-210)/2+1=136,y方向设为105+1=106。二者移动步长均为x方向480+210=690,y方向为210。滑动策略及测试样本分别如图9(a),图9(b)所示。
(a)滑动策略
(b)测试样本
三种损伤的测试结果如图10和表4所示。
(a)剥落结果endprint
(b)裂缝结果
(c)酥碱结果
图10 3种损伤的测试结果
由测试结果可知,三种损伤检测准确率均在90%以上。
(1)对于剥落损伤,4块没有识别出来,其中1块误判成了裂缝,且有1块未损伤的砖块误判成了剥落;
(2)对于裂缝损伤,1块没有识别出来,该砖块误判成了酥碱,且有1块剥落误判成了裂缝;
(3)对于只有2块的酥碱损伤,分类器成功将其识别,但有1块裂缝误判成了酥碱。
导致分类错误的原因在于大多损伤程度较轻,或者具有另一类损伤特征,仅有一处错误分类为噪声干扰,其表面有一些深色物质,如图11所示。
6 众包式损伤检测
人工智能领域之所以能够持续升温并发挥巨大的作用,除了计算机硬件性能不断提升外,海量数据的支持也是重要原因。如果具有更多的古建筑结构表层图像训练样本,甚至建立一个庞大的损伤检测数据库,无论对于损伤检测分类器性能的提升,还是人工智能技术在土木工程领域应用的发展,都十分有利。
所謂众包,即能够让大众参与到建立数据库的工作中。数据库中的样本均为图像,因此,只要具备拍摄图像的条件,便能使数据库不断扩充。通过建立服务器,号召大众在古建名胜游玩时拍照上传,由工作人员对上传的图像进行提取和初步处理,再由专业检测人员进行分类,最后进入数据库,并不断对分类器进行训练,优化其性能。众包式损伤检测模式如图12所示。
图12 众包式损伤检测模式
采取众包模式可大量减少数据收集的时间,提升效率。并且大数据的实现使更深卷积神经网络的实现成为可能,人工智能技术在土木工程结构检测中的应用具有广阔的发展空间。
7 结 语
本文提出了一种基于人工智能的古建筑表层损伤检测技术。该技术以深度卷积神经网络为核心,通过网络训练得到识别损伤的分类器,并借助滑动窗口技术实现损伤定位。实验结果表明,该方法具有较高的准确度和实用性,且发展空间较大。提出一种众包检测模式,使公众能够间接参与到古建筑的损伤检测工作中。建立损伤检测“大数据”,在提高工作效率的同时还能够节约成本,因此我们在未来的研究中将会继续完成这一工作。
参考文献
[1]陈蔚.我国建筑遗产保护理论和方法研究[D].重庆:重庆大学, 2006.
[2]程锡锋, 王金满.徽州区实施古建筑保护利用工程[EB/OL]. http://www.newshs.com/a/20140213/00180.htm.
[3]田牛强.铜仁市投入6000万元保护性维修古建筑群[EB/OL]. http://www.tongrenshi.com/show-9-9923-1.html.
[4]刘海玮.珠海高新区:增加投入修缮古建筑并活化利用[J].城乡建设, 2016(9):42-42.
[5]张碧.国家文物局投资2610万保护永乐宫古建筑[EB/OL]. http://www.chinanews.com/cul/2014/03-26/5993746.shtml.
[6] Makantasis K, Protopapadakis E, Doulamis A, et al. Deep convolutional neural networks for efficient vision based tunnel inspection[C].Intelligent Computer Communication and Processing (ICCP), 2015 IEEE International Conference on. IEEE, 2015: 335-342.
[7] Cha Y J, Choi W, Buyukozturk O. Deep learning-based crack damage detection using convolutional neural network[J].Computer-Aided Civil and Infrastructure Engineering, 2017, 32(5): 361-378.
[8]张重生.深度学习原理与应用实践[M].北京: 电子工业出版社, 2016.
[9] Szegedy C, Liu W, Jia Y, et al. Going deeper with convolutions[C].Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition,2015: 1-9.
[10] Stanford Vision Lab. Large Scale Visual Recognition Challenge (ILSVRC)[EB/OL]. http://www.image-net.org/challenges/LSVRC.
[11] Jia Y, Shelhamer E. Caffe[EB/OL].http://caffe.berkeleyvision.org/
[12] GitHub. Caffe[CP/OL]. https://github.com/BVLC/caffe/tree/windows.endprint