十一、目标检测

上一章:十、生成对抗网络

下一章:十二、分割(Segmentation)

更多章节:人工智能入门课程


目录

课前练习

一种简单的目标检测方法

目标检测中的回归

目标检测的数据集

目标检测评价指标

交并比(Intersection over Union)

平均精度

AP和IoU

平均精度均值 - mAP

不同的目标检测方法

R-CNN: 基于区域的卷积神经网络

F-RCNN - Fast R-CNN

Faster R-CNN

R-FCN: 基于区域的完全卷积神经网络(Region-Based Fully Convolutional Network)

YOLO - 只需要一次检测(You Only Look Once)

其他算法

✍️ 练习: 目标检测

总结

挑战

课后练习

复习与自学

作业: 目标检测


我们之前讨论的图像分类模型会接收一个图像并生成一个分类结果例如MNIST问题中的类别“数字”然而在很多情况下我们不仅仅想知道图像描述了什么物体--我们希望能够确认它们的确切位置这是目标检测object detection的意义所在

课前练习

图像摘自YOLO v2 web site

一种简单的目标检测方法

假设我们想从一张图片中找到一只猫一个非常简单的目标检测的方法如下

  1. 将图像划分成多个网格块
  2. 在每个网格块上进行图像分类
  3. 对那些分类结果达到一定阈值的块我们可以认为它们包含目标物体

图像摘自 练习笔记

这种方法远非理想因为它只能让算法非常不精确的定位目标的边界框为了更准确的定位我们需要引入某些形式的回归技术来预测边界框的坐标--这种技术需要用到特殊的数据集进行训练

目标检测中的回归

 这篇博客文章 对形状检测进行了优雅的介绍。

目标检测的数据集

在进行目标检测任务时您可能需要用到如下数据集

  • PASCAL VOC - 包含20个类别
  • COCO  - 上下文中的常见物体.包含80个分类, 不仅包含边界框的标记还包括分割掩码的标记

目标检测评价指标

交并比(Intersection over Union)

对于图像分类衡量算法性能非常容易但对于目标检测我们需要同时评估分类的正确性与边界框位置推断的准确性为了评估边界框的准确性我们将使用所谓的交并比Intersection over Union简称IoU),来测量两个框或者两个任意区域的重叠程度

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

它的概念很简单-我们用两个图形的交集的面积除以它们并集的面积对于两个完全相同的的区域IoU是1,对于完全分离的两个区域IoU是0。其他情况它会在01之间变化。我们通常只考虑那些IoU超过某个特定阈值的边界框。

平均精度

假设我们想衡量识别给定类型的目标$C$的识别程度为了衡量它我们使用平均精度指标其计算方法如下

  1. 考虑精确率-召回率(Precision-Recall)曲线,该曲线显示算法在不同阈值(01)下的准确度的变化情况
  2. 根据不同的阈值我们将在图像中检测到或多或少的目标并且得到不同的精确率和召回率
  3. 曲线将如下所示 

I图像摘自 NeuroWorkshop

给定分类$C$的平均精确率是曲线下面的区域更准确的说,召回率X轴通常(由11个点)分成10份,并且在所有这些点上对精准率进行平均

解释:

  • TP(True Positive):真正例,表示模型正确地将正样本分类为正样本。也就是模型预测为正样本且实际上是正样本的数量。

  • FP(False Positive):假正例,表示模型错误地将负样本分类为正样本。也就是模型预测为正样本但实际上是负样本的数量。

  • FN(False Negative):假反例,表示模型错误地将正样本分类为负样本。也就是模型预测为负样本但实际上是正样本的数量。

  • TN(True Negative):真反例,表示模型正确地将负样本分类为负样本。也就是模型预测为负样本且实际上是负样本的数量。

  • 召回率 (Recall): 是指模型正确检测出的正样本占所有正样本的比例。Recall=TP/(TP+FN)
  • 精确率 (Precision): 是指模型识别为正样本的样本中,实际为正样本的样本所占的比例。Precision=TP/(TP+FP)
  • 阈值 (Threshold): 是一个用于进行分类的数值,高于该阈值的判定为正例,低于该阈值的判定为负例。

AP=(1/11)\sum_{i=0}^{10}P_{interp(i)} 

其中P_{interp(i)}为将召回率使用11个插值{0,0.1,0.2 ...0.9,1}平均分为10份,第i个插值的精确度。第i个召回率插值对应的精确度的计算方法(插值函数(interp))一般为:召回值大于当前召回值插值,且小于下一个召回值插值区间的最大精确度。

