本发明涉及一种基于实例级分析的目标检测系统优先级测试方法,属于人工智能及软件工程领域。
背景技术:
1、基于深度神经网络(dnn)的物体检测系统在推动自动驾驶、人脸识别和机器人学等领域的发展方面起着举足轻重的作用。这些系统的任务是识别和定位图像或视频中的物体,从而为无数应用提供便利。尽管如此,dnn固有的弱点仍带来了严重的质量和可靠性问题。2019年特斯拉自动驾驶汽车相撞事件中,一辆白色卡车被误认为是天空,2018年uber自动驾驶汽车发生致命事故,这些事件都凸显了提高这些系统可靠性的紧迫性。这些事故不仅危及公共安全,还造成了巨大的经济损失。
2、基于dnn的系统的基础在于以数据为中心的编程范式,它需要大量注释数据来进行训练和验证。数据标注过程耗费大量人力和财力,尤其是手动划定对象的边界框,更是加剧了这一挑战。现有研究强调,与选择题等简单任务相比,精确标注对象的成本要高出一个数量级。当图像中存在大量物体时,这种成本会成倍增加。虽然利用所有收集到的数据进行注释、测试和模型完善可以提高性能和鲁棒性,但考虑到注释成本与从检测到的良好实例中获得的边际收益不成比例,这是一种低效策略。
3、为了缓解这一问题,人们提出了测试优先级排序方法,以便从海量未标注数据中筛选出最有可能增强模型的数据。这种有选择性的标注方法在提高模型性能和鲁棒性的同时,还能节省预算。在分类任务中引入了deepgini、deepstate和prima等新的优先级排序技术。然而,物体检测任务与分类任务有着本质区别,因为它们涉及实例级评估--模型检测到的每个物体都构成一个实例--这是这些以分类为重点的方法无法解决的粒度问题。此外,物体检测系统输出的误差不仅包括对物体的错误识别,还包括系统漏检物体的可能性--这也是以分类为重点的方法没有考虑到的另一个方面。
4、在众多安全敏感的软件系统中,目标检测模型的部署日渐普及。不过,如果目标检测系统未经彻底测试,可能在实际应用中表现出异常,这种情况能够对用户造成巨大而无法预测的损害。鉴于标记目标检测任务的高昂成本,确保系统的准确性与可靠性的测试需求尤为迫切。本发明着重于如何借助自动化工具,对目标检测系统的测试数据进行快速而有效的优先级排序。
5、尽管近期提出了众多旨在减轻深度学习系统测试案例标注高成本负担的测试优先级策略,但大多数现有方法均未能针对目标检测任务的复杂性进行适配。目标检测系统需识别并分类图像中所有潜在目标,测试人员必须将检测遗漏与错误同样视为优先标注与分析的对象,这一需求为优先级方法设计带来了新的挑战。因此,本发明旨在创造一种自动化、精确的数据错误优先级排序机制,这是深度学习领域中一项亟待解决的关键问题。
技术实现思路
1、发明目的:针对现有技术中存在的问题与不足,本发明提出了一种基于实例级分析的目标检测系统优先级测试方法,用于提升目标检测系统在处理检测误差和漏检问题上的测试能效。尽管现有的智能软件测试技术已经开发出多种测试数据的优先级排序方案,以识别最可能导致系统错误的测试样本,但这些技术主要针对的是图像分类模型,并将输入图像作为独立评估单元,赋予每幅图像一个优先级得分,以便测试人员能够在不全面标注数据集的前提下,锁定并分析潜在的模型失误。
2、然而,对于物体检测系统而言,以整幅图像为单元来确定测试数据的优先级是一项耗时的工作,因为标注工作需要在图像中逐个实例进行。虽然大多数实例往往能被模型以高置信度正确识别,但仍有少数实例可能出现检测错误。传统的方法在使用有限的标注预算上并不高效。以谷歌的数据标注服务为例,物体检测的计费单位是按实例算的,每1000个实例收费63美元,而非按图像计费。这就意味着,实例数量多的图像将产生更高的标注成本,与此相比,分类数据集的标注仅需35美元就可以处理1000张图像。
3、为了更合理地利用有限的测试预算,一个切实可行的解决方案是将资源集中用于标注那些关键实例,即那些模型尚未能高置信度处理的实例,而不是那些模型已经能够准确识别的部分。本发明提出了一种面向目标检测模型的创新实例级测试优先级排序方法,这一方法在分配标注预算时更加精确和效率化。与传统的基于图像的测试优先级策略相比,本发明的实例级排序策略在成本效益、经济性上具有明显优势,它使资源分配更加战略化,并有望显著提升检测模型错误的流程效率。
4、技术方案:一种基于实例级分析的目标检测系统优先级测试方法,首先阐述目标检测任务中的一些重要概念。考虑一个由图片i∈rw×h组成的测试数据集
5、
6、对于给定的图像i和阈值τ,可以确定目标检测模型的预测结果。检测到的实例集合表示为满足中的每个元素p由三个部分组成,定义如下:
7、
8、其中,每个实例包含一个三元组(b,c,s),分别代表检测到的实例的边界框b、类别c和置信度分数s。边界框b由坐标对组成,标识出围绕检测对象的矩形的左上角和右下角顶点。在使用阈值τ的系统中,如果实例p的置信度sp≥τ,则认为该实例是有效的,这里的sp代表方程中实例p的置信度s。
9、阈值τ在调节模型产生的实例数量中起着至关重要的作用,它充当过滤器以消除不需要的检测。例如,自动驾驶等高精度应用通常需要更高的阈值τ,以确保检测到的实例的真实性。相反,对于行人计数系统等应用,较低的阈值可能更合适,以便采用更宽松的检测方法。
10、每张图像对应的真实实例集合表示为它为评估提供了标准参考:
11、
12、其中每个真实实例包含一对(b,c),分别代表对象的实际边界框和类别。在测试场景的背景下,测试图像是新收集且缺乏预设真实值的情况下,优先级测试的目标是识别可能诱发模型错误的数据。然后将这些选定的数据优先发送给标注员进行标注,再进行正式测试。
13、在目标检测领域,模型的准确性不仅由其正确识别的实例决定。同样重要的是要考虑其所犯的错误。因此,目标检测模型输出的错误通常分为两类:检测误差和检测遗漏,每种反映了不同类型的问题。
14、(1)检测误差,它指的是模型错误检测到一个对象的实例。这种不准确性可能是由于检测到的对象位置(边界框)与实际对象位置之间的不一致,或者对象类别的错误分类导致的。定义检测误差的集合为e1:
15、
16、这里,交并比(iou)指标通过测量检测到的边界框b与真实边界框之间的重叠来量化误差,其中表示中具有该实例最大iou的真实实例。如果iou小于0.5,或者检测到的类别c与这个真实类别不匹配,则该实例被视为检测误差。因此e1构成了假阳性的集合,它是的一个子集。
17、(2)检测遗漏,它发生在模型完全漏检本应被检测到的对象时。错误集e2代表这些遗漏:
18、
19、其中表示与这个真实实例具有最高iou的模型输出实例。因此,集合e2包含了那些来自集合的真实实例,它们没有相应的模型输出实例与之iou超过0.5。这个检测遗漏的定义与大多数目标检测系统采用的通用标准相一致。一个对象如果至少有一个匹配的模型输出实例,则被认为是被检测到的。因此,e2直观地代表了被模型忽视的真实实例集合。
20、识别检测遗漏对于评估目标检测系统的稳健性至关重要。因为检测遗漏表明系统无法检测到该对象,如果我们在测试阶段不能诊断这些检测遗漏,那么我们将在目标检测技术中,模型的精确度并不仅仅取决于其正确识别的实例。同等重要的是要考虑模型所犯的错误。因此,目标检测模型输出的错误通常被归类为两种类型:检测误差和检测遗漏,每种类型反映了不同的问题。
21、通过测试用例优先级排序,可以以最小的工作量对目标检测系统进行测试。我们的目标是优先处理会导致模型预测错误的测试用例。然后,让测试人员对其进行注释,并将其提供给模型改进流程。考虑到注释每一个测试数据以建立基本真实集g的不切实际性,优先测试旨在对测试数据进行排序,使那些最有可能包含错误的数据首先得到审查和注释。这种方法旨在以最少的人工努力,最大限度地检测出错误。具体而言,该方法包括下列步骤。
22、1)发现检测误差。检测误差的量化需要评估目标检测系统的每个输出每个输出p应当被分配一个怀疑分数。引入独立的评估方法,以衡量目标检测系统对于实例p的分类和定位能力。这些方法旨在剖析和分析系统的全面能力,确保对其性能有一个细致的理解。然后,我们组合这两个指标形成了sk评分。以下是它们的设计:
23、(1)分类能力,目标检测系统为给定实例p产生一个置信分数sp,它反映了模型将边界框内容归类为特定类别的确信度;实例分类能力的指标定义为:
24、c=1-sp
25、(2)定位能力。目标检测系统的初始提案是目标检测模型执行回归时的中间状态,其中模型通过回归精确近似对象的粗略提案。从faster r-cnn和ssd等关于目标检测模型的开创性研究中,我们观察到在训练有素的模型中,对象定位的精度显著提高,能够有效地优化初始的粗略提案。相反,训练不足的模型输出倾向于与这些初始提案紧密对齐。我们的方法论受到这些发现的启发。在本发明中,目标检测系统输出的目标的精确位置被称为实例位置,由其边界框bp表示,而该系统在预测过程种产生的对目标的初始提案区域被称为模型视图,由边界框vp表示。模型视图反映了模型对对象可能位于何处的初步评估。为了定量衡量这一概念,我们引入了一个新的指标:
26、l=iou(vp,bp)
27、在这个函数中,l的值由iou度量决定,l值越高表明模型定位实例的能力降低。为了获得vp,根据目标检测模型性质,可以通过模型输出的回归参数追溯vp。具体来说,模型输出的回归参数[dx(v),dy(v),dw(v),dh(v)]用于调整vp以获得实例边界框:
28、bp=[px,py,pw,ph]
29、px,py代表框的中心点,pw,ph代表框的长度和宽度。从目标检测系统的初始提案vp=[vx,vy,vw,vh]到bp=[px,py,pw,ph]的转换由下式给出:
30、
31、其中,dx(v),dy(v),dw(v),dh(v)表示目标检测系统输出的回归参数。进一步地,由上式可以反推出模型视图vp为:
32、
33、上述公式确保无论模型架构如何,只要它输出回归参数,就能得到模型视图vp。这种反向计算允许我们通过确定输出结果的相应模型视图来评估定位能力。
34、为了全面评估目标检测系统对特定对象的分类和定位能力,综合这些形成实例p的怀疑分数sk。然后使用怀疑元素识别检测错误:
35、(t,sk)=(p,l·c)
36、sk分数反映了模型检测实例的熟练程度,分数值越高表明检测能力越弱。
37、2)诊断检测遗漏。设计了一种算法,用于生成包含检测遗漏的区域,并分配适当的怀疑度分数。在探索物体检测模型的推理机制过程中,我们发现了一个有趣的模式。在coco验证集上使用置信度阈值为0.7的faster-rcnn模型后,93%的实例在阈值过滤后被排除,仅剩下7%的实例可供输出。我们发现低置信度实例的数量在不断增加。被阈值过滤掉的低置信度实例数量较多,我们认为这些低信息量部分可能携带了足够的信息来诊断检测遗漏。受此启发,我们发现,由于物体检测模型的性质,当阈值调低时,一些检测遗漏将被大致预测出来。因此,一个自然的想法是,当一个区域没有输出实例,但有一组密集的潜在低信息预测边界框时,该区域更有可能存在潜在的检测遗漏。基于上述观点,我们对隐藏置信度分布图的计算方法进行了解读。根据计算出的分布图,我们可以得出潜在区域并将这些潜在区域汇总到优先队列中,以识别检测遗漏。
38、现在我们来描述这一过程。对于图像i∈rw×h,引入隐藏置信度分布图这一术语,这个隐藏置信度分布图最初是一个全零矩阵m0∈rn×m,表示为:
39、
40、其中,n和m用于描述矩阵的形状,它们符合约束条件:
41、
42、其中,w和h表示输入到目标检测系统的图像的长度和高度,假设目标检测系统设置了一个初始阈值τ,当阈值放宽为0时,将表示图像i的输出实例集。每个表示一个单独的实例,设(x1,y1)和(x2,y2)为边界框bp的坐标。操作由此定义:
43、
44、
45、函数通过将边界框bp映射到m0中相应的矩阵段,有效地更新了隐藏置信度分布图,并将p的置信度分数分配到矩阵中的相应位置。然后,得到mp,它代表p的隐藏置信度分布图:
46、
47、这样就得到了系统阈值τ下的隐藏信度分布图,其中包括物体检测系统从输出中省略的所有实例信度。因此,这个隐藏信度分布图就代表了模型推理后图像的低信息量部分。为了计算方便,用中值集中矩阵mτ:
48、m′τ=mτ-median(mτ)
49、将数据集中到零点附近后,m′τ就成了用于诊断检测遗漏的隐藏置信度分布图。因此,使用中位数将m′τ置中,是为了方便执行下面的二维卡丹算法;将数据中心点移到0,有助于算法找到真正的低信息密度区。使用中值而非平均值的原因是为了使中心点对异常值不敏感,因为异常值往往意味着潜在的检测遗漏。基于上述见解,我们需要找到那些潜在低信息预测框密集的区域。有了隐藏置信度分布图m′τ,那么找到物体检测系统检测遗漏的实例这一问题就可以转化为找到m′τ中元素值总和较大的子矩阵。这个子矩阵在m′τ中的范围就是我们需要找到的势区。用sum(z)表示区域中所有元素的总和,并使用二维卡达内算法找出m′τ中sum(z)最大值为前n的区域。用集合来表示这前n大的区域:
50、
51、其中表示集合的一个元素,函数的作用是使用二维卡丹算法输出n个区域z。函数将对矩阵执行n次二维卡丹算法。当执行一次该算法时,算法会输出一个具有最大sum(z)值的区域,然后,它会将m′τ中的z区域设为零,并进行下一次执行,直到输出n个区域为止。然后,根据上文矩阵约束条件中的ρ值将z缩放至原始图像。因此,z代表潜在区域的位置框,这些区域存在检测遗漏。
52、同时,计算z内元素的平均值并将其作为怀疑度评分sk。这个分数概括了对检测遗漏的量化怀疑。因此,检测遗漏的怀疑度元素为:
53、
54、最后,上述诊断检测遗漏的过程会在数据集中的所有图像中重复进行,将每幅图像中潜在的高可信度可疑区域合并到集合中。
55、3)优先级排序执行。在得到了所有的怀疑度元素(t,sk)后,我们需要建立一个集合用于存放所有这些怀疑度元素并便于后续分析。因此,现在详细介绍本发明如何高效地优先处理怀疑元素从而帮助测试人员进行有效的测试和数据注释。介绍测试优先级排序的完整工作流程。本部分输入包括被测对象检测模型m、由目标检测系统确定的阈值τ以及注释预算k。输出结果是按优先级排序的数据集testdata,它由原始数据集d组成,根据怀疑度得分重新排序,并突出显示这些怀疑度得分较高的实例以供审查。首先初始化一个空集来表示怀疑元素。然后,分别查找检测错误和诊断检测遗漏,如下所述。在查找检测错误的过程中,对于数据集d中的每幅图像i,使用被测对象检测模型m和阈值τ执行推理,然后将结果分割成不同的实例,用集合表示。对于每个实例将元素t定义为p。然后,计算被测对象检测模型对该实例的分类能力c。计算出模型视图,然后确定模型对该实例的定位能力l。随后,得出怀疑度分数sk,并将得出的怀疑度元素(t,sk)附加到集合中。对于诊断检测遗漏部分,首先初始化一个全零矩阵m0,以表示隐藏的置信度分布图。然后使用阈值为0的被测对象检测模型m进行推理,并对得到的实例进行拆分,去除与相关的子集,得到得出综合隐藏置信度分布图mτ,并将其居中,在分布图上执行二维卡达内算法,以分离出具有最大置信度总和的前n个潜在区域,随后计算每个区域的平均置信度值然后将这些区域z和统一为怀疑度元素(t,sk),并纳入集合然后,对中的怀疑度分数sk进行归一化处理,将sk值按比例调整到[0,1]范围内。归一化之后,对中的元素进行优先排序,根据它们的sk值降序排序。对于每个t,对相应的图像i进行灰度化处理,将这些灰度化后的图像添加到testdata集,并高亮显示t所表示的区域。然后,测试人员的任务是依次查看testdata集合中的图像,重点查看突出显示的区域。高亮区域t代表检测错误或检测遗漏。这种方法明显节省预算,并能最大限度地发挥测试人员的作用。
56、进一步,其中上述步骤1)的具体步骤如下:
57、步骤1)-1:起始状态;
58、步骤1)-2:输入数据集和测试模型模型阈值τ,测试预算k;
59、步骤1)-3:遍历中的每个i;
60、步骤1)-4:执行将模型的预测结果拆分为实例,splitintoinstance()为实例拆分函数;
61、步骤1)-5:遍历中的每个p;
62、步骤1)-6:执行t←p进行赋值;
63、步骤1)-7:执行c=1-p.s计算模型对实例的分类能力,其中p.s表示目标检测系统输出的置信度值;
64、步骤1)-8:执行p.v=getboxv(p.b,d(v)),表示执行上文计算模型视图的步骤,从而得到实例p对应的模型视图,getboxv()为计算模型视图函数;
65、步骤1)-9:执行l=getiou(p.v,p.b),表示计算模型视图p.v和预测框p.b之间的iou值,从而得到模型对实例的定位能力,getiou()为计算两个元素的iou函数;
66、步骤1)-10:执行sk=l·c得到怀疑度得分;
67、步骤1)-11:执行该操作表示将怀疑度分数添加入集合中,add()为添加操作;
68、步骤1)-12:判断遍历是否完成,若是执行下一步,若否,执行步骤1)-5;
69、步骤1)-13:判断遍历是否完成,若是执行下一步,若否,执行步骤1)-3;
70、步骤1)-14:结束状态。
71、进一步,其中上述步骤2)的具体步骤如下:
72、步骤2)-1:起始状态;
73、步骤2)-2:遍历中的每个i;
74、步骤2)-3:初始化全零矩阵m0=o∈rn×m;
75、步骤2)-4:执行该操作表示将目标检测系统在阈值为τ的预测结果拆分为实例,然后删去步骤1)-4中已经预测的部分
76、步骤2)-5:执行表示计算图像i的隐藏置信度矩阵,gethcdmap()为计算隐藏置信度矩阵函数;
77、步骤2)-6:执行m′τ=mτ-median(mτ),该操作表示将mτ矩阵每个元素的值减去所有元素的中位数,从而实现中心化,median()为计算中位数函数;
78、步骤2)-7:执行用二维卡达内算法,以分离出具有最大置信度总和的前n个潜在区域;
79、步骤2)-8:遍历中的每个z;
80、步骤2)-9:执行表示计算mτ中潜在区域z所涵盖的所有元素的均值,将其作为怀疑度,getmean()为计算均值函数;
81、步骤2)-10:执行将怀疑度分数添加入集合中;
82、步骤2)-11:判断遍历是否完成,若是执行下一步,若否,执行步骤2)-8;
83、步骤2)-12:判断遍历是否完成,若是执行下一步,若否,执行步骤2)-2;
84、步骤2)-13:结束状态。
85、进一步,其中上述步骤3)的具体步骤如下:
86、步骤3)-1:起始状态;
87、步骤3)-2:执行将正则化,normalize()为正则化函数;
88、步骤3)-3:执行进行优先级排序,reverse_sort()为优先级排序函数;
89、步骤3)-4:遍历中的每个t;
90、步骤3)-5:执行image=grayed_out(i)进行灰度化,grayed_out()为灰度化处理函数;
91、步骤3)-6:如果则执行步骤3)-7,否则执行步骤3)-9;
92、步骤3)-7:执行testdata.add(image)将image加入testdata中;
93、步骤3)-8:执行testdata.image=highlight(testdata.image,t)进行高亮化,highlight()为高亮化函数;
94、步骤3)-9:执行k=k-1;
95、步骤3)-10:如果k≤0则执行步骤3)-12,否则执行步骤3)-11;
96、步骤3)-11:判断遍历是否完成,若是执行下一步,若否,执行步骤3)-4;
97、步骤3)-12:返回testdata作为最终结果;
98、步骤3)-13:结束状态。
99、有益效果:本发明提供的基于实例级分析的目标检测系统优先级测试方法,用于提升目标检测系统在处理检测误差和漏检问题上的测试能效。将资源集中用于标注那些关键实例,即那些模型尚未能高置信度处理的实例,而不是那些模型已经能够准确识别的部分。本发明在分配标注预算时更加精确和效率化。与传统的基于图像的测试优先级策略相比,我们的实例级排序策略在成本效益、经济性上具有明显优势,它使资源分配更加战略化,并有望显著提升检测模型错误的流程效率。