目标检测中各阶段的意义
文章目录
目标检测
目标检测的过程就是通过神经网络提取特征,根据特征输出对应物体的box信息,也就是需要确定一个框我们就是需要两个对角的点。而获得这两个框的过程其实就是一个回归问题,回归问题本质也是找出对应符合某一个规律的一个方程组的参数,使我们代入数值之后能得到对应的结果。
深度学习中经典的检测方法
有些检测时分为一个阶段,或者两个阶段的
比如:
- 两个阶段的算法(Two-Stage):Faster-RCNN、Mask-RCNN
- 通过画多个预选框,从这些框中选出一个最准确的作为输出(多一步预选的步骤)
- 一个阶段的算法(One-Stage):YOLO
- 直接画出方框
根据任务需求来定的
使用一个阶段(One-Stage)的算法的优缺点
- 优点:速度非常快,适合做实时检测
- 缺点:效果上可能有时候不太好
使用两个阶段(Two-Stage)的算法优缺点
- 优点:精度和识别效果比较好
- 缺点:速度比较慢
理解:就是因为一阶段是直接画出方框,而需要两个阶段的算法需要画出多个框,Two-Stage的速度会变慢,但精度上却可以提高。我们可以通过判断一个算法是多阶段还是单阶段来大致确定这个算法是适合实时检测还是适合离线检测
目标检测中的指标
MAP指标
MAP可以综合衡量检测效果。
精度‘:预测框和实际框是否吻合,吻合的程度有多少。
召回率(Recall):有没有没检测到的框,衡量了有多少是没有检测到的。
这两个是一个矛盾的关系,就是一个高,另一个就是低,这样相当于有两个变量,很难确定什么情况下才是好的,所以我们需要引入一个能够衡量总体精度的一个指标,就是MAP
对于召回率我们可以这样理解,召回率就是指你检测到了多少个框(与实际的相比),比如原本有4个实际的框,但现在只检测出来三个,这个时候召回率就会比较小,而精度是指对于某个预测框他的检测结果好不好。
简单来说,精度是表示检测效果好不好,召回率是检测到了多少。
解释MAP之前需要了解三个指标
1.IOU指标
IOU指标就是交并比,也就是交集和并集的比值。
- 这里的交集是指==预测框(Predition)和实际框(Ground truth)==之间的交集的区域(可以联系Venn图)
- 这里的并集是指==预测框(Predition)和实际框(Ground truth)==之间的并集的区域(可以联系Venn图)
我们可以这样理解,如果预测框和实际框交集的区域越大,说明预测框和实际框的重合程度很高,对于并集的区域,如果预测框和实际框的并集的区域越小,也可以说明预测框和实际框的重合程度很高。
而如果我们将这两个值比起来,也就是如果分子越大,分母越小,那么IOU这个指就会变,也就是说,IOU就可以直接代表预测框和实际框的一个重合程度,IOU越大,重合程度就越高,反之就是越小。
2.对于精度和召回率的分析
Precision(精度)
P r e c i s i o n = T P T P + F P Precision = \frac{TP}{TP+FP} Precision=TP+FPTP
Recall(召回率)
R e c a l l = T P T P + F N Recall = \frac{TP}{TP+FN} Recall=TP+FNTP
上面两个公式里面的参数分别代表了:
我们来用一个例子去理解:
- TP(True Positives): True代表做对了,就可以表示检测正确的个数,比如放到上面的例子就是代表了一共20个女生,现在选出来了20个女生,那么表示分对了,所以TP=20(其实就是指判断正确的个数)
- FP(False Positives):False表示做错了,表示的意思就是本来是错误的,但却判断成正确的,放到上面的例子就是要找所有的女生,虽然找到了所有的女生,但却把30个男生当成女生选了出来,这就是把错误的认成正确的,就是FP,上例中FP=30(其实就是错误的判断成正确的个数)
- FN(False Negatives):False表示做错了,表达的意思就是本来是正确的,但判断成错误的了,放到上面的例子就是所有的女生都找出来了,没有存在漏的,所以FN=0(其实就是表示正确的判断成错误的个数)
- TN(True Negatives):True代表做对了,表达的意思就是错误的判断成错误的个数,上例中就是指30名男生挑出来之后,剩下的就是被错误判断成男生的了,因为他们真的是男生。TN=50(其实就是表示判断错误的个数)
在上面的例子中,选出来的50个人是正样本,另外50个人是负样本
正样本就是自己预测出来的。
那么TP就是正样本中分对的,FP是正样本中分错的,FN是负样本中分错的,TN是负样本中分错的
用上面的图来理解就是这样的,正样本就是指预测出来的部分,负样本就是指在预测结果之外的部分
现在我们回到公式:
P r e c i s i o n = T P T P + F P Precision = \frac{TP}{TP+FP} Precision=TP+FPTP 表示了预测正确的部分 占 预测结果的比例
R e c a l l = T P T P + F N Recall = \frac{TP}{TP+FN} Recall=TP+FNTP 表示了 预测正确的部分 占 实际部分的比例
所以通过上面的图我们可以很形象地去理解。
IOU就可以用那四个指标进行表示:
I O U = T P T P + F P + F N IOU=\frac{TP}{TP+FP+FN} IOU=TP+FP+FNTP
精度代表了预测框和检测框重合程度,召回率就是检测到了多少个
3.置信度阈值
因为一张图片的检测可能会有很多很多框,所以我们需要给定一个范围,只有达到这个范围才能显示出来。
比如:置信度设置为0.9,那么只有当概率超过0.9的时候才会说这个检测出来的是正确的。
经过上面的三个指标的引入,我们可以计算MAP了
- mAP就是AP的平均值(mean AP)这个指标是在不同的阈值上综合考虑 P r e c i s i o n Precision Precision和 R e c a l l Recall Recall的情况
4.mAP计算
只要我们计算了AP之后求平均就可以得到mAP了
那么我们可以根据不同的阈值和类别得到不同的Precision和Recall,然后我们把他们放到一张 P − R P-R P−R图表上
此时,我们只要计算出曲线下的面积,就是在不同阈值的前提之下得到不同的精度和召回率
A P = P r e c i s i o n × R e c a l l AP=Precision\times Recall AP=Precision×Recall
mAP就是对所有要检测的类别的结果取一个平均值(AP是针对某一类进行识别的精度)
m A P = ∑ i = 1 n u m _ c l a s s A P i n u m _ c l a s s mAP=\frac{\sum_{i=1}^{num\_class}AP_i}{num\_class} mAP=num_class∑i=1num_classAPi
下一节YOLOv1博客:https://blog.csdn.net/weixin_45709330/article/details/106780306