APP下载

基于经典机器学习的墙柱施工图图像识别

2021-02-25朱杰江蔡洪浩

关键词:施工图字符图像识别

陶 立, 朱杰江, 蔡洪浩

(上海大学土木工程系, 上海 200444)

目前, 结构施工图检查几乎全都由人工完成, 由审图人员或设计人员结合相关规范进行图纸审核. 为了保证工程质量, 通常需要进行较为繁琐的结构施工图检查, 同一张图纸可能会进行多次检查, 耗时耗力. 如今, 计算机视觉技术发展迅猛, 基于机器学习的图像识别在许多领域都能有效地帮助人们解决问题[1-2]. 然而, 目前工程图纸的图像识别大多是需要从电子图纸(如CAD 文件、Revit 文件等)中提取特定格式的数据文件进行图像识别[3], 如果电子图纸的内容已设置防修改功能, 或多类型图像处于同一数据层, 则读取难度较高, 准确率较低.

由Macqueen 提出的K-均值(K-means) 算法是著名的聚类算法之一[4], 是大数据处理中重要的工具. 由Cover 等[5]和Xiao[6]提出的k-邻近(k-nearest neighbor, kNN)算法是机器学习中的一个较为成功的模型. 本工作提出了一种针对工程设计领域的快速求取图像中封闭区域面积的影射求和法(shadow-sum, SS), 结合上述三者提出的一种墙柱施工图进行高效图像识别的方法, 该方法仅需要矢量图或是清晰度足够高的位图即可完成识别. 由图像快速生成数据表格,得到每一个墙柱的纵筋配筋、墙柱面积、配筋率等信息,这样审图人员可以通过生成的数据更快速地确定剪力墙配筋率是否满足要求, 以及钢筋的布置数量和尺寸是否满足规范的构造要求.

1 墙柱施工图表征特点

墙柱施工图主要由结构平面布置, 由墙柱表、墙身表组成. 图中以墙柱表最为复杂, 数据内容最多. 墙柱表有几个重要数据: 墙柱名称、所在楼层、纵筋、箍筋墙钢筋分布细节和墙柱面积. 这里以2 例墙柱为例, 具体信息如图1 所示. 除字体以外, 墙柱施工图中墙柱表格的存在也是一个表征特点, 由表格划分的区域分别有数据, 且根据规范指示墙柱表格式具有一定的统一性[7], 本工作参考国家规范工程图集, 依据如图1 格式进行图像识别.

2 基于机器学习的墙柱施工图识别方法

整个墙柱施工图识别过程在Windows10 64 位操作系统下进行, 利用Python(3.6)调用数据库(如Opencv、Numpy、Pandas 等)进行训练以及测试. 硬件配置为8 GB 内存的Intel Core I7 8750H 的CPU. 算法的编写是在PyCharm 2018.3.3 上进行.

首先, 对需要识别的图像进行划分. 为了提高寻找表征特点的效率, 将原图进行降低分辨率处理, 即降低像素点的总数量, 提高运行速度; 将施工图进行低分辨率处理后的图命名为Image1(分辨率为300 DPI (dots per inch)), 原图命名为Image2(分辨率为1 800 DPI). 然后,对Image1 进行聚类操作(K-means 算法), 从而得到墙柱数量的类; 另外, 使用kNN 模型进行分类识别, 生成字典, 此时读取Image2, 使用kNN 模型识别的结果, 结合影射求合法最终生成数据. 墙柱施工图识别流程图如图2 所示.

图2 识别总流程Fig.2 Identify the overall process

2.1 根据编号分类

根据墙柱表中每一个墙柱都拥有的唯一属性, 将“编号”进行分类. 这里使用K-means 聚类算法对Image2 进行图像划分.K-means 算法流程如图3 所示.

图3 K-means 算法流程Fig.3 K-means algorithm process

K-means 算法是一种聚类算法. 聚类过程就是在对象类数量与对象类型均未知的情况下,依据计算相似性, 将一群信息库中的信息进行归类或发现信息库中未知的对象类.K-means聚类算法的显著特征需要对样本数据集中的每一个数据的分类作判别. 完成所有数据对象的正确分类之后将聚类中心进行调整, 并进行下一次迭代. 如果不需要对聚类中心进行调整, 则聚类算法迭代完成[8]. 聚类效果如图4 所示, 每一个位于墙柱名称处的红圈即为一类.

