机器学习、目标检测等领域常用的指标:准确率(accuracy) 精确率(precision)和召回率(recall)有什么区别?
搞图像分类的时候,经常用到准确率的指标,分类正确的比例是准确率。比如猫狗动物分类,测试集给100张图片,神经网络识别出来的结果中,有30张图片是分类正确的,70张错误,准确率为30%
后面搞目标检测的时候多出来2个指标精确率和召回率,以前看了下定义,时间久了就容易混淆,这里举个例子帮助理解,免得以后就忘记了。
有个目标检测任务,给定一张图片,检测(框)出里面的所有行人,有一个网络可以检测行人和物体。比如图片里有60个人,还有汽车、道路等其它物体,最理想情况下的结果:网络标60个行人框,和60个人恰好一一对应。 但是可能网络性能不够好,有可能把一辆汽车标成了人;有可能把人标成了物体;有可能标漏了,60个人只找出来50个,漏了10个行人框。
那么如何定义网络的结果好不好呢?
在这里,标的框标注有2种:行人框(正样本positive)、物体框(负样本negative)
标对了就叫true,标错了就是false,
因而一个框最后有4种可能的结果:TP(行人框、正确) FP(行人框、错误,应该是物体框)
TN(物体框、正确) FN(物体框、错误,应该是行人框)
传统的准确率:不管什么正样本、负样本的,只管你标对了多少,因而acc=(TP+TN)/(TP+TN+TN+FN)
怎么评价网络好不好呢,首先你不能标漏太多吧,60个人你得尽量全部找出来吧,这叫召回率,60个人你找出来多少,所以recall=(TP)/(TP+FN), TP就是你找出来的人数量,FN也是行人,但是你误以为是物体,相当于标漏了。
另外你标的框不能太多了,不能说找60个人,你标了1万个行人框才找全这60个人吧,万一你瞎猜的呢,所以这叫精确率,precision=(TP)/(TP+FP)