《目标检测》——基础理论知识(目标检测的数据集、评价指标:IOU、mAP、非极大抑制NMS)


本节学习目标:

  • 了解⽬标检测的任务
  • 知道⽬标检测的常⽤数据集
  • 知道⽬标检测算法的评价指标
  • 掌握⾮极⼤值NMS算法的应⽤
  • 了解常⽤的⽬标检测算法分类

1.目标检测

⽬标检测(Object Detection)的任务是找出图像中所有感兴趣的⽬标,并确定它们的类别和位置。
在这里插入图片描述
⽬标检测中能检测出来的物体取决于当前任务(数据集)需要检测的物体有哪些。假设我们的⽬标检测模型定位是检测动物(⽜、⽺、猪、狗、猫五种结果),那么模型对任何⼀张图⽚输出结果不会输出鸭⼦、书籍等其它类型结果。

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

1.极坐标表示(xmin,ymin,xmax, ymax)

  • xmin,ymin:x,y坐标的最小值,即图片的左上角
  • xmax,ymax:x,y坐标的最大值,即图片的右下角

2.中心点坐标表示(x_center, y_center, w, h)

  • x_center, y_center:目标检测框的中心点坐标
  • w,h:目标检测的宽和高

示例:假设在下面的图像中进行检测:
在这里插入图片描述
那⽬标检测结果的中⼼点表示形式如下所示:
在这里插入图片描述

2.常用的开源数据集

经典的⽬标检测数据集有两种,PASCAL VOC数据集 和 MS COCO数据集。

2.1 PASCAL VOC数据集

PASCAL VOC是⽬标检测领域的经典数据集。PASCAL VOC包含约10,000张带有边界框的图⽚⽤于训练和验证。PASCAL VOC数据集是⽬标检测问题的⼀个基准数据集,很多模型都是在此数据集上得到的,常⽤的是VOC2007和VOC2012两个版本数据,共20个类别,分别是:
在这里插入图片描述

整个数据的⽬录结构如下所示:
在这里插入图片描述
其中:

  1. JPEGImages存放图⽚⽂件

  2. Annotations下存放的是xml⽂件,描述了图⽚信息,如下图所示,需要关注的就是节点下的数据,尤其是bndbox下的数据.xmin,ymin构成了boundingbox的左上⻆,xmax,ymax构成了boundingbox的右下⻆,也就是图像中的⽬标位置信息
    在这里插入图片描述

  3. ImageSets包含以下4个⽂件夹:
    ①Action下存放的是⼈的动作(例如running、jumping等等)
    ②Layout下存放的是具有⼈体部位的数据(⼈的head、hand、feet等等)
    ③Segmentation下存放的是可⽤于分割的数据。
    ④Main下存放的是图像物体识别的数据,总共分为20类,这是进⾏⽬标检测的重点。该⽂件夹中的数据对负样本⽂件进⾏了描述。(train.txt就是训练集的数据,val.txt就是验证集的数据。)
    在这里插入图片描述

2.2 MS COCO数据集

MS COCO的全称是Microsoft Common Objects in Context,微软于2014年出资标注的Microsoft COCO数据集,与ImageNet竞赛⼀样,被视为是计算机视觉领域最受关注和最权威的⽐赛之⼀。
COCO数据集是⼀个⼤型的、丰富的物体检测,分割和字幕数据集。这个数据集以场景理解为⽬标,主要从复杂的⽇常场景中截取,图像中的⽬标通过精确的分割进⾏位置的标定。图像包括91类⽬标,328,000影像和2,500,000个label。⽬前为⽌⽬标检测的最⼤数据集,提供的类别有80类,有超过33 万张图⽚,其中20 万张有标注,整个数据集中个体的数⽬
超过150 万个。
图像示例:
在这里插入图片描述
COCO数据集使用JSON文件来描述的。

3.目标检测常用的评价指标

3.1 IOU

在⽬标检测算法中,IoU(intersection over union,交并⽐)是⽬标检测算法中⽤来评价2个矩形框之间相似度的指标。

IoU=两个矩阵框相交的面积/两个矩阵框相并的面积

如下图所示:
在这里插入图片描述
示例;
在这里插入图片描述

其中上图蓝⾊框框为检测结果,红⾊框框为真实标注。
那我们就可以通过预测结果与真实结果之间的交并⽐来衡量两者之间的相似度。⼀般情况下对于检测框的判定都会存在⼀个阈值,也就是 IoU 的阈值,⼀般可以设置当 IoU 的值⼤于 0.5 的时候,则可认为检测到⽬标物体。

实现方法:

import numpy as np
#定义方法来计算IOU
def IOU(box1, box2, wh=False):  #wh为True时表明时中心坐标
    #判断他的表示形式
    if wh==False:
        #极坐标表示
        xmin1, ymin1, xmax1, xmax1 = box1
        xmin2, ymin2, xmax2, ymax2 = box2
    else:
        #中心坐标表示
        #获取第一个框
        xmin1, ymin1 = int(box1[0] - box1[2]/2.0), int(box1[1] - box1[3]/2.0)
        xmax1, ymax1 = 
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值