AP和IoU

我们仅考虑那些交并比IoU高于一定值的检测结果例如PASCAL VOC数据集中通常假设IoU阈值为0.5。但在COCO AP中则会使用不同的IoU阈值来测量准确度

图像摘自NeuroWorkshop

平均精确率均值 - mAP

目标检测的主要度量标准是所谓的平均精确率均值(Mean Average Precision),或者说mAP。它是平均精确率的均值是模型对样本中所有物体类别识别的平均精确率(AP)的平均值有时也会考虑不同的IOU 阈值进行平均更详情的mAP的计算过程在在这篇博客文章中有描述同时这有示例代码

不同的目标检测方法

目标检测算法主要分为两大类

  • 区域候选网络R-CNNFast R-CNNFaster R-CNN)。主要思想是生成感兴趣区域(Regions of Interests (ROI)) ,然后在这些区域上运行卷积神经网络CNN),寻找激活值最大的区域。这类似于朴素方法区别在于ROI以更巧妙的方式生成兴趣区域这种方法主要的缺点是它们执行速度很慢,因为我们需要对图像进行多次CNN分类器的传递(需要将 CNN 分类器多次作用于图像上,分别在不同区域进行分类)。
  • 单次传递方法One-pass (YOLO, SSD, RetinaNet) methods).在这些架构中我们设计网络通过一次传递来同时来预测类别和ROI这种方法的优点:这类方法速度更快,因为只需要一次正向传播 (forward pass) 就可以完成检测和分类。正向传播是指信息从网络的输入层向前传递到输出层的过程。

R-CNN: 基于区域的卷积神经网络

R-CNN 使用选择性搜索算法Selective Search生成层级结构的ROI区域然后将这些区域依次通过卷积神经网络提取特征,然后使用支持向量机分类器SVM-classifiers来确定对象类别使用线性回归来确定边界框坐标官方文件

图像由van de Sande et al. ICCV’11提供

图片出自这个博客

F-RCNN - Fast R-CNN

这个方法与R-CNN类似,但区别是输入图片经过卷积层处理之后再提取兴趣区域。

图像由 the Official PaperarXiv, 2015提供

Faster R-CNN

这种方法的主要思想是使用神经网络预测ROI-区即选网络Region Proposal Network)。论文,2016

图像由the official paper提供

R-FCN: 基于区域的完全卷积神经网络(Region-Based Fully Convolutional Network)

R-FCN算法甚至比Faster R-CNN更快它的主要思想如下

  1. 我们使用ResNet-101 提取特征数据
  2. 使用位置敏感得分图Position-Sensitive Score Map)处理提取到的特征。得分图使用C个类别中的每个类别分别将输入特征分成k*k个区域,同时训练(C层)网络来预测各个子区域的目标分类。我们将得到每个子区域可能是哪些目标分类(一个子区域可能同时被识别为多个分类)。
  3. 所有的网络对k*k个区域中的每个区域进行目标类别投票票数最多的类别即为该区域所属的类别
  • R-FCN 的优点:
  • 比 Faster R-CNN 速度更快,因为 R-FCN 采用完全卷积的架构,可以避免大量的重复计算。
  • 仍然可以保持较好的检测精度。
  • R-FCN 的缺点:
  • 可能需要更多的训练数据才能达到最佳性能。
  • 总而言之,R-FCN 通过采用完全卷积的架构和投票机制,在提升检测速度的同时,基本保持了 Faster R-CNN 的精度水平。

图像由官方论文提供

YOLO - 只需要一次检测(You Only Look Once)

YOLO 是一种实时的一次检测one-pass算法主要思想如下

  • 图像被划分为一个S*S网格
  • 对于每个网格CNN预测n种可能存在的目标每个目标的边界框的坐标以及置信度confidence)= 概率probability )*交并比IoU

图像由官方论文提供

其他算法

✍️ 练习: 目标检测

在以下代码笔记中继续您的学习

ObjectDetection.ipynb

总结

在这节课中您快速的浏览了所有可以完成检测的各种方法

挑战

通读这些关于YOLO的文章和笔记本并请您自己尝试这些方法

课后练习

复习与自学

作业: 目标检测


上一章:十、生成对抗网络

下一章:十二、分割(Segmentation)

更多章节:人工智能入门课程

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值