图4 聚类效果Fig.4 Clustering effect

2.2 搜索局部边界

根据2.1 节利用聚类算法得到的类, 即每个墙柱编号所在位置为中心的类, 依据墙柱表格式的统一性和规范性, 分别向各个方向进行搜索, 直至搜索到边界. 搜索结果如图5 所示, 蓝色圈为搜索到的边界位置.

图5 搜索局部边界Fig.5 Search for local boundaries

2.3 提取字符块

在搜索到局部边界后, 读取清晰度更高、像素点更多的Image2, 以保证提取字符块、识别字符的准确率. 根据局部边界搜索所提取的字符块的情况如图6 所示. 在此基础上, 二值化字符图像后得到像素矩阵. 由于分割的图片较为端正、清晰, 因此这里使用基于灰度差异运算方法[9], 依据文字间距中的灰度差异对文字进行分割, 得到单个文字的像素矩阵(见图7).

图6 提取文字块Fig.6 Extract text block

图7 字符分割Fig.7 Character segmentation

2.4 识别字符

根据上述内容, 本工作使用kNN 算法进行机器学习. kNN 算法是机器学习中简单高效的一种分类方法, 是最近邻算法的扩展, 也是一种简单有效的非参数分类算法.

kNN 算法操作步骤如下: 对一个待测样本x, 首先在训练数据集内搜索待测样本x的k个最近邻, 并在这k个最近邻集合中进行简单的多数表决策略决定x的类别(见图8, 图中xu为样本,k=3). 其数学定义如下(设有类别为C个的分类问题):

图8 kNN 投票Fig.8 kNN voting

ωi类中有Ni个样本, 如果k1,k2,··· ,kc分别为待测样本x的k个近邻中属于ω1,ω2,··· ,ωc类的样本个数, 则k近邻分类的判别函数为

这时, kNN 算法对待测样本x的类别决策为

则决策为

对待测样本x, kNN 会赋予其最近邻的k个样本内出现次数最多的样本所对应的类标签.

依据kNN 算法的特点和墙柱施工图表征特点, 施工图字符清晰且字体形式较为单一, 干扰字符识别的因素较少. 考虑整体识别效率, 设置kNN 算法中的k值为3, 即单个字符可以仅提供3 个样本进行参照, 对训练集的数量要求较低[10]. 由于工程设计特点, 施工图文字格式规范, 较为统一, 故本工作提供Tssdchn 字体数据样本, 每个字符样本数为3, 具体训练集、实验数据数量如表1 和2 所示.

表1 训练集数据Table 1 Training set data

表2 实验数据Table 2 Experimental data

2.5 识别墙柱面积

墙柱面积是墙柱表中重要信息之一. 依据规范要求, 绘图时应将墙柱围成封闭区域, 本工作就针对该封闭区域进行图像识别, 以计算墙柱面积.

求封闭区域的面积方法有传统的循环体计算和基于形态学的轮廓提取等方法. 读取Image2, 利用SS 法得到墙柱面积.

影射求和法是本工作根据墙柱施工图识别的实际需要, 自行编写的新算法. 该算法是一种利用矩阵运算规则计算封闭围区图像面积的方法, 选择矩阵运算而非传统的循环体来得到面积. 由于矩阵运算的时间复杂度为O(n2), 而循环算法的时间复杂度为(O(n2),O(n3)), 因此矩阵运算效率高于循环体运算.

影射求和法是一种矩阵运算方法. 在整体像素矩阵中, 令白色为0, 其余颜色为1. 当判定得到第一个非0 项, 令之后所有元素也为1, 并将其进行矩阵的累和计算; 而后再减去实际图形与某一方向边界的白色部分面积, 得到一个初始面积. 整个过程从2 个方向对图形进行投影的过程, 故称之为影射求和法. 影射求和法的示意图如图9 所示.

图9 影射求和法计算原理Fig.9 Shadow-sum calculation principle

