目标检测。

目标检测

目标检测即识别图片中有哪些物体及物体的坐标。然而,在目标检测中能检测出来的物体又受人为设定,它取决于当前任务(数据集)需要检测的物体有哪些。比如一个目标检测模型的当前任务是检测猫、狗、牛和羊这四种结果,那么模型对任何一张图片的输出结果绝对不会有猪等其他类型的结果。

以图片的左上角为原点(0,0),目标检测的位置信息一般有两种格式:

  1. 极坐标表示(标注、绘图):(xmin, ymin, xmax, ymax)左上角右下角
  • xmin,ymin:x,y坐标的最小值
  • xmax,ymax:x,y坐标的最大值
  1. 中心点坐标(网络输出):(x_center, y_center, width, height)中心点坐标和宽、高

IOU评价指标

IOU(intersection over union,交并比),即两个矩形框相交的面积/两个矩形框相并的面积。是目标检测算法中用来评价两个矩形框之间相似度的指标。公式如下:

I O U    =    A r e a    o f    i n t e r s e c t i o n A r e a    o f    u n i o n IOU\;=\;\frac{Area \;of \;intersection}{Area \; of \;union} IOU=AreaofunionAreaofintersection

在这里插入图片描述

当IOU大于一定的阈值(一般取0.5),则说明检测到目标物体。但是,数据集中的每一张图片可能包含着不同类别的其他物体,因此,用于图像分类问题的标准指标precision不能直接应用于此。

mAP评价指标

mAP(Mean Average Precision)是多个分类任务的平均值,而AP是图片中具体某一类Precision-Recall曲线下的面积。mAP则是计算所有类别Precision-Recall 曲线下面积的平均值。
m A P    = ∑ i = 1 C A P i C mAP \;=\frac{\sum_{i=1}^CAP_{i}}{C} mAP=Ci=1CAPi
其中,C为目标检测任务中的类别数量。

先回顾下在分类评估指标中有以下这么一些定义:

  • TP(True Postive):将正类预测为正类数,真实为0,预测也为0;
  • FP(False Positive):将负类预测为正类数, 真实为1,预测为0;
  • FN(False Negative):将正类预测为负类数,真实为0,预测为1;
  • TN(True Negative):将负类预测为负类数,真实为1,预测也为1;

在mAP评价指标中查准率和查全率计算公式如下:
P r e c i s i o n    = T P T P + F P    = T P a l l    d e t e c t i o n s Precision\;=\frac{TP}{TP+FP}\;=\frac{TP}{all \;detections} Precision=TP+FPTP=alldetectionsTP
R e c a l l    = T P T P + F N    = T P a l l    g r o u n d    t r u t h s Recall\;=\frac{TP}{TP+FN}\;=\frac{TP}{all \;ground \;truths} Recall=TP+FNTP=allgroundtruthsTP

  • TP: I O U > I O U t h r e s h o l d IOU\gt IOU_{threshold} IOU>IOUthreshold的检测框数量。(同一个Ground Truth只计算一次预测框为TP,若有多个预测框,则认为 IOU 最大且大于等于阈值的预测框标记为 TP)。
  • FP: I O U ⩽ I O U t h r e s h o l d IOU\leqslant IOU_{threshold} IOUIOUthreshold的检测框数量,或者是检测到同一个GT 的多余检测框的数量。
  • FN:没有检测到的 GT 的数量。

得到查准率和查全率之后,绘制P-R曲线就可以计算mAP。举个例子,假设我们有 7 张图片(Images1-Image7),这些图片有 15 个目标,也就是GT的数量;以及 24 个预测边框(红色的框,A-Y 编号表示,并且有一个置信度值):
在这里插入图片描述
然后将每张图片的检测框标记成TP还是FP:
在这里插入图片描述

并根据检测框的置信度进行降序排序,见下表:
)
然后依次计算每个标号的Precision和Recall为PR曲线(横轴为Recall,纵轴为Precision)的坐标点,例如标号1的Precision=1/(1+0)=1;Recall=1/15=0.066;那么就得到了PR曲线的第一个坐标(0.066,1).
标号20的Precision=6/(6+20)=0.3;Recall=6/15=0.4。坐标为(0.4,0.3)。其他标号同理,最后得出PR曲线如图下所示:
在这里插入图片描述
对于同一个Recall值,取Precision的最大值,如下图所示:
在这里插入图片描述
最后AP为曲线下的面积,即A1+A2+A3+A4的面积。
在这里插入图片描述

非极大值抑制(NMS)

在目标检测任务中,滑动窗口提取特征,经过分类器分类识别后,每个预测窗口都会得到一个置信度值。但是滑动窗口会导致很多窗口与其他窗口存在或者大部分交叉的情况。这时就需要用到NMS来选取那些邻域里分数最高(某一类物体的概率最大),并且抑制那些分数低的窗口,从而达到去除冗余的检测框,保留最好的一个的目的。

首先算法检测出所有预测框,其次将检测框按类别进行分类,将各个类别的检测框及其对应的置信度放入列表predict_list,假设当前predict_list为:[{‘bbox1’: ‘0.83’},{‘bbox2’: ‘0.93’},{‘bbox3’: ‘0.73’},{‘bbox4’: ‘0.63’},{‘bbox5’: ‘0.73’}],然后将置信度最大的预测框从列表B中抽出来放入列表result_list,此时predict_list和result_list变成:predict_list=[,{‘bbox2’: ‘0.53’},{‘bbox3’: ‘0.63’},{‘bbox4’: ‘0.43’}];result_list=[{‘bbox1’: ‘0.83’}],最后将result_list中的bbox1与变化后的predict_list中的其他检测框做IOU计算,IOU大于阈值的框从predict_list中移除,重复上述过程,直到predict_list为空,得到最终的检测结果。

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值