以人脸识别中的性别识别测试为实例,对整个测试过程进行详细讲解。
举例有一个项目,要求是输入一张人脸照片,使用算法对照片中人物的性别进行预测男 或 女。
测试人员需要对算法模型的表现进行评价,输出客观的评价指标。
测试工作开展:
一、需求分析,查看需求文档,了解需求
算法的输入和输出是什么的内容,格式。
测试人员需要给出的评价指标。
训练数据中男性照片和女性照片数据分别有多少,比例。
照片数据是怎样的(是否有老人,小孩等)。
算法是如何实现的。(整个模型预测流程;数据是如何处理;用的是什么算法)
思考方向:
算法工程师使用男女训练数据比例是否合理?
照片数据中覆盖是否全面?
二、测试数据准备(相当于编写测试用例)
类比一个输入框的测试,需要测试汉字、字符、表情、数字、字母,组合等多种情况下的。这里也是类似。
主要考虑:
1,需要什么样的测试数据
2,测试数据要多少
思考什么情况下可能会影响到算法识别性别,准备这样的测试数据。
这里给出一些建议:
- 男性照片和女性照片测试数据比例和训练数据中比例保持一致。
- 照片数据中包括不同年龄段男女
- 正常脸部拍摄的照片
- 包括不同光线照明场景,尤其是弱光,光线不足,暗场景下的照片。
- 包括不同姿势(偏头、仰头、侧面)场景照片。
- 被物体(如眼镜、面膜、口罩、手等)遮挡场景照片。
测试数据总数多少参考之前写的博客。
本次项目测试主要考虑用户群体,用户场景下拍摄的照片。不使用网络照片。不使用国外人脸数据集。不考虑国外人群,像黑种人性别识别。
进入性别识别前有人脸识别模型判断有没有人脸,多人脸判断等,所以不用考虑非人脸是否会识别出性别的问题。
场景下不会有脸部区域很小的照片。此不考虑。
笔者这里使用1100张女性照片,900张男性照片做为测试数据。
测试数据的标注:
如果是图片是本地.jpg格式的,在一个文件夹中新建2个子文件夹,一个命名man存放所有男性照片,一个命名为woman存在所有女性照片。
如果图片是url,所有url保存在一个txt文档中,分为两列,第一列为url, 第二列为对应标注1, 2
三、测试脚本
测试脚本主要功能:批量运行所有测试数据,记录模型预测值,和标注值进行,计算得出评价指标。保存判断出错的照片。并记录每张照片所预测耗时,计算出平均值、中位值、最大值 、最小值等 数据。
使用python编写实现,评价指标使用sklearn包,平均值使用numpy。
如果同一张照片,模型的输出结果是不变的。脚本运行一次就可以。
如果同一张照片,运行多次,可能会有不一样的输出。要多次运行脚本,评价指标取平均值或 其他。看具体出的指标情况。
四、结果分析
查看评价指标。
查看判断出错的照片,是不是标注出错。有没有什么共同特征等。
五、大批量照片数据运行
使用大量照片(不需要标注男女)运行,只关注是否会有运行失败、报错的情况,不关注预测出来的结果是否正确。
大量数据情况下,主要考察是否有些数据会运行报错。
六、和百度人脸识别中性别识别PK
待补充