一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种钢筋计数方法、装置、设备及存储介质与流程

2023-01-06 03:23:36 来源:中国专利 TAG:


1.本发明涉及计算机视觉技术领域,特别涉及一种钢筋计数方法、装置、设备及存储介质。


背景技术:

2.钢筋是建筑制造行业的重要结构材料,广泛应用于大型居民楼、隧道桥梁、公共交通等基础设施建设当中。随着城市的不断扩张和发展,钢筋的生产量和使用量不断提升,在许多钢筋加工场或建筑工地,数量众多的钢筋堆叠在户外的大型场地中,等待被交付使用。如何在交易和管理过程中对密集堆叠的钢筋进行准确计数,对于生产方和使用方至关重要。
3.目前,钢筋的盘点计数工作主要还是依靠人工方式进行,与钢筋计数相关的计算机视觉技术的重点大多在设计算法提升钢筋计数的精度上,没有考虑到实际场景的应用需求。实际上,钢筋往往是以成捆的形式大量地无规则密集堆叠在户外空地上,具有数量大、目标小、摆放密集且不规则不整齐、存在标签遮挡、光照不均匀等诸多特点。如何让钢筋计数算法真正应用到实际场景中,高效、准确地完成大规模密集堆叠场景下的钢筋计数,是一个亟待解决的问题。


技术实现要素:

