AI-For-Beginners/translations/zh/lessons/4-ComputerVision/11-ObjectDetection/README.md

10 KiB
Raw Blame History

物体检测

到目前为止,我们处理的图像分类模型接收一张图像并生成一个分类结果,例如在 MNIST 问题中的 'number' 类别。然而,在许多情况下,我们不仅想知道一张图片描绘了哪些物体 - 我们希望能够确定它们的精确位置。这正是 物体检测 的意义所在。

课前测验

物体检测

图片来自 YOLO v2 网站

一种简单的物体检测方法

假设我们想在一张图片中找到一只猫,一种非常简单的物体检测方法如下:

  1. 将图片分解为多个瓦片
  2. 对每个瓦片进行图像分类。
  3. 结果激活值足够高的瓦片可以认为包含了所需的物体。

简单物体检测

图片来自 练习笔记本

然而,这种方法远非理想,因为它只能让算法非常不精确地定位物体的边界框。为了更精确地定位,我们需要运行某种 回归 来预测边界框的坐标 - 为此,我们需要特定的数据集。

物体检测的回归

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

物体检测的数据集

您可能会遇到以下数据集用于此任务:

  • PASCAL VOC - 20 个类别
  • COCO - 上下文中的常见物体。80 个类别,边界框和分割掩码

COCO

物体检测指标

交并比

虽然对于图像分类来说,衡量算法性能是简单的,但对于物体检测,我们需要同时衡量类别的正确性以及推断的边界框位置的精确度。对于后者,我们使用所谓的 交并比 (IoU),它衡量两个框(或两个任意区域)重叠的程度。

IoU

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

这个概念很简单 - 我们将两个图形之间的交集面积除以它们的并集面积。对于两个相同的区域IoU 将为 1而对于完全不相交的区域IoU 将为 0。否则它将介于 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})

AP 和 IoU

我们只考虑那些 IoU 超过某个值的检测。例如,在 PASCAL VOC 数据集中,通常假设 \mbox{IoU Threshold} = 0.5,而在 COCO 中AP 是针对不同的 \mbox{IoU Threshold} 值进行测量的。

图片来自 NeuroWorkshop

平均平均精度 - mAP

物体检测的主要指标称为 平均平均精度,或 mAP。它是所有物体类别的平均精度的值,有时也会在 \mbox{IoU Threshold} 上进行平均。更详细地说,计算 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 分类器进行处理,以确定物体类别,并通过线性回归确定 边界框 坐标。官方论文

RCNN

图片来自 van de Sande 等人 ICCV11

RCNN-1

图片来自 这篇博客

F-RCNN - 快速 R-CNN

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

FRCNN

图片来自 官方论文arXiv2015

Faster R-CNN

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

FasterRCNN

图片来自 官方论文

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

该算法比 Faster R-CNN 更快。其主要思想如下:

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

r-fcn image

图片来自 官方论文

YOLO - 你只看一次

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

  • 将图像划分为 S\times S 区域
  • 对于每个区域,CNN 预测 n 个可能的物体、边界框 坐标和 置信度=概率 * IoU。

YOLO

图片来自 官方论文

其他算法

✍️ 练习:目标检测

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

ObjectDetection.ipynb

结论

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

🚀 挑战

阅读这些关于 YOLO 的文章和笔记本,并亲自尝试

课后测验

复习与自学

作业:目标检测

免责声明
本文件是使用机器翻译服务进行翻译的。虽然我们努力追求准确性,但请注意,自动翻译可能包含错误或不准确之处。原始文件的母语版本应被视为权威来源。对于关键信息,建议使用专业人工翻译。我们对因使用本翻译而产生的任何误解或错误解读不承担任何责任。