1、算法测试集数据准备 算法功能测试 算法性能测试 算法效果测试(模型评估指标) 算法指标结果分析 算法测试报告 我们将算法测试测试流程中的几个核心环节提炼如上几点,也就组成了我们目前算法测试的测试策略。
2、算法测试集数据准备测试集的准备对于整体算法测试而言非常重要,一般测试集准备过程中需考虑以下几点: 测试集的覆盖度 测试集的独立性 测试集的准确性 测试集的覆盖度 如果,测试集准备只是随机的选取测试数据,容易造成测试结果的失真,降低算法模型评估结果的可靠性。
3、选择好对应的测试数据后,后来后期的指标计算、结果分析,还需对数据进行标注,标注对应的特征,以人脸检测为例,使用工具对人脸图标进行人脸坐标框图,并将对应特征进行标注记录及存储,如下图。
4、我们以人脸检索为例,我们准备200组人脸测试数据,每组为同一个人不同时期或角度的10张人脸照片,对人脸检索算法模型指标进行计算时,如计算TOP10的精确率,此时若在数据库中,存在以上200组人的其他照片时,便会对指标计算结果造成影响,比如我们200组人脸中包含Jack,但数据库中除了Jack的10张,还存在其他的8张Jack的照片。
5、因此,我们在测试集数据准备时,需考虑数据干扰,测试准备阶段对数据库的其他测试数据进行评估,比如从200组人脸测试数据组,进行预测试,对相似度非常高的数据进行研判,判断是否为同一人,若是则删除该照片或者不将该人从200组测试集中剔除。
6、对于测试集的准备,为了提高测试集准备效率及复用性,我们尝试搭建了算法数仓平台,实现数据(图片)的在线标注、存储等功能,作为算法测试数据的同一获取入口。
7、同时测试集一般也包含数据清洗操作,数据清洗是为保障后续模型评估指标结果、指标分析、特征分析的有效性,降低垃圾数据、干扰数据的影响。
8、因此需要对算法微服务接口进行功能性验证,比如结合应用场景从功能性、可靠性、可维护性角度对必填、非必填、参数组合验证等进行正向、异向的测试覆盖。
9、此处不多做介绍,同普通的API接口测试策略一致,结合接口测试质量评估标准,大概从如下几个角度进行设计: 业务功能覆盖是否完整业务规则覆盖是否完整参数验证是否达到要求(边界、业务规则)接口异常场景覆盖是否完整性能指标是否满足要求安全指标是否满足要求 算法性能测试微服务接口的性能测试大家也比较了解,对于算法微服务同样需要进行性能测试,如基准测试、性能测试(验证是否符合性能指标)、长短稳定性能测试,都是算法微服务每个版本中需要测试的内容,同时产出版本间的性能横向对比,感知性能变化。
10、不过,我们在实际应用中为了将算法微服务接口的功能测试、性能测试融合到一起,以降低自动化测试开发、使用、学习成本,提高可持续性,我们基于关键字驱动、数据驱动的测试思想,利用Python Request、Locust模块分别实现了功能、性能自定义关键字开发。

11、我们在算法微服务功能、性能测试中介绍到,使用了基于关键字驱动、数据驱动的测试思想,利用Python Request、Locust模块分别实现功能、性能自定义关键字开发。
12、算法指标结果分析我们对算法模型指标评估之后,除了感知算法模型评估指标在不同版本的差异,还希望进一步的进行分析,已得到具体算法模型的优化的优化方向,这时候就需要结合数据的标注信息进行深度的分析,挖掘算法优劣是否哪些数据特征的影响,影响程度如何。
13、这时候我们一般通过开发一些脚本实现我们的分析过程,根据算法微服务接口的响应体以及数据准备阶段所标注的数据特征,进行分析脚本的开发。
14、另外指标结果的进一步分析,也要结合算法设计,比如人脸检索算法,每张图片的检索流程为“输入图片的人脸检测“ -; “输入图片的人脸特征提取“ -; “相似特征检索“,通过此查询流程不难看出人脸检索的整体精确率受上述三个环节的影响,因此基于指标结果的深度分析也需要从这三个层次入手。
15、算法测试报告一般算法测试报告由以下几个要素组成: 算法功能测试结果 算法性能测试结果 算法模型评估指标结果 算法指标结果分析 由于算法微服务测试的复杂度相对普通服务接口较高,在报告注意简明扼要。
如有侵权请及时联系我们处理,转载请注明出处来自
随机推荐
科技快讯 |备案号:( 沪ICP备2026008940号-1 )