使用cumsum 函数对像素点矩阵进行累和. 以矩阵A为例得到封闭区域面积S:

由于墙柱围区的边界是有厚度的, 因此初始面积会为因此厚度多算一个边界厚度的面积,墙柱厚度不同计算后的误差也不同. 根据计算, 识别面积与实际面积误差最高可达5%左右,这对通过墙柱面积来计算配筋率是有较大影响的. 为此, 需通过计算墙柱围区的周长及厚度得到围区边界面积, 通过初始面积减去围区边界面积, 得到墙柱图纸面积.

图纸本身是按照一定比例绘制的. 为了尽可能准确地得到墙柱面积, 需要人为手算得到任意一个墙柱的面积Shum, 再由α=Shum/Srec得到比例因子. 将α分别计入其余墙柱计算, 最后得到实际墙柱面积Sfin:

3 评价与验证

针对施工图的识别, 评价的重要指标是字符识别准确率和面积识别误差. 将整个数据集分成2 个部分: 字符识别和面积识别.

字符识别部分. 由第2 节可知, 使用kNN 算法的单个字符的训练集仅为3 个, 本工作中测试集为从某墙柱施工图中提取的实际信息, 通过人为标注的方法予以评价识别的准确率[11].

设nCTest为测试集上的准确识别数,nTest为测试样本数, 准确率ACTest为

经过计算, 将某工程如构造边缘构件墙柱施工图(施工图共有46 个墙柱)所示进行测试, 得到nTest= 817,nCTest= 814, 图纸中字符部分的识别准确率为ACTest= 99.6%; 将某工程按约束边缘构件墙柱施工图(施工图共有36 个墙柱)进行测试, 得到nTest= 524,nCTest= 521,ACTest=99.4%.

对某工程构造边缘构件墙柱施工图进行验证, 由图像识别得到Sfin与Strue的比对, 对某工程墙柱图进行测试, 得到面积的平均误差为-0.66%, 墙柱面积对比如图10(a)所示.

另取某工程约束边缘构件墙柱施工图, 经图像识别得面积平均误差为-0.34%. 墙柱面积对比如图10(b)所示.

图10 构造、约束边缘构件墙柱识别面积对比Fig.10 Comparisons of the recognition area of wall columns with structural and constrained boundary members

综合构造边缘构件墙柱施工图和约束边缘构件墙柱施工图识别结果, 字符识别准确率和图像面积识别误差均有比较好的表现, 具体数值如表3 所示. 识别得到的数据通过简单的计算可以得到所有墙柱配筋率等信息, 审图人员可以据此提高审图效率. 由于篇幅限制此处表格内容仅列出10 项, 具体结果如表4 所示.

表3 墙柱施工图识别结果Table 3 Recognition results of wall column construction drawing

表4 墙柱施工图识别数值输出结果Table 4 Identification numerical output results of wall column construction drawing

4 结束语

对于电子版的墙柱施工图, 结合kNN、K-means 和影射求和法等算法, 可以较好地取得图像识别的效果. 将墙柱施工图中的主要信息一次性输出为可编辑的文本格式, 省去了人工计算的过程, 仅需要通过简单的数据处理就能完成墙柱施工图审查的快速识别图字工作.

本工作的影射求和算法对墙柱施工图中字符识别准确率分别为99.6% 和99.4%, 运用提出的求取图像中封闭区域面积的影射求和算法, 计算得到的面积平均误差仅为0.66%和0.34%. 研究结果表明: 该算法可较准确地计算出表格内封闭图形的面积, 识别字符信息, 从而快速得到纵筋配筋面积、纵筋配筋率和箍筋信息; 可以较好地应用于实际工程设计中, 为后续进一步研究提供思路.

猜你喜欢

施工图字符图像识别
支持向量机的舰船图像识别与分类技术
基于计算机视觉的图像识别技术研究
大题小做,施工图是一个建筑项目的缩影
探讨输变电工程施工图预算管理与控制
建筑结构施工图审查要点剖析
探讨输变电工程施工图预算管理与控制
正则表达式快速入门
字符代表几
图片轻松变身ASCⅡ艺术画
基于Resnet-50的猫狗图像识别