发明内容
为了至少部分解决上述现有技术中存在的问题,本发明实施例提供一种柱状目标物识别系统。
本发明解决其技术问题所采用的技术方案是:
本发明实施例提供了一种柱状目标物识别系统,包括:
图像采集单元,用于获取具有柱状目标物簇截面图像的待识别图片数据集;
柱状目标物识别计数单元,用于基于内置的识别计数模型输出获得待识别图片中柱状目标物的数目和位置信息;以及
交互单元,将识别后的柱状目标物的数目和位置信息发送至客户端,触发所述客户端基于预设可视化界面,向用户展示识别后的柱状目标物的数目和位置信息;其中,
所述柱状目标物识别计数单元包括:
深度学习识别模型模块,用于输入待识别图片,获得初步分类结果;
处理模块,用于对初步分类结果中的所有预设对象进行基于box的重复识别排除,获得去重分类结果;
逻辑拼图模块,用于根据去重分类结果,并基于待识别图片内柱状目标物的拓扑结构,获取得到相邻图片中钢筋目标的高置信重叠区域,进行逻辑拼图,获得最终去重结果;以及
分类统计模块,用于通过聚类算法将最终去重结果按照预设信息进行分类统计,获得最终待识别图片中柱状目标物的数目和位置信息。
根据本发明实施例,所述基于box的重复识别方法具体为:
标注每个预设对象对应的box,box为深度学习识别模型对应的矩形定位边框;计算任意两个boxA与boxB之间的重叠区域,若boxB对应的矩形定位边框B的边框区域全部位于boxA对应的矩形定位边框A的边框区域内,则删除boxB;若矩形定位边框B的边框区域部分位于矩形定位边框A的边框区域内,则计算矩形定位边框A的边框区域与矩形定位边框B的边框区域之间的重叠区域面积S,若S小于阈值P1,则删除boxA与boxB中面积较小的box,若S大于或等于阈值P1,则基于boxA和boxB对应的2个预设对象的识别置信度及识别区域面积排除重复识别的预设对象识别区域,预设对象识别区域为预设对象对应的box中所设的圆形区域,所述圆形区域为以box的宽度为直径以及以box的中心为圆心的圆形区域。
根据本发明实施例,基于待识别图片内柱状目标物的拓扑结构的相似性进行逻辑拼图的方法,具体为:
分别获取第一拍摄装置拍摄柱状目标物的第一图片和第二拍摄装置拍摄柱状目标物的第二图像;
通过训练后的深度学习识别模型对所述第一图片和所述第二图片进行识别分类,以得到与所述第一图片对应的柱状目标物的第一拓扑结构和所述第二图片对应的柱状目标物的第二拓扑结构;
获取所述第一拓扑结构和所述第二拓扑结构的结构相似性反馈,若所述结构相似性反馈在预设阈值要求内,则获取定位锚点;
根据所述定位锚点获取并处理所述第一图片和所述第二图片中重复识别的柱状目标物,以拼接得到未重复识别的柱状目标物的集合。
根据本发明实施例,所述第一拓扑结构和所述第二拓扑结构的结构相似性反馈的方法包括:
对所述第一拓扑结构内的目标物按预设顺序得到第一目标物集合,对所述第二拓扑结构内的目标物按所述预设顺序得到第二目标物集合;
获取所述第一目标物集合中的第一预设初始目标物和所述第二目标物集合中的第二预设初始目标物;
构建所述第一预设初始目标物和所述第二预设初始目标物的映射关系;
基于预设规则,获取最近邻所述第一预设初始目标物的第一近邻目标物集合和最近邻所述第二预设目标物的第二近邻目标物集合;
根据所述映射关系,将所述第一近邻目标物集合映射到所述第二近邻目标物集合中,若得到映射目标物集合,则:
若所述映射目标物集合内的目标物数量为所述预设数量,则将所述第一预设初始目标物和所述第二预设初始目标物设置为定位锚点。
根据本发明实施例,获得所述映射目标物集合的方法具体为:
计算所述第一目标物集合中除所述第一预设初始目标物外的所有目标物与所述第一目标物之间的第一距离,以及所述第二目标物集合中除所述第二预设初始目标物外的所有目标物与所述第二目标物之间的第二距离,得到第一距离集合和第二距离集合;
基于所述第一距离集合按照预设顺序选取预设数量的目标物,得到最近邻所述第一预设初始目标物的第一近邻目标物集合,基于所述第二距离集合按照同一预设顺序选取同一预设数量的目标物,得到最近邻所述第二预设初始目标物的第二近邻目标物集合;
根据所述映射关系,将所述第一近邻目标物集合映射到所述第二近邻目标物集合中,以获得映射目标物集合。
根据本发明实施例,还包括:若所述映射目标物集合内的目标物数量小于所述预设数量,则遍历映射处理完所述第一近邻目标物集合和所述第二近邻目标物集合内的各目标物,直至所述映射目标物集合内的目标物数量为所述预设数量,获得对应的定位锚点。
根据本发明实施例,所述拼接得到未重复识别的目标物的集合的方法包括:
根据预设搜索区域大小,以定位锚点为中心,分别获取第一图片内的第一带状区域和第二图片内的第二带状区域,对应得到第一高置信搜索目标物集合和第二高置信搜索目标物集合;
获取所述第一高置信搜索目标物集合中的第一预设高置信目标物和所述第二高置信搜索目标物集合中的第二预设高置信目标物;
计算所述第一预设高置信目标物和所述第二预设高置信目标物的拓扑结构相似性,以得到高置信重叠目标物。
根据本发明实施例,通过聚类算法将最终去重结果按照预设信息进行分类统计的方法为K-means算法,具体为:
计算每根柱状目标物的半径与质心差的最小值对所有柱状目标物进行分类;
通过柱状目标物的尺寸信息和位置信息对分类结果进行处理,把分类不合理的柱状目标物重新归类,得到最终的柱状目标物的分类结果。
根据本发明实施例,可以至少部分地解决相关技术中的问题,能提高大量柱状目标物堆叠的复杂条件下一次性识别计数的准确性,并且具有交互单元,能够让操作人员快速校验识别结果,使得每次识别结果可以被追溯。
本发明实施例的内容以及它的其他发明目的及有益效果将会通过结合附图和对优选实施例的描述而更加明显易懂。
具体实施方式
以下,将参照附图来描述本公开的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本公开的范围。在下面的详细描述中,为便于解释,阐述了许多具体的细节以提供对本发明实施例的全面理解。然而,明显地,一个或多个实施例在没有这些具体细节的情况下也可以被实施。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本公开的概念。在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本发明实施例。在此使用的术语“包括”、“包含”等表明了所述特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。
在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。
在使用类似于“A、B和C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B和C中至少一个的计算机设备”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的系统等)。在使用类似于“A、B或C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B或C中至少一个的计算机设备”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的计算机设备等)。本领域技术人员还应理解,实质上任意表示两个或更多可选项目的转折连词和/或短语,无论是在说明书、权利要求书还是附图中,都应被理解为给出了包括这些项目之一、这些项目任一方、或两个项目的可能性。例如,短语“A或B”应当被理解为包括“A”或“B”、或“A和B”的可能性
说明书一个或多个实施例中使用了流程图用来说明根据本说明书一个或多个实施例的计算机设备所执行的操作。应当理解的是,前面或后面操作不一定按照顺序来精确地执行。相反,可以按照倒序或同时处理各个步骤。同时,也可以将其他操作添加到这些过程中,或从这些过程移除某一步或数步操作。
如图1所示,本发明实施例提供的一种柱状目标物识别系统,包括:
图像采集单元11,用于获取具有柱状目标物簇截面图像的待识别图片数据集;
柱状目标物识别计数单元12,用于基于内置的识别计数模型输出获得待识别图片中柱状目标物的数目和位置信息;以及
交互单元13,将识别后的柱状目标物的数目和位置信息发送至客户端,触发所述客户端基于预设可视化界面,向用户展示识别后的柱状目标物的数目和位置信息;其中,
所述柱状目标物识别计数单元12包括:
深度学习识别模型模块121,用于输入待识别图片,获得初步分类结果;
处理模块,用于对初步分类结果中的所有预设对象进行基于box的重复识别排除,获得去重分类结果;
逻辑拼图模块122,用于根据去重分类结果,并基于待识别图片内柱状目标物的拓扑结构,获取得到相邻图片中钢筋目标的高置信重叠区域,进行逻辑拼图,获得最终去重结果;以及
分类统计模块123,用于通过聚类算法将最终去重结果按照预设信息进行分类统计,获得最终待识别图片中柱状目标物的数目和位置信息。
根据本发明实施例,所述基于box的重复识别方法具体为:
标注每个预设对象对应的box,box为深度学习识别模型对应的矩形定位边框;计算任意两个boxA与boxB之间的重叠区域,若boxB对应的矩形定位边框B的边框区域全部位于boxA对应的矩形定位边框A的边框区域内,则删除boxB;若矩形定位边框B的边框区域部分位于矩形定位边框A的边框区域内,则计算矩形定位边框A的边框区域与矩形定位边框B的边框区域之间的重叠区域面积S,若S小于阈值P1,则删除boxA与boxB中面积较小的box,若S大于或等于阈值P1,则基于boxA和boxB对应的2个预设对象的识别置信度及识别区域面积排除重复识别的预设对象识别区域,预设对象识别区域为预设对象对应的box中所设的圆形区域,所述圆形区域为以box的宽度为直径以及以box的中心为圆心的圆形区域,更为具体地,可以参见申请号为202010524402.7的发明专利申请中公开的排出非正常识别目标的图像后处理方法及系统及技术方法。
根据本发明实施例,基于待识别图片内柱状目标物的拓扑结构的相似性进行逻辑拼图的方法,具体为:
分别获取第一拍摄装置拍摄柱状目标物的第一图片和第二拍摄装置拍摄柱状目标物的第二图像;
通过训练后的深度学习识别模型对所述第一图片和所述第二图片进行识别分类,以得到与所述第一图片对应的柱状目标物的第一拓扑结构和所述第二图片对应的柱状目标物的第二拓扑结构;
获取所述第一拓扑结构和所述第二拓扑结构的结构相似性反馈,若所述结构相似性反馈在预设阈值要求内,则获取定位锚点;
根据所述定位锚点获取并处理所述第一图片和所述第二图片中重复识别的柱状目标物,以拼接得到未重复识别的柱状目标物的集合。
根据本发明实施例,所述第一拓扑结构和所述第二拓扑结构的结构相似性反馈的方法包括:
对所述第一拓扑结构内的目标物按预设顺序得到第一目标物集合,对所述第二拓扑结构内的目标物按所述预设顺序得到第二目标物集合;
获取所述第一目标物集合中的第一预设初始目标物和所述第二目标物集合中的第二预设初始目标物;
构建所述第一预设初始目标物和所述第二预设初始目标物的映射关系;
基于预设规则,获取最近邻所述第一预设初始目标物的第一近邻目标物集合和最近邻所述第二预设目标物的第二近邻目标物集合;
根据所述映射关系,将所述第一近邻目标物集合映射到所述第二近邻目标物集合中,若得到映射目标物集合,则:
若所述映射目标物集合内的目标物数量为所述预设数量,则将所述第一预设初始目标物和所述第二预设初始目标物设置为定位锚点。
根据本发明实施例,获得所述映射目标物集合的方法具体为:
计算所述第一目标物集合中除所述第一预设初始目标物外的所有目标物与所述第一目标物之间的第一距离,以及所述第二目标物集合中除所述第二预设初始目标物外的所有目标物与所述第二目标物之间的第二距离,得到第一距离集合和第二距离集合;
基于所述第一距离集合按照预设顺序选取预设数量的目标物,得到最近邻所述第一预设初始目标物的第一近邻目标物集合,基于所述第二距离集合按照同一预设顺序选取同一预设数量的目标物,得到最近邻所述第二预设初始目标物的第二近邻目标物集合;
根据所述映射关系,将所述第一近邻目标物集合映射到所述第二近邻目标物集合中,以获得映射目标物集合。
根据本发明实施例,还包括:若所述映射目标物集合内的目标物数量小于所述预设数量,则遍历映射处理完所述第一近邻目标物集合和所述第二近邻目标物集合内的各目标物,直至所述映射目标物集合内的目标物数量为所述预设数量,获得对应的定位锚点。
根据本发明实施例,所述拼接得到未重复识别的目标物的集合的方法包括:
根据预设搜索区域大小,以定位锚点为中心,分别获取第一图片内的第一带状区域和第二图片内的第二带状区域,对应得到第一高置信搜索目标物集合和第二高置信搜索目标物集合;
获取所述第一高置信搜索目标物集合中的第一预设高置信目标物和所述第二高置信搜索目标物集合中的第二预设高置信目标物;
计算所述第一预设高置信目标物和所述第二预设高置信目标物的拓扑结构相似性,以得到高置信重叠目标物。
根据本发明实施例,通过聚类算法将最终去重结果按照预设信息进行分类统计的方法为K-means算法,具体为:
计算每根柱状目标物的半径与质心差的最小值对所有柱状目标物进行分类;
通过柱状目标物的尺寸信息和位置信息对分类结果进行处理,把分类不合理的柱状目标物重新归类,得到最终的柱状目标物的分类结果。
基于本发明提出的柱状目标物而言,更为具体地,以在大量钢筋堆叠在一起进行识别的应用场景中为例。
无论在钢筋的生产还是使用过程中,对于钢筋数量的统计都是非常重要的一个环节。例如在工地现场,对于进场的钢筋车,验收人员需要对车上的钢筋进行现场人工点根,确认数量后钢筋车才能完成进场卸货。
目前现场钢筋盘点通常是通过人工计数的方式,此方式中,现场计数工人使用不同颜色的彩笔对不同型号的钢筋进行标记和计数,这样的计数方式不仅耗时长,消耗人力,计数效率也十分低下,一般一车钢筋一次进场盘点需数个小时,计数的准确率也会随着工作时间拉长导致的工人疲劳而降低,计数结果不可追溯,因此人工计数已经渐渐不能适应现代化的自动生产需求。
针对人工计数存在的问题,市面上出现了了多种基于机器视觉的识别技术方案,其中较为典型的方案是使用手机APP对成捆的钢筋进行识别计数,然后人工修正错误识别。如安卓平台的“智能钢筋计数”、“猛秦”等APP,以及IOS平台的“CountThing form Photos”等APP,均能够在近距离对单捆钢筋进行高准确率的识别计数,识别率基本都能够达到100%。但是这种方案一次只能检测一捆钢筋,由于钢筋捆都是密集堆叠,每捆钢筋的周围有其它钢筋的干扰,这就需要工人统计大量的重复识别,因此对于整车钢筋数量的统计仍然需要大量的人力,工作效率提升有限。若对所有钢筋捆堆叠的场景进行一次性识别,则势必拉远拍摄距离,通过实验验证,随着拍摄距离的拉远,上述APP的识别率均出现大幅下降。
除此之外,如北京伟景智能科技有限公司设计的棒材计数系统,使用激光扫描钢筋的横截面,得到灰度图后再转化为二值图像后进行计数能够统计一排钢筋的数量,对比手机APP计数效率和准确率都得到了提高,但因为激光设备的特点,一次扫描的高度受限,即若一批钢筋堆叠在一起有3米宽,2米高,激光扫描成像这种方法就需要重复测量数次才能全部覆盖整个钢筋堆,同时产生大量重复识别,对于使用者不够方便。
由于目前市面上现有产品均无法对密集型钢筋进行准确的一次性识别,因此研究一套能够准确地一次性识别大量钢筋的技术具有非常重要的意义。
钢筋堆叠的场景作为一种密集型小目标,对其进行一次性识别时,其主要难点为:
(1)场景复杂。拍摄的距离、角度和光线不完全受控,钢筋端面不齐,边界难以区分等问题,这些因素导致传统算法很难达到稳定的效果;
(2)精度要求高。钢筋本身价格昂贵,实际使用基数大,如果检测结果中出现了误检和漏检,需要人工从大量的标记点中找出。所以只有达到极高的精度才能保证验收人员的使用体验,这就需要检测算法专门针对此密集场景进行优化;
(3)钢筋尺寸不一。钢筋直径的变化范围较大,一般直径为6-32mm,通常包含很多种类,截面颜色不一、形状不规则;
(4)边界难以区分。一辆钢筋运载车一次会运输很多捆钢筋,如果直接检测全部钢筋会存在边缘角度差、遮挡等问题,难度较大。目前采用单捆处理+汇总合计的流程,这样的处理过程就需要对最终结果进行去重或对不同捆进行分割。
同时,现有的拼接技术是一种像素级的拼接,主要应用于一些精度要求不高的场景,比如:风景照片的拼接,建筑图片的拼接,这些都是一些大视觉范围的图片拼接,对拼接的细微结果要求不高,只需要视觉感官是一张整体画面即可,比如说一棵树的某个枝条拼接错误,对视觉效果基本没影响。但钢筋计数是一个密集型目标识别与准确计数问题,需要对实际的钢筋支数进行准确计数,任何一个细微的拼接错误都会导致计数结果产生严重的偏差。对钢筋计数问题,为了拍清楚每一根钢筋,通常需要近距离拍摄,照片的视差较大,采用传统的基于像素级的拼接方法将产生较为严重的拼接错误甚至无法拼接,从而造成识别计数的困难。
本发明实施例提供一种钢筋识别计数系统,至少能够部分解决钢筋断面不齐、钢筋尺寸大小不一、光线、角度不受控、边界难以区分等难点问题,对大量钢筋堆叠的复杂条件下进行准确的一次性识别计数,并且能够让操作人员快速校验识别结果,使得每次识别结果可以被追溯。
在介绍了本发明的基本原理之后,下面具体介绍本发明的各种非限制性实施方式。
下面结合图2至图8的应用场景,即大量密集型钢筋堆叠的场景,参考图1及上述技术方案来描述根据本发明示例性实施方式的图片拼接方法。需要注意的是,本应用场景仅是为了便于理解本发明的精神和原理而示出,本发明的实施方式在此方面不受任何限制。相反,本发明的实施方式可以应用于适用的任何场景。
一种适用于大量堆叠螺纹钢筋智能识别计数软件系统,其整体流程如附图2所示。整体流程从功能上主要分为三个部分,第一个是图像采集系统,第二个是钢筋识别计数系统,第三个是人工交互系统。首先通过多相机采取全部的钢筋区域,并综合利用补光,高动态范围成像、锐化等图像预处理技术获取清晰的图片;对获取的图片,通过Mask-RCNN深度学习模型对钢筋进行识别计数,并通过重复识别处理以及形状、分布异常处理等识别后处理技术进行处理,排除重复识别及异常的目标;之后采取基于拓扑结构的多图拼接技术进行逻辑拼图,以及基于聚类分析技术对不同大小的钢筋进行自动分类;最后通过交互界面进行人工校验,操作员可以标注未能成功识别的钢筋,删除错误识别的钢筋,最后对结果进行保存。接下来将对这三个部分进行详细说明。
1.图像采集系统
1.1拍照器材的选型及拍照方案
本发明实施例通过图像的方式对钢筋进行识别计数,因此如何获取清晰的钢筋端面图片是整个系统的首要问题。
由于计算机识别有一定限制,要求待识别目标的像素不低于20×20,并且由于拍摄钢筋的横截面并不是整齐分布,所以景深要求大于1m。为了使拍摄范围内钢筋占比更多而背景占比更少,本系统选择大恒图像MER-2000-5GM/C-P工业相机,并搭配焦距35mm的镜头。
由于拍摄区域比较大,单个相机无法拍摄到足够清晰的、包含所有钢筋的照片,因此本系统采取了由多个(根据实际应用场景使用不同数量的相机)工业相机采集现场堆叠钢筋的图像数据。
1.2拍照智能补光技术
为了适应全天候的应用场景,当环境光线不足时,相机无法拍摄到清晰的图片,对此本系统增加了补光功能。
灯光控制使用PWM调光技术,采用stc8a8k64s4a12单片机自带的8路独立12位增强版PWM引脚输出PWM信号。通过上位机发出指令,控制每一个灯的亮度变化(共四档)。具体地,包括:
(1)单片机
单片机作为控制灯光亮度的中心,通过数据线连接灯光组和上位机,除第二个串口号根据实际与单片机相连外。
(2)上位机
上位机通过串口,发送字符串控制灯光,第一个字符为‘L’,做标志用,第二个字符为大写字母A-I,表示1号到9号灯,第三个字符为数字0-4,表示灯光的亮度级数。如发送”LB2”,表示控制第二个灯,亮度为2档,发送”LD3”,表示控制第四个灯,亮度为3档。所有灯初始亮度为0。
1.3图像预处理技术
在通过相机获取到原始图片后,为了获取更加清晰的钢筋截面图像,还需要对这些原始图片进行一些预处理,具体地,包括:
1.3.1高动态范围成像技术
由于钢筋的堆放并不整齐,部分钢筋相对位置突出,部分钢筋相对位置凹陷,因此导致图片中突出的部分钢筋图像亮度过高,凹陷的部分钢筋图像亮度较低;无论是过高或者过低的亮度,都将对钢筋识别带来负面影响,这就需要通过高动态范围成像技术来降低亮度过高的区域以及提高亮度过低的区域。其主要步骤包括:
(1)包围式曝光
通过包围式曝光,相对于当前曝光时间故意拍摄一组过度曝光或者曝光不足的低动态(Low-Dynamic Range,LDR)图像。通过设置不同的曝光时间拍摄相同场景相同区域,其呈现的亮暗细节不同,把图像像素点的细节充分地记录下来,用于生成HDR。
(2)HDR技术
将包围式曝光的多张图片叠加对齐后,用像素点在不同的曝光时间及其像素值估计该像素点的亮度,再做非线性平均得到合成的最终像素值。这样便可得到具有高动态范围的图像,以解决图片中不同区域亮度程度不一样的场景。
(3)色调映射
第三步,当获得了保留更多细节的HDR图像后,需要把HDR图像的像素值映射回0-255。关于色调映射有许多算法,它们通常计算空间变化传递函数或者降低图像梯度来适合可用的动态范围,如采用伽马曲线、双边滤波器(Durand等人提出)、局部尺度选择性算子(Reinhard等人提出)等。
1.3.2图像的锐化
原始图片经过高动态范围成像技术后,需要对其进行图像锐化(Unsharp Mask,USM),该技术可以突出图像中钢筋断面的边缘、轮廓等特征,通过增强图像灰度跳变的部分,提高了钢筋边缘与周围元之间的反差,图像的锐化也称为边缘增强。
本发明实施例采用如下经典的锐化方法:
设x为输入图像,z为校正信号,y为输出图像,λ为缩放因子,n,m是像素点的位置,经典的锐化算法用公式可以表达为:
y(n,m)=x(n,m)+λz(n,m)
在本系统中,校正信号取值为:
z(n,m)=4x(n,m)-x(n-1,m)-x(n+1,m)-x(n,m+1)
也就是计算当前像素点的值与其相邻的上下左右的差,作为当前像素点的校正信号量。
2.钢筋识别计数系统
钢筋识别计数子系统包含深度学习识别模型、识别后处理技术、逻辑拼图技术、钢筋分类技术、结果统计五个核心内容。
2.1深度学习识别模型
基于深度学习模型的钢筋识别计数建模是对数字图像中的钢筋截面建立深度学习模型的过程。本发明实施例选择Mask-RCNN深度学习模型,该模型在计算机视觉领域特别是目标识别领域取得了非常好的效果,特别是在像素级的目标识别中,Mask-RCNN通过像素级的sigmod函数和binary函数计算损失,不会导致跨类别竞争,改善了实例分割的效果,提升了像素级的目标识别能力,非常适合钢筋截面这类小尺寸的目标识别。
2.2识别后处理技术
由于处理图片太大,本发明实施例在模型预测时,为了保证识别的准确性,采用了滑动切片技术,从而导致很多真实钢筋图像被切开,在对识别后的结果进行合并时,造成大量钢筋的重复计数。同时由于背景噪声影响,造成一定的误识别,本发明提供了一套后处理技术对识别结果进行去重和异常结果的处理。具体的,包括:
(1)基于box的重复识别排除技术
box为深度学习识别模型对应的矩形定位边框,对同一钢筋的重复识别会导致识别得到的box出现重叠,如附图3所示。具体方式如前述部分所述。
(2)基于相交面积的重复识别排除技术
在经过(1)的方法处理后,还有部分重复识别没有排除,对此,本发明提出了一种基于相交面积的重复识别排除技术,该方法通过判断钢筋区域相交面来判定是否对同一钢筋进行了重复识别。所有的重复识别钢筋在经过(1)(2)两个方法处理过后能够被全部清除。
(3)形状及分布异常识别处理技术
本系统适用于大量密集钢筋的堆叠的客观场景,基本不可能出现单只钢筋出现在远离大量钢筋聚集处的孤立情况,并且为了方便钢筋运输与使用,钢筋一般为同一型号成捆的堆叠,即不可能出现一捆钢筋中突兀的出现一根尺寸差异巨大的钢筋,若在识别过程中出现以上两种情形均视为钢筋的分布异常带来的误识别,需要将其去除。另外,由于钢筋横截面一般为近似的圆形,其box的长宽不会差异太大,若识别出的钢筋区域所在box的长宽比小于设定阈值,则说明其识别形状异常,需要将其删除。
2.3多相机钢筋图像识别结果拼接技术
在本发明中,为了在拍摄过程中尽可能的记录钢筋细节,相机与车框的距离不能过远(目前为2m左右),而如此一来,一个相机便无法将整个车框内的钢筋完整拍摄,于是本发明采用多个相机进行拍摄的方案,相邻相机拍摄的钢筋区域有部分重叠。直接合并拼接这些图片组成一张宽幅图像是较为困难的,由于相机自身品质及近景拍摄的视差问题,合并时通常会遭遇像素点难以对齐,并且钢筋自身之间高度相似,从而导致算法失效(如SIFT等算法)。因此,本发明提出了一种基于钢筋分布拓扑结构不变性的逻辑拼图方案。该方案利用钢筋在相邻照片中的相对位置基本不变的这一特点,在相邻相机拍摄图片视差不大的条件下,实现了钢筋总数的统计。
所谓逻辑拼图,关键是找到相邻图片中钢筋目标的高置信重叠区域,高置信重叠区域的钢筋在不同的图中应当具有一致的分布。然后根据相机位置,选择重叠区域某侧为有效区域。统计钢筋数量时,将所有的有效区域和高置信重叠区域的目标个数相加,便可得到钢筋的总根数,其拼接流程如附图4所示。
具体为:结合本应用场景,在深度学习模型基础上,提出了一种能够将多张存在重复拍摄区域的钢筋图片进行逻辑拼接的技术方法(所谓逻辑拼接,即将不同图像中重复识别的钢筋去除,将剩余未重复识别的钢筋统一计数的技术),而多张图像的拼接在原理上是两张图片拼接的拓展,因此本发明将基于同一根钢筋在不同图片中的拓扑关系不变性(即同一根钢筋在不同图片中与周围钢筋的相对位置不变的)的基本思想,以两张图片的拼接为例,阐述一种新的钢筋图片逻辑拼接技术。其具体步骤如下:
步骤1、通过深度学习识别左右两张图片中所有钢筋,获取钢筋圆心坐标R左(x左,y左),R右(x右,y右),钢筋半径r左,r右。其中,本发明提及的所有坐标均为像素坐标,坐标原点为图片左上角点,向右为x轴正向,向下为y轴正向,长度均为像素长度;
步骤2、以图片左上角的第一根钢筋为准,依次按照从左到右、从上到下的顺序(如附图5),分别对图片中的钢筋进行编号排序,左图所有钢筋编号为
右图所有钢筋编号为
为了减少计算量,本发明分别选取两张图片中的一部分钢筋计算其拓扑结构相似性,从而找到初始的锚点,本发明暂取编号前20%(向下取整)作为待计算钢筋组,为简单起见,分别记为
和
步骤3、对左图的每一根钢筋
与右图每一根钢筋
形成一个钢筋对
计算钢筋对的拓扑结构相似性。如果结构相似性满足阈值要求,则确定
为定位锚点,转到步骤4;如果所有钢筋对
的结构相似性都不满足阈值要求,无法找到锚点,拼接失败。具体计算流程如下:
S1:对左图的每一根钢筋
对右图每一根钢筋
执行如下步骤;
S2:右图选出的钢筋
与左图选出的钢筋
形成钢筋对
左图所选取的钢筋
的坐标为
半径为
右图钢筋
的坐标为
半径为
则从左图钢筋到右图钢筋的映射关系为
不同的钢筋对,映射关系不同,但由于左图和右图中的钢筋半径
已知,ai,j可根据
计算得到;
S3:对左图中除
外剩下的每一根钢筋
计算
与
的距离
按距离从小到大的顺序选取t根钢筋
作为钢筋
的最近邻钢筋组,t根据实际情况人为选取,t越大计算速度越慢,但锚点定位准确性越高,考虑到实际应用条件,本发明采用t=19。采用下式计算:
S4:对右图中除
外剩下的每一根钢筋
计算
与
的距离
按距离从小到大的顺序选取t根钢筋
作为钢筋
的最近邻钢筋组;
S5:根据S2所得到的
与
之间的映射关系a
i,j,将左图的最近邻钢筋组映射到右图中,得到映射钢筋组
映射成功的钢筋组数量为s,初始时s=0:
S5.1对映射钢筋组
中每一根映射钢筋
对右图最近邻钢筋组
中的每一根钢筋
执行如下步骤;
S5.2
与
形成钢筋对
采用下面的公式计算钢筋对
的欧式距离△l
p,q:
S5.3:若△l
p,q≤e则说明
与
之间的拓扑结构和
与
之间的拓扑结构相同,映射成功,其中e为设定值,需要根据实际情况选取,s=s+1;否则若△l
p,q>e则说明二者拓扑结构不相同,映射失败;
S5.4:若映射成功的钢筋数量s等于t,则判定
与
为同一根钢筋,并设定其为锚点,转到步骤4。若映射成功数量s小于t,回到S5.1继续执行,直到右图最近邻钢筋组
处理完成;
S5.6若映射成功的钢筋数量s等于t,则判定
与
为同一根钢筋,并设定其为锚点,转到步骤4。若映射成功数量s小于t,回到S5.1继续执行,直到左图的映射钢筋组
处理完成;
S6:如果通过执行S2-S5没有找到锚点,回到S1继续执行,直到钢筋组
处理完成;
S7:如果通过执行S1-S6如果没有找到锚点,回到S1继续执行,直到钢筋组
处理完成;
S8:如果执行完S1-S7,都未找到锚点,匹配失败,算法终止。寻找锚点流程如附图6;
步骤4、在找到锚点后,记录锚点钢筋在左右两张图片中的圆心位置信息
依托此锚点位置信息,寻找高置信重叠钢筋,重叠的钢筋数量记为Nc,初始时Nc=0。具体算法流程如下:
T1:设定左图片中的矩形带状区域
右图片中的矩形带状区域
为高置信搜索区域,其中d为人为设定值,根据实际情况设定,本发明将d取锚点钢筋半径的2~3倍,
和
分别为左图和右图矩形带状区域的左上角坐标,
和
分别为左图和右图矩形带状区域的右下角坐标,
和
分别为左图和右图钢筋y向坐标值的最大值。左右图片中圆心坐标包含在该区域的高置信搜索钢筋集记为{R
左1,R
左2,……,R
左z},{R
右1,R
右2,……,R
右c};
T2:对左图高置信搜索钢筋集{R左1,R左2,……,R左z}中的每一根钢筋R左i(i=1,2,L,z),对右图高置信搜索钢筋集{R右1,R右2,……,R右c}中的每一根钢筋R右j(j=1,2,L,c),执行如下步骤;
T3:对左右图片中的高置信搜索钢筋集中的每一对钢筋(R左i,R右j),采用步骤3的S1到S8判断是否为同一根钢筋。如果为同一根钢筋,Nc=Nc+1,转到T5继续执行,如果不为同一根钢筋,转到T4;
T4:重复T2-T3,直到{R右1,R右2,……,R右c}处理完成;
T5:重复T2-T4,直到{R左1,R左2,……,R左z}处理完成;
计算高置信重叠钢筋流程图如附图7;
步骤5、计算左图中矩形带状区域
中的所有钢筋数量N
l,计算右图中矩形带状区域
中的所有钢筋数量N
r,则全部钢筋的实际数量为:N
total=N
l+N
r-N
c。
本应用场景的整体流程图如附图8。具体大致为:
U1:通过深度学习获取需要拼接的两张图片中所有钢筋圆心坐标R左(x左,y左)、R右(x右,y右),钢筋半径r左、r右。
U2:根据附图6所示,依次按照从左往右,从上往下的顺序分别对左右图中所有钢筋进行编号,并取编号的前20%(向下取整)作为待计算钢筋组
和
U3:按照上述步骤3计算获取左右图片中的锚点钢筋,记录其圆心坐标
U4:按照上述步骤4计算获取全部高置信重叠钢筋数量Nc。
U5:计算左图中矩形带状区域
中的所有钢筋数量N
l,计算右图中矩形带状区域
中的所有钢筋数量N
r,得到全部钢筋的实际数量为:N
total=N
l+N
r-N
c。
本发明实施例示例性的应用场景中,采用深度学习对钢筋图像进行识别,得到所有钢筋的图像位置信息后,利用同一根钢筋在不同图片中与周围钢筋的相对位置不变的特性,寻找高置信重复识别钢筋,并依据重复识别钢筋建立左右图像钢筋重叠分界区域,最终实现相机拍摄钢筋图像的逻辑拼接,实现全自动钢筋计数。
2.4钢筋尺寸分类统计技术
本发明采用K-means算法对钢筋进行分类。K-means是聚类算法中最常用的一种,其原理简单,实现方便,收敛速度快。其算法思想是过迭代的方式,让每次簇中心的选择都是让样本数据到簇中心点的距离最小化的一个过程,直到簇中心点不再变化。基于钢筋的实际分布情况,即同尺寸钢筋均捆绑在同一捆,这种思想非常适用于钢筋分类,并在实际应用中展现了很好的效果。对于本发明,K为已知的钢筋种类,输入K后,分类算法通过计算每根钢筋的半径与质心差的最小值对所有钢筋进行分类,之后再通过尺寸、位置等钢筋信息对分类结果进行处理,把分类不合理的钢筋重新归类,得到最终的钢筋分类结果。
3.人工交互系统
在经过钢筋识别计数系统后,本系统会得到一个识别准确率在99%以上的识别结果,但为了对此识别结果进行校对与复核,同时统计漏识别的钢筋以便后续进行深度学习的增量训练,需要人工参与校正。具有的交互界面,以便人工对其中的漏识别与误识别进行校正操作,即删除错误的钢筋识别结果以及添加未能识别出来的钢筋图像,得到最终的识别结果,该结果可以作为新的训练样本用以对识别模型进行增量训练。
在本应用场景中,能够实现全天候、复杂背景环境下大量钢筋堆叠情况的一次性识别计数,自动识别准确率能够达到99%以上,高于目前市面现有产品,再通过人工校正后准确率能够达到100%。其发明效果包括:首先通过图像采集系统中的相机阵列获取数张包含钢筋不同区域的原始图片,并通过补光、图片预处理能技术手段获取清晰的钢筋图片;然后通过Mask-RCNN深度学习模型,采用滑动切图技术进行钢筋识别,得到钢筋识别的初步结果;之后通过重复识别处理技术和形状、分布异常处理技术对初步识别的结果进行识别后处理,获取正确的识别结果;通过基于拓扑结构的多图拼接技术,去除各个照片的钢筋重叠区域;通过基于聚类分析的钢筋分类技术,得到每种尺寸的钢筋位置与数量;将结果保存后,通过人工交互界面进行人工校验,去除错误识别、增加漏识别,获取最终的识别结果。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。依据这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。