文章目录
本节学习目标:
- 了解⽬标检测的任务
- 知道⽬标检测的常⽤数据集
- 知道⽬标检测算法的评价指标
- 掌握⾮极⼤值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个类别,分别是:
整个数据的⽬录结构如下所示:

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

-
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 =




最低0.47元/天 解锁文章
769

被折叠的 条评论
为什么被折叠?



