目标检测


文档摘要

目标检测 到目前为止,我们处理的图像分类模型都是输入一张图片并产生一个类别结果,比如在MNIST问题中的数字类别。然而,在许多情况下,我们不仅希望知道图片中是否包含物体,还希望能够确定它们的确切位置。这就是目标检测的核心。 课前测验 目标检测 图片来自YOLO v2 网站 目标检测的朴素方法 假设我们要在图片中找到一只猫,一个非常朴素的目标检测方法可以是这样的: 将图片分解成若干个格子(或称为“瓷砖”)。 对每个格子运行图像分类。 那些产生足够高激活值的格子可以被认为包含所寻找的对象。 朴素的目标检测 图片来自练习笔记本 然而,这种方法远非理想,因为它只允许算法粗略地定位对象的边界框。为了更精确的定位,我们需要运行某种形式的回归来预测边界框的坐标——为此,我们需要特定的数据集。

目标检测

到目前为止,我们处理的图像分类模型都是输入一张图片并产生一个类别结果,比如在MNIST问题中的数字类别。然而,在许多情况下,我们不仅希望知道图片中是否包含物体,还希望能够确定它们的确切位置。这就是目标检测的核心。

课前测验

目标检测

图片来自YOLO v2 网站

目标检测的朴素方法

假设我们要在图片中找到一只猫,一个非常朴素的目标检测方法可以是这样的:

  1. 将图片分解成若干个格子(或称为“瓷砖”)。
  2. 对每个格子运行图像分类。
  3. 那些产生足够高激活值的格子可以被认为包含所寻找的对象。

朴素的目标检测

图片来自练习笔记本

然而,这种方法远非理想,因为它只允许算法粗略地定位对象的边界框。为了更精确的定位,我们需要运行某种形式的回归来预测边界框的坐标——为此,我们需要特定的数据集。

目标检测的回归

这篇博客文章对检测形状有很好的入门介绍。

目标检测数据集

你可能会遇到以下这些数据集:

  • PASCAL VOC - 20类
  • COCO - 常见物体在上下文中的应用。80类,边界框和分割掩膜

COCO

目标检测指标

交并比

虽然对于图像分类来说,很容易衡量算法的表现,但对于目标检测,我们需要同时衡量类别的正确性和推断出的边界框位置的精度。对于后者,我们使用所谓的交并比(IoU),它衡量两个区域(或两个任意面积)的重叠程度。

交并比

图2来自这篇关于IoU的优秀博客文章

简单地说,我们把两个图形的交集面积除以它们的并集面积。对于完全相同的区域,IoU为1;对于完全不相交的区域,IoU为0。否则,IoU将在0到1之间变化。通常,我们只考虑那些IoU超过一定阈值的边界框。

平均精度

假设我们要测量某一类物体C的识别效果。为了衡量这一点,我们使用平均精度指标,计算方法如下:

  1. 考虑精确度-召回率曲线显示了根据检测阈值(从0到1)的准确性。
  2. 根据阈值的不同,图像中检测到的对象数量和精确度与召回率的值都会有所不同。
  3. 曲线看起来像这样:

图片来自NeuroWorkshop

给定类C的平均精度是该曲线下的面积。更确切地说,召回率轴通常被分为10个部分,并且在所有这些点上取精度的平均值:

AP = {1\over11}\sum_{i=0}^{10}\mbox{Precision}(\mbox{Recall}={i\over10})

IoU 和平均精度

我们将只考虑那些IoU超过一定阈值的检测。例如,在PASCAL VOC数据集中,通常假定\mbox{IoU阈值} = 0.5,而在COCO数据集中,AP是在不同\mbox{IoU阈值}下测量的。

图片来自NeuroWorkshop

平均平均精度 - mAP

目标检测的主要指标称为平均平均精度,或mAP。它是所有对象类别的平均精度,有时也包括\mbox{IoU阈值}。更详细地说,计算mAP的过程在这篇博客文章中有描述,还有这里附带代码示例

不同的目标检测方法

有两种广泛类别的目标检测算法:

  • 区域建议网络(R-CNN、Fast R-CNN、Faster R-CNN)。主要思想是生成感兴趣区域(ROI),然后通过CNN进行处理,寻找最大激活值。这有点类似于朴素的方法,只不过ROI是以更聪明的方式生成的。这类方法的一个主要缺点是速度较慢,因为我们需要多次通过CNN分类器来处理图像。
  • 一次通过(YOLO、SSD、RetinaNet)方法。在这些架构中,我们设计网络以一次通过的方式预测类别和ROI。

R-CNN:基于区域的CNN

R-CNN 使用选择性搜索生成层次结构化的ROI区域,然后通过CNN特征提取器和SVM分类器来确定对象类别,并使用线性回归来确定边界框坐标。官方论文

R-CNN

图片来自van de Sande等人,ICCV'11

R-CNN-1

图片来自这篇博客

F-RCNN - 快速R-CNN

这种方法与R-CNN类似,但区域是在卷积层应用之后定义的。

F-RCNN

图片来自官方论文arXiv,2015

Faster R-CNN

这种方法的主要思想是使用神经网络来预测ROI——所谓的区域建议网络论文,2016

Faster R-CNN

图片来自官方论文

R-FCN:基于区域的全卷积网络

这个算法甚至比Faster R-CNN还要快。主要思想如下:

  1. 使用ResNet-101提取特征。
  2. 特征经过位置敏感得分图处理。每个类C的对象被划分为k\times k区域,我们训练以预测对象的部分。
  3. 对于每个k\times k区域的部分,所有网络对对象类别进行投票,选择得票最多的类别。

R-FCN图像

图片来自官方论文

YOLO - 你只需看一次

YOLO是一种实时的一次通过算法。主要思想如下:

  • 图像被分成S\times S区域
  • 对于每个区域,CNN预测n个可能的对象、边界框坐标以及置信度=概率 * IoU。

YOLO

图片来自 官方论文

其他算法

✍️ 练习:目标检测

请继续在以下笔记本中学习:

ObjectDetection.ipynb

结论

在这节课中,你快速了解了实现目标检测的各种方法!

挑战

阅读这些关于 YOLO 的文章并亲自尝试它们。

课后测验

复习与自学

作业:目标检测

声明:
本文件灏天文库团队进行了翻译。尽管我们力求准确,但请注意,翻译可能包含错误或不准确之处。原文档以其原始语言为准。我们不对因使用此翻译而产生的任何误解或误译负责。


作者与出处
原作者: microsoft
来源:microsoft
许可证:MIT
整理: 灏天文库整理
由灏天文库结构化整理,提供目录导航、全文检索与在线阅读,便于系统化学习
发布者: 作者: microsoft 转发
评论区 (0)
U