4.有鉴于此,本发明的目的在于提供一种钢筋计数方法、装置、设备及存储介质,可以避免原始图像中钢筋端面不全面导致的计数错误的情况发生,降低了人力成本和时间成本,提高钢筋计数结果的准确率。其具体方案如下:第一方面,本技术提供了一种钢筋计数方法,包括:获取对钢筋端面进行图像采集后得到的原始图像;利用预设语义分割模型对所述原始图像进行识别,并基于语义分割识别结果获取目标待识别图像;通过预设目标检测模型对所述目标待识别图像中的所述钢筋端面进行目标检测并计数,以得到初始计数结果;所述预设目标检测模型为利用预先获取的训练集对基于人工智能算法构建的初始模型进行训练后得到的模型;所述训练集包括包含钢筋端面的图像以及相应的表征类型特征的标签信息;判断所述目标待识别图像和/或所述初始计数结果是否满足预设数量更新条件,如果是则通过预设数量更新方式进行数量更新以得到目标计数结果。
5.可选的,所述获取对钢筋端面进行图像采集后得到的原始图像,包括:利用具有图像采集功能的摄像设备实时对钢筋端面进行采集,以得到原始图像。
6.可选的,所述基于语义分割识别结果获取目标待识别图像,包括:若语义分割识别结果表征所述原始图像中存在不完整的钢筋端面,则获取与所述原始图像相应的相邻原始图像;
基于预设图像拼接算法对所述原始图像和所述相邻原始图像进行图像拼接,以得到目标待识别图像。
7.可选的,所述获取与所述原始图像相应的相邻原始图像,包括:基于所述语义分割识别结果执行语音提示程序和/或文字提示程序以进行针对获取所述相邻原始图像的提示操作,以便根据所述提示操作获取所述相邻原始图像。
8.可选的,所述获取与所述原始图像相应的相邻原始图像之后,还包括:对所述原始图像中的钢筋端面进行目标检测,并为检测到的每个钢筋端面配置标记;所述标记为携带当前已标记数量的标记;对所述相邻原始图像中的钢筋端面进行目标检测;将所述相邻原始图像与所述原始图像之间以及所述相邻原始图像之间的满足相同钢筋图像条件的钢筋端面进行计数并删除相应的标记,并为检测到的所述相邻原始图像中的每个钢筋端面进行标记,直至所述相邻原始图像均已识别完成。
9.可选的,所述判断所述目标待识别图像和/或所述初始计数结果是否满足预设数量更新条件,如果是则通过预设数量更新方式进行数量更新以得到目标计数结果,包括:判断所述目标待识别图像中是否存在预设遮挡物,如果是则判定当前满足预设数量更新条件,并从预设更新方式集合筛选出相应的所述预设数量更新方式;所述预设遮挡物包括遮挡若干钢筋端面的标签;按照所述预设数量更新方式进行数量更新,以对所述预设遮挡物和/或所述目标待识别图像进行单应性变换操作,利用所述单应性变换操作执行结束得到的变换后遮挡物和/或变换后待识别图像进行数量估算,并根据数量估算后得到的遮挡钢筋数量对所述初始计数结果进行数量更新,以得到目标计数结果。
10.可选的,所述判断所述目标待识别图像和/或所述初始计数结果是否满足预设数量更新条件,如果是则通过预设数量更新方式进行数量更新以得到目标计数结果,包括:判断所述初始计数结果是否存在计数错误,如果是则判定当前满足预设数量更新条件,并获取用户筛选指令,以从预设更新方式集合筛选出相应的所述预设数量更新方式;按照所述预设数量更新方式进行数量更新,以通过预设接口获取修改后计数结果并将所述修改后计数结果确定为目标计数结果。
11.第二方面,本技术提供了一种钢筋计数装置,包括:原始图像获取模块,用于获取对钢筋端面进行图像采集后得到的原始图像;目标待识别图像获取模块,用于利用预设语义分割模型对所述原始图像进行识别,并基于语义分割识别结果获取目标待识别图像;初始计数结果获取模块,用于通过预设目标检测模型对所述目标待识别图像中的所述钢筋端面进行目标检测并计数,以得到初始计数结果;其中,所述预设目标检测模型为利用预先获取的训练集对基于人工智能算法构建的初始模型进行训练后得到的模型;所述训练集包括包含钢筋端面的图像以及相应的表征类型特征的标签信息;目标计数结果获取模块,用于判断所述目标待识别图像和/或所述初始计数结果是否满足预设数量更新条件,如果是则通过预设数量更新方式进行数量更新以得到目标计数结果。
12.第三方面,本技术提供了一种电子设备,包括:
存储器,用于保存计算机程序;处理器,用于执行所述计算机程序以实现前述的钢筋计数方法。
13.第四方面,本技术提供了一种计算机可读存储介质,用于保存计算机程序,所述计算机程序被处理器执行时实现前述的钢筋计数方法。
14.本技术中,获取对钢筋端面进行图像采集后得到的原始图像;利用预设语义分割模型对所述原始图像进行识别,并基于语义分割识别结果获取目标待识别图像;通过预设目标检测模型对所述目标待识别图像中的所述钢筋端面进行目标检测并计数,以得到初始计数结果;所述预设目标检测模型为利用预先获取的训练集对基于人工智能算法构建的初始模型进行训练后得到的模型;所述训练集包括包含钢筋端面的图像以及相应的表征类型特征的标签信息;判断所述目标待识别图像和/或所述初始计数结果是否满足预设数量更新条件,如果是则通过预设数量更新方式进行数量更新以得到目标计数结果。也即,本技术利用预设语义分割模型识别原始图像,基于语义分割识别结果获取目标待识别图像,通过预设目标检测模型检测目标待识别图像并计数得到初始计数结果,然后根据所述目标待识别图像和/或所述初始计数结果是否满足预设数量更新条件确定是否通过预设数量更新方式进行数量更新,这样一来,可以根据语义分割识别结果获取目标待识别图像,避免了原始图像中钢筋端面不全面导致的计数错误的情况发生,通过预设目标检测模型检测目标待识别图像并计数得到初始计数结果,避免了人工对钢筋进行计数工作,降低了人力成本和时间成本,提高了计数结果的准确率,根据所述目标待识别图像和/或所述初始计数结果是否满足预设数量更新条件确定是否通过预设数量更新方式进行数量更新,防止了因大规模钢筋密集堆叠导致的可能出现的标签遮挡进而影响钢筋计数结果的问题,方便对错误的计数结果进行修改,从而进一步提高了钢筋计数结果的准确率。
附图说明
15.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
16.图1为本技术提供的一种钢筋计数方法流程图;图2为本技术提供的一种具体的钢筋计数方法流程图;图3为本技术提供的另一种具体的钢筋计数方法流程图;图4为本技术提供的一种实际场景中钢筋端面的示意图;图5为本技术提供的一种语义分割识别结果的示意图;图6为本技术提供的一种对钢筋端面的目标检测结果示意图;图7为本技术提供的一种图像之间对应匹配点的示意图;图8为本技术提供的一种图像拼接后得到的图像示意图;图9为本技术提供的一种手机端实际操作过程示意图;图10为本技术提供的一种钢筋计数装置结构示意图;图11为本技术提供的一种电子设备结构图。
具体实施方式
17.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
18.目前,如何让钢筋计数算法真正应用到实际场景中,高效、准确地完成大规模密集堆叠场景下的钢筋计数,是一个亟待解决的问题。因此,本发明公开了一种钢筋计数方法,可以避免原始图像中钢筋端面不全面导致的计数错误的情况发生,降低了人力成本和时间成本,提高钢筋计数结果的准确率。
19.参见图1所示,本发明实施例公开了一种钢筋计数方法,包括:步骤s11、获取对钢筋端面进行图像采集后得到的原始图像。
20.本实施例中,获取对钢筋端面进行图像采集后得到的原始图像。可以理解的是,所述获取对钢筋端面进行图像采集后得到的原始图像,包括:利用具有图像采集功能的摄像设备实时对钢筋端面进行采集,以得到原始图像。例如,可以利用手机上自带的摄像头对工地上的钢筋进行拍摄,以获取原始图像。
21.步骤s12、利用预设语义分割模型对所述原始图像进行识别,并基于语义分割识别结果获取目标待识别图像。
22.本实施例中,需要指出的是,所述基于语义分割识别结果获取目标待识别图像,包括:若语义分割识别结果表征所述原始图像中存在不完整的钢筋端面,则获取与所述原始图像相应的相邻原始图像;基于预设图像拼接算法对所述原始图像和所述相邻原始图像进行图像拼接,以得到目标待识别图像。也即,所述预设语义分割模型对所述原始图像进行识别,对所述原始图像进行前向运算,识别出所述原始图像中的钢筋端面区域和背景区域,并判断上述钢筋端面区域与所述原始图像的边界是否相交,如果相交,则表征所述原始图像中存在不完整的钢筋端面,此时获取与所述原始图像相应的相邻原始图像;基于预设图像拼接算法对所述原始图像和所述相邻原始图像进行图像拼接,以得到目标待识别图像。这样一来,可以防止因原始图像中未完整存在所有需要计数的钢筋端面导致的计数错误问题,并且避免大规模钢筋密集堆叠场景下无法通过一张图像实现完全计数的问题,从而提高计数结果的准确性。
23.可以理解的是,所述获取与所述原始图像相应的相邻原始图像,包括:基于所述语义分割识别结果执行语音提示程序和/或文字提示程序以进行针对获取所述相邻原始图像的提示操作,以便根据所述提示操作获取所述相邻原始图像。也即,当语义分割识别结果表征所述原始图像中存在不完整的钢筋端面时,基于所述语义分割识别结果执行语音提示程序和/或文字提示程序以进行针对获取所述相邻原始图像的提示操作,其中,所述语音提示程序和所述文字提示程序可以是使用本发明的具有相关功能的电子设备,并且可以根据用户需求确定执行语音提示程序和/或文字提示程序。例如,在手机端使用本发明对钢筋进行计数时,当语义分割识别结果表征所述原始图像中右边界存在不完整的钢筋端面时,可以执行语音提示程序和文字提示程序进行提醒,手机屏幕上显示“请将设备向右移动”的消息提示,并且播放语音“当前图像右侧存在端面不完整,请将设备向右移动”的消息提示音,以引导用户移动设备拍摄与原始图像相关的相邻原始图像。
24.需要指出的是,所述获取与所述原始图像相应的相邻原始图像之后,还包括:对所述原始图像中的钢筋端面进行目标检测,并为检测到的每个钢筋端面配置标记;所述标记为携带当前已标记数量的标记;对所述相邻原始图像中的钢筋端面进行目标检测;将所述相邻原始图像与所述原始图像之间以及所述相邻原始图像之间的满足相同钢筋图像条件的钢筋端面进行计数并删除相应的标记,并为检测到的所述相邻原始图像中的每个钢筋端面进行标记,直至所述相邻原始图像均已识别完成。考虑到增强钢筋计数的实时性,提高钢筋计数的计数效率,可以在目标检测的基础上引入目标跟踪以对检测到的钢筋端面进行跟踪。当获取到原始图像和相邻原始图像后,首先对所述原始图像中的钢筋端面进行目标检测,为检测到的每个钢筋端面配置标记,所述标记为携带当前已标记数量的标记,也即,为每个检测到的钢筋端面配置在检测到当前钢筋端面时已检测到的钢筋端面数量的标记,所述原始图像中的钢筋端面检测完成后,检测相邻原始图像,将所述相邻原始图像与所述原始图像之间以及所述相邻原始图像之间的满足相同钢筋图像条件的钢筋端面进行计数并删除相应的标记,也即,若原始图像中存在第一不完整钢筋端面,相邻原始图像中存在第二不完整钢筋端面,当所述第一不完整钢筋端面与所述第二不完整钢筋端面满足相同钢筋图像条件时,则只保留其中一个标记,删除另一个标记,直至所有相邻原始图像检测完成。这样一来,可以提高基于大规模密集堆叠场景下的钢筋计数的实时性和准确性,进一步提高钢筋计数的效率。
25.步骤s13、通过预设目标检测模型对所述目标待识别图像中的所述钢筋端面进行目标检测并计数,以得到初始计数结果;所述预设目标检测模型为利用预先获取的训练集对基于人工智能算法构建的初始模型进行训练后得到的模型;所述训练集包括包含钢筋端面的图像以及相应的表征类型特征的标签信息。
26.本实施例中,通过预先训练好的目标检测模型对所述目标待识别图像中的所述钢筋端面进行目标检测,可以使用矩形框标记出目标所在的位置,然后对矩形框的个数进行统计,以得到初始计数结果。
27.步骤s14、判断所述目标待识别图像和/或所述初始计数结果是否满足预设数量更新条件,如果是则通过预设数量更新方式进行数量更新以得到目标计数结果。
28.本实施例中,在得到初始计数结果之后,判断所述目标待识别图像和/或所述初始计数结果是否满足预设数量更新条件,所述预设数量更新条件包括但不限于目标待识别图像中是否存在遮挡物、初始计数结果是否与实际数量一致等条件的其中一种或几种的组合。当所述目标待识别图像和/或所述初始计数结果满足预设数量更新条件时,则通过预设数量更新方式进行数量更新以得到目标计数结果。
29.本实施例中,获取对钢筋端面进行图像采集后得到的原始图像;利用预设语义分割模型对所述原始图像进行识别,并基于语义分割识别结果获取目标待识别图像;通过预设目标检测模型对所述目标待识别图像中的所述钢筋端面进行目标检测并计数,以得到初始计数结果;所述预设目标检测模型为利用预先获取的训练集对基于人工智能算法构建的初始模型进行训练后得到的模型;所述训练集包括包含钢筋端面的图像以及相应的表征类型特征的标签信息;判断所述目标待识别图像和/或所述初始计数结果是否满足预设数量更新条件,如果是则通过预设数量更新方式进行数量更新以得到目标计数结果。也即,本技术利用预设语义分割模型识别原始图像,基于语义分割识别结果获取目标待识别图像,通
过预设目标检测模型检测目标待识别图像并计数得到初始计数结果,然后根据所述目标待识别图像和/或所述初始计数结果是否满足预设数量更新条件确定是否通过预设数量更新方式进行数量更新,这样一来,可以根据语义分割识别结果获取目标待识别图像,避免了原始图像中钢筋端面不全面导致的计数错误的情况发生,通过预设目标检测模型检测目标待识别图像并计数得到初始计数结果,避免了人工对钢筋进行计数工作,降低了人力成本和时间成本,提高了计数结果的准确率,根据所述目标待识别图像和/或所述初始计数结果是否满足预设数量更新条件确定是否通过预设数量更新方式进行数量更新,防止了因大规模钢筋密集堆叠导致的可能出现的标签遮挡进而影响钢筋计数结果的问题,方便对错误的计数结果进行修改,从而进一步提高了钢筋计数结果的准确率。
30.参见图2所示,本发明实施例公开了一种具体的钢筋计数方法,包括:步骤s21、获取对钢筋端面进行图像采集后得到的原始图像。
31.步骤s22、利用预设语义分割模型对所述原始图像进行识别,并基于语义分割识别结果获取目标待识别图像。
32.步骤s23、通过预设目标检测模型对所述目标待识别图像中的所述钢筋端面进行目标检测并计数,以得到初始计数结果;所述预设目标检测模型为利用预先获取的训练集对基于人工智能算法构建的初始模型进行训练后得到的模型;所述训练集包括包含钢筋端面的图像以及相应的表征类型特征的标签信息。
33.步骤s24、判断所述目标待识别图像中是否存在预设遮挡物,如果是则判定当前满足预设数量更新条件,并从预设更新方式集合筛选出相应的所述预设数量更新方式。
34.本实施例中,考虑到在实际场景中,大规模钢筋密集堆叠的图像中往往会存在一些遮挡物,例如记录钢筋信息的标签,上述遮挡物会遮挡部分钢筋端面,导致在目标检测过程中预设目标检测模型无法识别到正确的目标,从而影响计数结果的准确性,因此,当所述目标待识别图像中存在预设遮挡物时,判定当前满足预设数量更新条件,并从预设更新方式集合筛选出相应的所述预设数量更新方式,以便对初始计数结果进行更新。
35.步骤s25、按照所述预设数量更新方式进行数量更新,以对所述预设遮挡物和/或所述目标待识别图像进行单应性变换操作,利用所述单应性变换操作执行结束得到的变换后遮挡物和/或变换后待识别图像进行数量估算,并根据数量估算后得到的遮挡钢筋数量对所述初始计数结果进行数量更新,以得到目标计数结果。
36.本实施例中,若当前满足预设数量更新条件,则从预设更新方式集合筛选出相应的所述预设数量更新方式,并按照所述预设数量更新方式进行数量更新,具体地,可以对所述预设遮挡物和/或所述目标待识别图像进行单应性变换操作,利用所述单应性变换操作执行结束得到的变换后遮挡物和/或变换后待识别图像进行数量估算,并根据数量估算后得到的遮挡钢筋数量对所述初始计数结果进行数量更新,以得到目标计数结果。也即,例如所述预设遮挡物为标签时,首先基于角点检测确定所述标签的四个顶点,然后对所述标签和所述目标待识别图像进行单应性变换,映射出所述标签对应的变换后遮挡物和变换后待识别图像,且变换后遮挡物和变换后待识别图像的视角一致,根据所述变化后遮挡物周围区域的钢筋目标框所占的面积与所述变化后遮挡物所占的面积,确定出被遮挡的钢筋数量,然后对所述初始计数结果进行数量更新,以得到目标计数结果。
37.关于步骤s21至步骤s23的具体过程可以参考前述实施例中公开的相应内容,在此
不再进行赘述。
38.本实施例中,获取对钢筋端面进行图像采集后得到的原始图像;利用预设语义分割模型对所述原始图像进行识别,并基于语义分割识别结果获取目标待识别图像;通过预设目标检测模型对所述目标待识别图像中的所述钢筋端面进行目标检测并计数,以得到初始计数结果;所述预设目标检测模型为利用预先获取的训练集对基于人工智能算法构建的初始模型进行训练后得到的模型;所述训练集包括包含钢筋端面的图像以及相应的表征类型特征的标签信息;判断所述目标待识别图像中是否存在预设遮挡物,如果是则判定当前满足预设数量更新条件,并从预设更新方式集合筛选出相应的所述预设数量更新方式;按照所述预设数量更新方式进行数量更新,以对所述预设遮挡物和/或所述目标待识别图像进行单应性变换操作,利用所述单应性变换操作执行结束得到的变换后遮挡物和/或变换后待识别图像进行数量估算,并根据数量估算后得到的遮挡钢筋数量对所述初始计数结果进行数量更新,以得到目标计数结果。通过上述方案,若所述目标待识别图像中存在预设遮挡物,则判定当前满足预设数量更新条件,并按照筛选出的预设数量更新方式进行数量更新,得到目标计数结果。这样一来,可以对目标待识别图像中是否存在预设遮挡物进行判断,避免因所述目标待识别图像中存在所述预设遮挡物导致计数结果错误的情况发生,提高了钢筋计数的准确性,并且可以利用单应性变换对被遮挡的钢筋数量进行估算,提高了钢筋计数的效率。
39.参见图3所示,本发明实施例公开了一种钢筋计数方法,包括:步骤s31、获取对钢筋端面进行图像采集后得到的原始图像。
40.步骤s32、利用预设语义分割模型对所述原始图像进行识别,并基于语义分割识别结果获取目标待识别图像。
41.步骤s33、通过预设目标检测模型对所述目标待识别图像中的所述钢筋端面进行目标检测并计数,以得到初始计数结果;所述预设目标检测模型为利用预先获取的训练集对基于人工智能算法构建的初始模型进行训练后得到的模型;所述训练集包括包含钢筋端面的图像以及相应的表征类型特征的标签信息。
42.步骤s34、判断所述初始计数结果是否存在计数错误,如果是则判定当前满足预设数量更新条件,并获取用户筛选指令,以从预设更新方式集合筛选出相应的所述预设数量更新方式。
43.本实施例中,对初始计数结果是否存在计数错误进行判断,例如,在进行目标检测模型的测试阶段时,对预设数量的密集堆叠钢筋进行钢筋计数,若所述预设数量为150,此时初始计数结果为148,则判定所述初始计数结果存在计数错误,当前满足预设数量更新条件,并获取用户筛选指令,以从预设更新方式集合筛选出相应的所述预设数量更新方式。这样一来,可以及时发现目标检测模型的错误,方便进行调试和优化。
44.步骤s35、按照所述预设数量更新方式进行数量更新,以通过预设接口获取修改后计数结果并将所述修改后计数结果确定为目标计数结果。
45.本实施例中,按照筛选出的预设数量更新方式进行数量更新,以通过预设接口获取修改后计数结果并将所述修改后计数结果确定为目标计数结果。例如,可以弹出输入框,以便通过人工手动修改结果的方式输入钢筋的正确数量,并将输入的数量确定为目标计数结果。
46.关于步骤s31至步骤s33的具体过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
47.本实施例中,获取对钢筋端面进行图像采集后得到的原始图像;利用预设语义分割模型对所述原始图像进行识别,并基于语义分割识别结果获取目标待识别图像;通过预设目标检测模型对所述目标待识别图像中的所述钢筋端面进行目标检测并计数,以得到初始计数结果;所述预设目标检测模型为利用预先获取的训练集对基于人工智能算法构建的初始模型进行训练后得到的模型;所述训练集包括包含钢筋端面的图像以及相应的表征类型特征的标签信息;判断所述初始计数结果是否存在计数错误,如果是则判定当前满足预设数量更新条件,并获取用户筛选指令,以从预设更新方式集合筛选出相应的所述预设数量更新方式;按照所述预设数量更新方式进行数量更新,以通过预设接口获取修改后计数结果并将所述修改后计数结果确定为目标计数结果。这样一来,本发明可以在初始计数结果存在计数错误后,根据用户需求筛选出预设数量更新方式以对所述初始计数结果进行数量更新,得到目标计数结果,方便了用户操作,提高了目标计数结果的准确性。
48.下面结合针对本发明的一种具体的钢筋计数流程,对本发明的具体实施方式进行说明。
49.近些年来,随着计算机视觉技术的进步,通过传统图像处理或基于深度学习卷积神经网络来实现钢筋计数的方法不断被提出。基于传统图像处理的方法主要是利用滤波平滑、阈值分割、模板匹配、形态学处理以及连通域标记等方法来对钢筋端面进行检测计数。而基于深度学习卷积神经网络的方法主要是通过对现有的目标检测网络结构进行优化改进,或是提出新的卷积神经网络结构来实现棒材或钢筋计数。然而,上述两种方法往往将重点放在设计算法提升钢筋计数的精度上,在实验过程中通过用户选定识别区域或者是仅通过拍摄完整的单捆钢筋端面图像来进行钢筋计数,没有考虑到实际场景的应用需求。实际上,在许多钢筋加工场或者建筑工地,钢筋往往以成捆的形式大量地无规则密集堆叠在户外空地上,具有数量大、目标小、摆放密集且不规则不整齐、存在标签遮挡、光照不均匀等诸多特点。在这样的条件下,仅通过拍摄单张图片无法对钢筋堆实现完全计数。因此,本发明公开了一种钢筋计数方法,能够应用于大规模钢筋密集堆叠场景。并且,本发明所对应的系统可以部署在移动端,实现钢筋计数的系统级应用。在系统运行时,通过语义分割结果判断出可能存在且尚未拍摄到的钢筋端面区域,并通过语音提示和/或文字提示对设备进行移动,实现钢筋计数系统的交互式运行,从而获取到大规模密集堆叠场景的钢筋端面全景图像并完成钢筋计数。所述系统具有界面美观、交互良好、计数效果好等优点,能有效推动钢筋计数算法的应用落地,极大地减少了钢筋计数盘点的工作负担,提高了钢筋计数的工作效率,降低了错误计数的发生概率。
50.首先,为实现大规模密集堆叠场景下的钢筋计数,可以前往钢筋生产工地等地方进行实际参观调研,拍摄户外环境下的大规模钢筋密集堆叠图像,并且尽可能地采集不同角度、不同光照条件、不同钢筋端面直径下的所述大规模钢筋密集堆叠图像,以便使训练后的目标检测模型具有更好的泛化能力,拍摄的部分原始钢筋端面图像如图4所示。
51.本实施例从数字中国创新大赛钢筋数量ai(artificial intelligence,人工智能)识别数据集和rebardsc公开数据集中抽取部分图像,与实际拍摄的图像进行整理,并通过图像缩放、对比度变化、亮度变化等方式对图像进行数据增强。最终一共包含1500张钢筋
端面图像,其中训练集图像1200张,验证集图像200张,测试集图像100张。并且使用labelme软件对图像中的钢筋端面区域进行标注,以生成可用于识别钢筋端面区域的语义分割数据集;使用lebalimg软件对图像中的钢筋和标签进行矩形框标注,以生成可用于进行目标检测和钢筋计数的目标检测数据集。
52.本实施例中通过编码器、解码器和像素级分类器构建语义分割网络,其中编码器用于提取图像中的主干特征,解码器用于将提取后的特征图恢复到原图尺寸大小,以完成最后的分类。所述语义分割网络融合了不同尺度的池化模块,并在每次下采样之前获取并存储边缘信息,以进一步提升分割效果。并且,为了更好地实现移动端部署,编码器和解码器均采用轻量级的网络结构。训练初始化的学习率为0.001,迭代次数为500,batch_size为8。最终得到可用于识别钢筋端面区域的语义分割模型,所述语义分割模型可以区分出钢筋端面区域和背景区域,如图5所示,左图为从测试集中任意抽取的一张图像,右图为对该图像进行语义分割后识别到的结果。
53.本实施例中,通过目标检测模型对钢筋端面和遮挡若干钢筋端面的标签进行检测,以实现钢筋计数。考虑到需要将模型部署到移动端运行,因此所构建的网络中,特征提取部分主要采用的是深度可分离卷积模块,包括3
×
3的深度卷积和1
×
1的逐点卷积,而不是标准卷积。由于大规模钢筋密集堆叠所拍摄的图像具有目标数量多、目标尺寸小的特点,因此在部分深度可分离卷积模块之后引入通道注意力机制和残差模块,以提升对于小目标的特征提取能力。此外,所构建的网络采用多尺度检测机制,最终输出两个尺度的结果,对于尺度较小的特征图,在输出结果的同时,通过上采样与尺度较大的特征图进行融合输出预测结果,从而进一步提升对小目标的检测能力。
54.对于本实施例中用于实现钢筋计数的目标检测模型,训练设置的总迭代次数为500,batch_size为8,训练初始迭代率为0.01。训练过程中,通过绘制损失函数曲线来判断训练是否已经收敛,若训练过程中已经收敛,则可以提前结束训练。本实施例中的损失函数由三部分组成,具体公式为:其中loss为总损失,loss
bbox
为通过目标检测所得到的预测框与真实的标注框之间的损失,loss
conf
为预测框的置信度损失,loss
class
为预测类别损失。考虑到本实施例中检测类别较少但检测目标较多,并且对检测精度的要求较高,在具体实施过程中可以提高loss
bbox
在总的loss中的比重,减小loss
class
在总的loss的比重,因此loss中设置了λ
loss
、λ
conf
、λ
class
分别为三部分损失各自对应的权重。如图6所示,训练后的模型对于测试集中随机抽取的一张图像,都能达到良好的检测计数效果。考虑到pytorch深度学习框架支持动态计算图,可以使优化模型变得更加容易,且构建神经网络的程序通俗易懂。因此本实施例在构建网络结构时均采用pytorch深度学习框架。
55.如图4所示,由于在大规模钢筋密集堆叠的场景下,拍摄一张图像无法拍摄到钢筋堆的全貌,因此也就无法通过一张图像实现大规模密集堆叠场景下的钢筋完全计数。本实施例通过拍摄多张图片,且相邻拍摄的图片之间有重复区域,或者是从钢筋堆端面的正前方拍摄钢筋堆叠视频,再从中抽取出多幅视频帧图像,然后通过图像拼接算法生成目标待检测图像,进而对所述目标待检测图像中的钢筋端面实现目标检测和计数。
56.本实施例中,所述图像拼接算法的基本原理为对原始图像进行不同程度的下采样和高斯模糊,然后根据相邻原始图像之间的差分,找出图像中的所有特征点,所述特征点为所述特征点所在邻域内的极值点,所述特征点的方向为所述特征点所在邻域内的梯度方向。然后,对两张图像上的所有特征点计算距离,并根据距离大小来进行匹配,最终根据匹配点对来进行图像拼接。
57.具体地,所述图像拼接算法的实现步骤为:获取待拼接的第一图像和第二图像并转换为相应的第一灰度图和第二灰度图;创建sift对象,分别在两张灰度图上计算关键点和特征向量;创建bfmatcher匹配器,并使用knnmatcher方法寻找第一图像和第二图像之间的对应匹配点,如图7所示;设置阈值,去除不满足预设匹配条件的匹配点;计算第一图像向第二图像的转换矩阵;使用warpperspective方法实现图像拼接;将拼接后的图像确定为目标待识别图像,如图8所示。
58.如图4所示,考虑到在户外环境下的大规模密集堆叠的钢筋堆上往往带有用于区分出每捆钢筋的编号和相关信息的标签,然而,这些标签在一定程度上遮挡了一定数量的钢筋,导致仅通过目标检测模型检测出的钢筋的计数结果与实际的钢筋总数存在一定的差距。因此,需要估计被标签遮挡的钢筋的大致数量,以提高钢筋计数的准确度。并且,由于大规模钢筋密集堆叠的场景下,标签的姿态难以估计,因此可以通过单应性变换,将整张目标待识别图像变换到标签正前方所在的平面,然后根据标签周围区域的钢筋目标框所占的面积与标签所占的面积,确定出被标签遮挡的钢筋大致数量。本实施例中,所述标签的基本形状为矩形,因此可通过检测矩形标签的四个角,进而进行单应性变换。
59.被标签遮挡的钢筋数量估计的具体步骤为:在完成初步目标检测后的目标待识别图像上,提取出标签预测框的坐标值;遍历每一个标签预测框的坐标,以标签为中心,在尚未进行初步目标检测的原始图像上对标签及周围区域进行裁剪;提取出矩形标签的四个角点,并依据角点对裁剪后的图像进行单应性变换;对单应性变换后的变换后图像中的钢筋和标签进行目标检测;依据检测后的矩形框的坐标值,计算矩形标签的区域面积以及所检测到的钢筋目标框的面积平均值avg;估算出被标签遮挡的钢筋的大致数量n,估算公式为:将估算后的钢筋根数n累加到初步检测到的钢筋总数中。
60.考虑到钢筋计数的便捷性,可以将上述步骤中所涉及到的模型和算法,部署到移动端,并实行移动端系统运行。
61.具体地,使用android studio开发工具进行系统级的实现。首先,为支持移动端进行图像拼接和单应性变换,需要下载opencv-android-sdk并将模块导入到开发项目中。进一步地,为支持语义分割模型和目标检测模型的移动端运行,需要将模型转换为可供移动端运行的模型格式。tensorflow lite是用于移动设备和嵌入式设备的轻量级解决方案,因此在实施例中将生成的pth格式的模型转换为tflite格式。具体地,本实施例首先将训练生
成的pth模型权重文件转换为onnx格式的权重文件,然后将onnx格式的权重文件转换为pb格式的模型权重文件,最后再将pb格式的权重文件转换为tflite格式的权重文件。并且,还可以引入tts语音功能包,以满足系统的交互式运行,以便实现在对大规模密集堆叠的钢筋端面拍摄过程中通过语音提示来引导对设备摄像头进行移动拍摄。如图9所示,图9是本发明在手机应用端的一种钢筋计数实际操作过程的顺序图,首先拍摄到原始图像,经过预设语义分割模型进行识别,发现原始图像的下侧边界存在不完整的钢筋端面,因此提示用户“请将设备向下移动
↓”
,当系统判断出此时钢筋端面已全部拍摄时,提示用户“可结束拍摄!”,点击结束拍摄按钮后,系统使用opencv中的相关函数对所拍摄的视频流进行处理,提取出若干幅视频帧图像,并按照预设图像拼接算法对所述若干幅视频帧图像进行拼接,生成含有大规模钢筋密集堆叠的目标待识别图像,然后对所述目标待识别图像进行目标检测,得到初始计数结果,并显示在用户界面上,若所述初始计数结果有误,则可点击修改计数结果按钮,系统会弹出输入框以便对计数结果进行修改。这样一来,利用本发明实现的移动端系统能通过语音和文字提示引导用户在原始图像中的钢筋端面不完整时对设备镜头进行移动,以获取完整的钢筋端面图像用于目标检测,本技术具有良好的交互性,能够有效地提高大规模密集堆叠场景下的钢筋计数效率。
62.参见图10所示,本发明实施例公开了一种钢筋计数装置,包括:原始图像获取模块11,用于获取对钢筋端面进行图像采集后得到的原始图像;目标待识别图像获取模块12,用于利用预设语义分割模型对所述原始图像进行识别,并基于语义分割识别结果获取目标待识别图像;初始计数结果获取模块13,用于通过预设目标检测模型对所述目标待识别图像中的所述钢筋端面进行目标检测并计数,以得到初始计数结果;其中,所述预设目标检测模型为利用预先获取的训练集对基于人工智能算法构建的初始模型进行训练后得到的模型;所述训练集包括包含钢筋端面的图像以及相应的表征类型特征的标签信息;目标计数结果获取模块14,用于判断所述目标待识别图像和/或所述初始计数结果是否满足预设数量更新条件,如果是则通过预设数量更新方式进行数量更新以得到目标计数结果。
63.本技术中,获取对钢筋端面进行图像采集后得到的原始图像;利用预设语义分割模型对所述原始图像进行识别,并基于语义分割识别结果获取目标待识别图像;通过预设目标检测模型对所述目标待识别图像中的所述钢筋端面进行目标检测并计数,以得到初始计数结果;所述预设目标检测模型为利用预先获取的训练集对基于人工智能算法构建的初始模型进行训练后得到的模型;所述训练集包括包含钢筋端面的图像以及相应的表征类型特征的标签信息;判断所述目标待识别图像和/或所述初始计数结果是否满足预设数量更新条件,如果是则通过预设数量更新方式进行数量更新以得到目标计数结果。也即,本技术利用预设语义分割模型识别原始图像,基于语义分割识别结果获取目标待识别图像,通过预设目标检测模型检测目标待识别图像并计数得到初始计数结果,然后根据所述目标待识别图像和/或所述初始计数结果是否满足预设数量更新条件确定是否通过预设数量更新方式进行数量更新,这样一来,可以根据语义分割识别结果获取目标待识别图像,避免了原始图像中钢筋端面不全面导致的计数错误的情况发生,通过预设目标检测模型检测目标待识别图像并计数得到初始计数结果,避免了人工对钢筋进行计数工作,降低了人力成本和时
间成本,提高了计数结果的准确率,根据所述目标待识别图像和/或所述初始计数结果是否满足预设数量更新条件确定是否通过预设数量更新方式进行数量更新,防止了因大规模钢筋密集堆叠导致的可能出现的标签遮挡进而影响钢筋计数结果的问题,方便对错误的计数结果进行修改,从而进一步提高了钢筋计数结果的准确率。
64.在一些具体实施例中,所述原始图像获取模块11,具体可以包括:摄像采集单元,用于利用具有图像采集功能的摄像设备实时对钢筋端面进行采集,以得到原始图像。
65.在一些具体实施例中,所述目标待识别图像获取模块12,具体可以包括:相邻原始图像获取子模块,用于当语义分割识别结果表征所述原始图像中存在不完整的钢筋端面时,获取与所述原始图像相应的相邻原始图像;图像拼接单元,用于基于预设图像拼接算法对所述原始图像和所述相邻原始图像进行图像拼接,以得到目标待识别图像。
66.在一些具体实施例中,所述相邻原始图像获取子模块,具体可以包括:提示程序执行单元,用于基于所述语义分割识别结果执行语音提示程序和/或文字提示程序以进行针对获取所述相邻原始图像的提示操作,以便根据所述提示操作获取所述相邻原始图像。
67.在一些具体实施例中,所述钢筋计数装置,具体还可以包括:第一图像目标检测单元,用于对所述原始图像中的钢筋端面进行目标检测;第一标记配置单元,用于为检测到的每个钢筋端面配置标记;所述标记为携带当前已标记数量的标记;第二图像目标检测单元,用于对所述相邻原始图像中的钢筋端面进行目标检测;第二标记配置单元,用于将所述相邻原始图像与所述原始图像之间以及所述相邻原始图像之间的满足相同钢筋图像条件的钢筋端面进行计数并删除相应的标记,并为检测到的所述相邻原始图像中的每个钢筋端面进行标记,直至所述相邻原始图像均已识别完成。
68.在一些具体实施例中,所述目标计数结果获取模块14,具体可以包括:第一预设数量更新方式确定单元,用于判断所述目标待识别图像中是否存在预设遮挡物,如果是则判定当前满足预设数量更新条件,并从预设更新方式集合筛选出相应的所述预设数量更新方式;所述预设遮挡物包括遮挡若干钢筋端面的标签;第一预设数量更新方式执行单元,用于按照所述预设数量更新方式进行数量更新,以对所述预设遮挡物和/或所述目标待识别图像进行单应性变换操作,利用所述单应性变换操作执行结束得到的变换后遮挡物和/或变换后待识别图像进行数量估算,并根据数量估算后得到的遮挡钢筋数量对所述初始计数结果进行数量更新,以得到目标计数结果。
69.在一些具体实施例中,所述目标计数结果获取模块14,具体可以包括:第二预设数量更新方式确定单元,用于判断所述初始计数结果是否存在计数错误,如果是则判定当前满足预设数量更新条件,并获取用户筛选指令,以从预设更新方式集合筛选出相应的所述预设数量更新方式;第二预设数量更新方式执行单元,用于按照所述预设数量更新方式进行数量更新,以通过预设接口获取修改后计数结果并将所述修改后计数结果确定为目标计数结果。
70.进一步的,本技术实施例还公开了一种电子设备,图11是根据一示例性实施例示出的电子设备20结构图,图中的内容不能认为是对本技术的使用范围的任何限制。
71.图11为本技术实施例提供的一种电子设备20的结构示意图。该电子设备 20,具体可以包括:至少一个处理器21、至少一个存储器22、电源23、通信接口24、输入输出接口25和通信总线26。其中,所述存储器22用于存储计算机程序,所述计算机程序由所述处理器21加载并执行,以实现前述任一实施例公开的钢筋计数方法中的相关步骤。另外,本实施例中的电子设备20具体可以为电子计算机。
72.本实施例中,电源23用于为电子设备20上的各硬件设备提供工作电压;通信接口24能够为电子设备20创建与外界设备之间的数据传输通道,其所遵 循的通信协议是能够适用于本技术技术方案的任意通信协议,在此不对其进 行具体限定;输入输出接口25,用于获取外界输入数据或向外界输出数据,其具体的接口类型可以根据具体应用需要进行选取,在此不进行具体限定。
73.另外,存储器22作为资源存储的载体,可以是只读存储器、随机存储器、 磁盘或者光盘等,其上所存储的资源可以包括操作系统221、计算机程序222 等,存储方式可以是短暂存储或者永久存储。
74.其中,操作系统221用于管理与控制电子设备20上的各硬件设备以及计算 机程序222,其可以是windows server、netware、unix、linux等。计算机程序222除了包括能够用于完成前述任一实施例公开的由电子设备20执行的钢筋计数方法的计算机程序之外,还可以进一步包括能够用于完成其他特定工作的计算机程序。
75.进一步的,本技术还公开了一种计算机可读存储介质,用于存储计算机程序;其中,所述计算机程序被处理器执行时实现前述公开的钢筋计数方法。关于该方法的具体步骤可以参考前述实施例中公开的相应内容,在此不再进行赘述。
76.本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
77.专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
78.结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。
79.最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意
在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
80.以上对本技术所提供的技术方案进行了详细介绍,本文中应用了具体个例对本技术的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本技术的方法及其核心思想;同时,对于本领域的一般技术人员,依据本技术的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本技术的限制。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献