硬核科普:人脸识别系统 帮你把脸刷明白(4)
扫一扫
分享文章到微信
扫一扫
关注99科技网微信公众号
TN(true negative)代表着负样本被正确预测为负的数量,于是TN=80;
FP(false positive)代表着负样本被错误预测为正的数量,于是FP=20;
FN(false negative)代表着正样本被错误预测为负的数量,于是FN=10。
有了上面四个值之后,就可以计算:
准确率Precision = TP/(TP+FP)=90/(90+20)=0.818
召回率Recall = TP/(TP+FN)=90/(90+10)=0.900
前面提到的人脸检测里只有人脸和背景两类,那么如何用准确率和召回率去评价人脸检测算法性能呢? 人脸检测一般输出检测框,就要定义出什么样的检测结果是正确的。一般情况下,当检测框和GT的IOU(Intersection over Union)大于一个给定的阈值(如0.7)时,认为这张人脸被正确检测到,基于这个前提,就可以按照二分类进行统计。 继续举例来说明。假设实际测试集中有100张人脸,算法检测出95个人脸框,其中有90是满足阈值要求被认为是正确的,剩下的5个被认为是错误检测。那么TP/TN/FP/FN分别计算如下:
TP:100个人脸被正确预测出来的人脸有90个,所以TP=90;
TN:背景不输出,所以TN=0;
FP:预测是人脸,实际是非人脸,即错误的检测有5张,于是FP=5;
FN:正样本未被检测出来,即漏检,于是FN=100-90=10。
有了上面四个值之后,就可以计算:
准确率Precision = TP/(TP+FP)=90/(90+5)=0.947
召回率Recall = TP/(TP+FN)=90/(90+10)=0.900
根据不同的阈值,可以得到很多对准确率Precision和召回率Recall,即可以得到PR曲线,示例见图7。 图7 PR曲线示例[4] ROC曲线是另一种评价二分类算法的指标。纵坐标为真正例率(True Positive Rate,TPR=TP/(TP+FN),横坐标为假正例率(False Positive Rate,FPR=FP/(TN+FP)) 同样根据不用阈值得到很多对TPR和FPR,即可以得到ROC曲线( 见图8 )。 图8 ROC曲线示例[29] 接下来我们就具体介绍下人脸检测算法。我们将整个人脸检测算法分为三个阶段:早期算法,AdaBoost框架以及深度学习框架。 早期算法使用模板匹配技术,即用一个人脸模板图像与被检测图像中的各个位置进行匹配,确定这个位置处是否有人脸;AdaBoost框架以2001年Viola和Jones设计的一种人脸检测算法[7]为代表。其使用Haar-like特征和级联的AdaBoost分类器,检测速度较之前的方法有2个数量级的提高,并且保持了很好的精度,一般称这种方法为VJ框架。VJ框架是人脸检测历史上第一个最具有里程碑意义的成果,奠定了基于AdaBoost目标检测框架的基础。深度学习方法出现以前工业界的方案基本都是基于VJ算法;随着卷积神经网络在图像分类问题上取得成功之后,很快也被用于人脸检测问题,在精度上大幅度超越之前的算法,逐渐成为研究和应用的主流。
99科技网:http://www.99it.com.cn
