前言:
目前朋友们对“查询页面测试用例”大约比较讲究,同学们都想要剖析一些“查询页面测试用例”的相关内容。那么小编在网络上搜集了一些对于“查询页面测试用例””的相关知识,希望朋友们能喜欢,小伙伴们一起来了解一下吧!引言
对电池包内部结构的分析表明,检测区域可以分为两个主要部分,即包含柔性变形体的M域和不包含柔性变形体的其他区域。针对柔性变形体区域,我们使用了基于YOL0v5的异物检测方法进行检测。同时,我们研究了墓子图像童建的异物检测方法,以对不包含柔性变形体的区域进行检测。
为了验证整个异物检测系统视觉成像方案的可行性,以及算法的检测成功率和效率,本文将根据异物检测系统总体方案搭建了实验平台,并进行了在线检测模拟实验。通过这些实验,我们能够评估异物检测系统在实际应用中的性能。
二、实验平台
2.1硬件选型设计
(图1:异物检测系统实验乎台)
图1所示,图像采集运动装置由一台工业机器人负责,上位机为一台笔记本电脑,一个工业相机装在工业机器人末端,并随着机器人的运动在指定位置进行拍摄。
由于电动汽车电池包难以获得实体样本,因此本文选择了类似结构的电脑主机箱进行电池包内部结构的模拟,如图2所示,电脑主机箱的尺寸为42cm×40cm×18cm,其中PCB板是主要的检测区域,尺寸为31cm×20.5cm。
在PCB板上存在着由内存槽之间形成的间隙,并且还存在着柔性变形线缆的轨迹。选择了六自由度的FANUCLRMate200Id/7L工业机器人作为实验平台。这类工业机器人具有紧凑、多用途以及快速处理轻负载的特点。控制器选用了R-30iBplus型号,该控制器具有1GB内存,能够提高数据读取速度,提高工作效率。
控制器通过以太网与计算机进行通信,具有独立的操作系统,并且内部配备了PCI接口程序,该程序能够与计算机建立通信,并且可以使用FANUC公司提供的插件进行二次开发,以实现计算机和机器人控制器之间的数据交互。
(图2:电脑机箱内部结构)
(表1:FANUCLRMate200Id/7L机器人的参数列擊)
在视觉模块方面主要包括了德国IDS生产的UI-3580CP-C-HQR2工业相机、丽像科技公司的UH0620-10M工业镜头以及光照强度可控的OPT环形光源。在本文异物检测实验中,我们选择尺寸为7.66mmx7.00mmx3.20mm的M4螺母作为主要检测目标,最大检测目标为尺寸为40mmx20mmx10mm的办公夹。
为了避免工业机器人与电脑机箱发生碰撞,工业相机距离主要检测区域PCB板的高度约为220mm。采用的德国IDS生产的UI-3580CP-C-HQR2工业相机具有分辨率为2560x1920,并且M4螺母的正面在分辨率为640x640的图像中的像素面积为39x42,利于异物检测算法的检测。该IDS相机的镜头采用的是丽像科技公司的UH0620-10M工业镜头,光源则选择了光照强度可控的OPT环形光源。
工业相机通过USB3.0接口与计算机进行数据通信,将实时采集的图像传输至计算机。使用者可以利用官方提供的SDK库调用封装的函数,方便对相机进行二次开发。工业相机和镜头的主要参数如表2所示。
(表2:UI-3580CP-C-HQR2工业相机以及UH0620-10M镜头的主要参数)
2.2异物检测系统软件开发
为了将视觉模块和工业机器人模块进行连接整合,并且将基于目标识别的有监督异物检测方法和基于图像重建的无监督异物检测方法整合为电池包各区域的检测方法,并且能给监控人员提供良好的观察和操作界面。
本文基于VisualStudio2019开发工具集,以QT界面库为基础进行软件界面的设计和异物检测系统软件框架的编写,并以TensorRT深度学习框架部署YOLOv5s推理模型以及图像重建异常检测模型,压缩优化网络模型并加速网络模型推理。
其软件架构如下图所示:图3软件架构异物检测的软件架构包括界面层、业务逻辑层、功能层和硬件驱动层。界面层中包含有UI页面,并且还提供了信息反馈,可以展示当前拍摄画面以及当前进程,是否存在异物等等。
业务逻辑层主要包含三个模块,通过用户提供的各种模式执行相应的操作。自动巡检模式和手动定检模式归于两个独立的模块,想要执行必须停止前一进程才能切换模式。功能层包含异物检测算法和机器人运动控制。
异物检测算法包括了基于YOLOv5s的有监督异物检测算法以及基于图像重建的无监督异物检测算法。机器人运动控制主要负责巡检路线的执行函数以及手动模式下定点检测的执行函数。而硬件驱动层采用了与设备驱动相关的API,用于实现数据输入至设备后续操作。
(图3:异物检测系统软件架构)
在进行两个模式执行之前,需要对系统做初始化操作。该模块的主要功能是判断相机通信是否存在问题、机器人连接异常情况,并判断是否生成或成功读取两个网络权重的相关文件。
在自动模式中,通过UI界面提供的虚拟按钮,根据Qt的响应机制执行相应的操作。FANUC工业机器人会按照预先设定的点进行直线运动,并打开工业相机。工业相机实时拍摄的画面会在UI界面的实时监控窗口中显示,方便监控人员观察突发情况。
为了保证检测效率,该软件系统应该在工业机器人拍摄完所有设定点后,通过累计异常区域的数值来判断是否继续执行任务。如果累计异常区域的数值超过了预设值,则软件系统判定该电池包存在异物,此时工业机器人会停止运动,UI界面会弹出提示消息,提醒监控人员进行检查。
另外,UI界面还需要提供窗口来显示检测区域的状态。当完成对电池包各个区域的检测之后,UI界面应该能够显示该区域是否存在异物,并提供相应的虚拟按钮供用户根据需求查看检测结果。检测结果主要包括原场景的图像以及功能层中YOLOv5s或者图像重建模型的异物检测算法输出,其中包含检测框的图像。
手动模式中,检测流程与自动模式一致。UI界面提供按钮供用户选择需要检测的区域,并且根据触发事件的响应将位置信息发送至工业机器人,使其移动到相应的预设点,然后采集图像并进行检测。检测结果将显示在界面中,并提供保存功能,方便信息记录和任务交接。
(图4:异物检测系统的QT程序界面)
根据上述的需要,为电池包异物检测系统设计了一个交互界面。该界面包含了以下几个部分:显示窗口栏、工具栏以及系统状态信息栏。这些区域在图4中用红色虚线标识。
其中,显示窗口栏主要包含实时监控窗口和检测进程窗口。实时监控窗口提供工业柜机的实时画面,而检测进程窗口则会标记正在检测的区域以及检测完成的区域状态,并标记用户处理完成后的区域状态。
自动模式包括启动、暂停、急停以及退出功能。手动模式则包括移动相机、拍照采集图像、检测以及显示检测结果功能。累计异常区域主要用作显示计数器,提醒用户电池包中有多个区域存在异常。
根据深度学习网络训练基本是基于Python编程语言和深度学习框架PyTorch或者TensorFlow等,因此需要使用C++编程语言的深度学习框架重新搭建网络模型并加载训练好的网络权重进行推理。TensorRT是由NVIDIA公司开发的用于高性能深度学习推理的软件开发工具包,用于优化经过训练的深度学习模型。
它提供了C++开发库以及Python开发库,能够支持多种常用的神经网络框架如PyTorch、TensorFlow、Caffe等。TensorRT致力于以更高的数据吞吐量和更低的延迟运行,以满足本次软件系统对高效率进行推理的需求,因此选择TensorRT作为本文的两个网络模型的部署平台。
部署的主要流程分为以下五步:1)导出基于Python编程环境的网络模型,包括各网络层的名称和权重值;2)选择一次推理过程所提供的BatchSize;3)选择部署模型的数据精度;4)基于C++开发库重新搭建相同的网络模型;5)加载对应的网络权重并转换模型为推理引擎Engine文件。
在Qt界面中,只需要在读取生成的推理引擎Engine文件后就可以进行异物检测算法的推理。因此,系统初始化阶段包括生成两个异物检测算法对应的推理引擎文件以及读取推理引擎Engine文件。
另外,由于基于图像重建的异物检测方法中需要用到模板特征库和阈值分数图,因此在部署时需要以类似的方法导出这些数据,并在使用时与图像数据一同输入至推理引擎Engine文件。即基于图像重建的异物检测算法的推理引擎Engine文件包含三个输入:1)图像数据;2)模板特征库;3)阈值分数图。
(图5:TensorRT部署流程)
三、异物在线检测模拟实验
接下来将对该异物检测系统进行性能评估和效率评估。性能评估指标主要以误检率和漏检率为评价指标,误检率是计算所有判定为异物中不是异物的概率,而漏检率是指系统判定为异物占实际异物的概率。
本实验对象为电脑机箱,根据其内部结构的特征可以分为以下两个区域:1)带有柔性线缆的区域;2)无柔性线缆的区域。为了节省检测时间并且保证异物检测系统不遗漏任何一个区域,在工业相机在距离为220mm时,相机实际视场范围约为13cm×13cm,将电脑机箱检测区域分为六个区域,每个区域之间存在重叠,具体区域划分如图6所示。
(图6:电脑机箱内部结构)
为了模拟电脑机箱中装配固定所需要的零件,在区域六中包含了两个面定螺母,在区域三中包含一个固定螺母,具体位置如图所示。其中区域三和区域六为带有柔性线缆的区域,而其余的区域为无柔性线缆的区域,检测示例结果如图7所示。
(图7:检测结果)
根据实验结果显示,使用污染合成图像作为预训练数据,然后再用真实图像进行微调YOL0v5检测带有柔性变形物体的区域,能够较好地检测出该区域中的异物。
此外,选取归一化互相关系数作为图像相似性度量,可以有效地筛选出非散落异物的预测框。然而,在图7c)和f)中,模拟所需前零件后,预测框并未标记在图像上。实际上,YOL0v5输出的预测框中包含有所需零件的预测框,如图8a)和b)所示。
通过与图7的检测结果进行对比,可以证明所选择的筛选方法的有效性。为了使结果更有说服力,本文对二值分割图像进行以下后处理:1)对二值图像进行边缘轮廓检测;2)获得每个轮廓的最小外接矩形;3)利用最小外接矩形的面积消除由噪声产生的伪轮廓;4)由于二值分割图像有时会将一个异物分割成两个轮廓。
因此利用外接矩形之间的距离以及IOU值消除重叠矩形框,以尽可能消除重复选中的情况。从图中可以看到,该方法能够检测出该区域内的任何类型的异物(螺栓,螺母,夹子),证明了结合全局模板特征的无监督异物检测方法的有效性和鲁棒性。
(图8:YOL0v5未经过筛选方法输出的结果)
然而,由于剔除了小面积的外接矩形,可能会导致错误地将异物排除在外。因此,无监督异物检测计算误检率和漏检率是计算选中异物像素的概率。如果二值分割图像中存在数值为1的连通域,则认为检测出异物;如果二值分割图像中不存在数值为1的连通域,则认为出现了误检的情况;如果二值分割图像中存在数值为0的地方,却存在异物,则认为出现了漏检的情况。在本次实验中,我们在区域三和区域六随机放置了115个异物,而在其他区域放置59个异物。
(图9:M4螺母侧视图和正视图)
漏检情况主要出现在M4规格螺母的侧面,如图9a所示。当相机距离检测表面的高度为220mm时,M4规格螺母的侧面在图像中的像素面积仅为30x19。由于YOLOv5的多层卷积操作,小物体的特征信息比较少,影响了对小物体的预测效果。漏检情况的结果如图10所示,其中79个被漏检的物体用椭圆虚线框标记出来。
(图10:漏检情况)
当异物与背景之间的对比度相差不大时,采用GMS计算重建图像和原始图像的差异程度存在不合理的地方。即使重建图像B不包含异物信息,但由于异物和背景对比度差异不大,因此通过GMS计算梯度幅值差异时往往无法突出异物和背景的差异,如图11所示。
这容易出现漏检的情况。基于图像重建的无监督异物检测方法之所以出现误检的情况,是由于网络模型在训练时提前终止Earlystopping导致损失函数并未完全收敛,因此模型在一些区域出现重建失败的问题。
为了解决这个问题,可以通过增大提前终止的patience值使网络训练至损失函数完全收敛为止。
(图11:第四章研究的方法漏检的情况)
为了验证利用TensorRT部署深度学习模型在优化网络、加速推理方面的优越性,我们进行了以下对比实验:我们分别对比了基于Python编程语言和PyTorch深度学习框架,在CPU80第五章电池包异物在线检测模拟实验中的推理速度和基于C++编程语言和TensorRT部署,在GPU上的推理速度。
在本文实验中,我们使用的计算机操作系统为Windows10,显卡型号为NVIDIARTX3070,CPU规格为AMDRyzen5600X6-CoreProcessor3.70GHz。
我们以网络从输入一张图像到输出结果的平均推理时长作为推理速度的比较标准,具体结果如表3所示。从表中可以明显观察到,使用GPU进行计算总体上比使用CPU计算的速度更快。而经过TensorRT对网络进行优化后,更有利于网络模型加速推理。
(表3:各环境下YOLOv5的推理时长)(单位:ms)
由于两个模型在完成TensorRT优化后,可以得到两个已经序列化的Engine文件。每个序列化Engine文件不仅保存了网络模型各层权重,同时还保留了计算流程。
Engine是TensorRT提供用户进行推理的执行器,网络模型在执行推理前需要通过权重和计算流程生成Engine,但通常这个过程需要花费较长的时间。而序列化操作相当于提前将模型转化为Engine,并将Engine转为节省空间的文件。
用户在使用前只需要导入序列化Engine文件,并将其反序列化后就能够直接进行推理,不需要重复执行模型转为Engine的过程。由于第一次反序列化Engine时需要花费一定时间,因此在模型第一次推理所需时间比后面几次推理时间要长。
根据计算可以得到,两个模型反序列化总时长约为448ms。除了第一次使用Engine需要进行反序列化,后面完成一次巡检(六个区域)所需时长为2.2s,每个区域的面积为13x13cm2。
因此,本文研究的异物检测系统具备较高的检测性能,同时能够维持较高的检测速度。另外,由于每个区域的面积较小,有限的检测时间即可完成一次巡检。这保证了系统的高效性和实时性。
总结
在本文中,我们完成了实验平台硬件的选型、软件开发以及相关图像算法的验证。首先,我们按照系统总体设计方案进行了电池包异物检测系统实验平台的搭建和软件程序的开发。
为了满足检测速度的要求,我们对图像重建网络模型进行了部署和优化。此外,我们还对电池包的不同区域进行了实验。实验结果表明,我们设计的方案和算法在电池包中带有柔性变形物体的区域以及不包含柔性变形物体的区域都具备了较强的检测能力。我们的方案是切实可行的,并且具有较高的检测速度。同时,通过对存在的一些问题进行分析,我们指出了可能的改进方向。
标签: #查询页面测试用例