What is detection?

  • detection 的任务就是 classification+localization


深度学习中目标检测Object Detection的基础概念及常用方法 - lunaY - 博客园 - 图1

cs231n 课程截图

从左到右:语义分割 semantic segmentation,图片分类 classification,目标检测 detection,实例分割 instance segmentation

关键术语

  • ROI Region Of Interest 感兴趣区域,通常可以理解成图片中可能是物体的区域。 输入图片可以预先做一些标记找到候选框 proposal
  • bounding box 在 localization 任务里的概念, 即给出物体在图片中的定位区域
    • 一般表示为 (top, left, bottom, right) or (left, top, right, bottom). (left, top) 为 bbox 左上角的坐标,(right, bottom) 为右下角的坐标
  • IoU Intersection of Union 定义两个 bbox 的重叠程度 = (A 交 B) / (A 并 B) ,用于评价算法结果和人工标注 (ground-truth) 的差别


深度学习中目标检测Object Detection的基础概念及常用方法 - lunaY - 博客园 - 图2

方法

two stage

将问题分两个阶段解决:首先从原图选出一系列候选框 (object proposal) 作为图中各个物体可能的 bbox;然后将这些候选框输入到网络中,得出框的分类结果 (多分类,是哪一类物体 or 背景?) 和框的回归结果(坐标定位的准确值)

R-CNN

在第一阶段使用 selective search 这类 region proposal method 来得出一系列 proposal;阶段二将每个 region proposal 分别输入到 CNN 网络中,提取出特征向量,然后交给 SVM 分类器。

  • 因为是将 proposal 分别输入到网络,也就是针对各个 region 进行分类和回归,因此称为 Region-based CNN
  • 局限在于涉及很多重复计算(选出来的 region 很可能一大部分都是互相重叠的);而且 selective research 的效率不高

Fast R-CNN

在阶段二,针对 R-CNN 将每个 proposal 分别输入到网络带来的许多重复计算做出改进,提出直接将整张图输入到网络,只是在分类之前添加 ROI pooling 层,将阶段一提取出来的 proposal(也就是 ROI) 映射到特征图中【注意阶段一提出来的 proposal 坐标是在原图坐标系下,因此还包括一个从原图尺度到当前特征图尺度的转换,一般是乘上缩放倍数】。

另一方面,Fast R-CNN 也简化了整体的训练过程,不同于 R-CNN 将提取特征的网络、SVM 分类、bbox 回归看做三个独立的训练阶段,Fast R-CNN 通过在网络中添加分类损失 softmax loss 和回归损失 regression loss,结合两个损失 (一般是加权求和),得到 multi-task 的 loss,用其训练网络,使训练过程简化为只有一个阶段。

Faster R-CNN

Fast R-CNN 提高了效率,但在阶段一仍然使用的是 selective search 之类的方法,阶段一和阶段二之间是分离的,这意味着训练的时候并不能做到端到端 (end to end) 的训练,换句话说,如果阶段一出现了错误导致阶段二表现不好,这个不好的结果无法在训练的时候回传到阶段一去使其做出调整。

因此 Faster R-CNN 提出了 RPN(Region Proposal Network),将阶段一提取 proposal 的任务也用一个网络来解决,并且让阶段一和阶段二的网络共享一部分权值,从而节省了许多算力。


深度学习中目标检测Object Detection的基础概念及常用方法 - lunaY - 博客园 - 图3

Faster R-CNN architecture

Faster R-CNN = RPN + Fast R-CNN

图中可以看出 RPN 与 Fast R-CNN 两个网络共享了用来提取特征的卷积层,而得出特征图之后,RPN 继续生成 proposal,将 RPN 的输出与之前提取的特征图通过 ROI pooling 之后,作为 Fast R-CNN 后续部分的输入,得到分类结果与回归结果

RPN

RPN 做的事情只是先粗略地提取出一堆候选框,通过网络进行分类(二分类,是物体 or 背景?)以及回归,得到较为准确的候选框,然后送入 Fast RCNN 进行更细致的分类与回归

提出概念 anchor:

  • anchor 是在原图上的
  • anchor 以特征图上每个像素为中心,假设 RPN 的最后一层特征图尺寸为 f f,原图的尺寸为 n n,则 anchor 其实就是在原图 n n 上均匀地采 f f 个候选框,该候选框的面积和长宽比例是预定义的(anchor 的参数)
  • anchor 可以理解为 从特征图上的一点 s ,对应回原图的区域 S,注意这里的对应区域并不等于感受野。
  • 同一个中心点,可以有多种形状\面积的 anchor,代表着不同形状 / 面积的区域。
  • 判断 anchor 是否属于物体,其实就是看在原图的区域里是否包含有物体,如果只有一部分的物体,则可能说明 anchor 取的面积比较小
  • 换句话说,anchor 其实就是对 ground-truth bbox 的一个 encode。一张原图上分布有多个 anchor,如果某一区域有 ground-truth 的 bbox,它的类别标签是 c,则与这个区域交叠的 anchor,其分类目标应该为类别 c,其回归目标应该为与 ground-truth bbox 的 offset。

one stage

直接在整张图片上采样一系列的候选框

  • 二者的区别,两阶段的方法中,对于稀疏的候选框集进行分类;单阶段则是将分类器应用到对原图进行常规地、稠密地采样得到的候选框集。
    • 什么叫单阶段是常规地采样?因为两阶段的方法中,有一些可能会使用 learning 的方法进行采样,而单阶段则可能直接根据预先定义好的 anchor 数量尺寸等参数 在原图均匀地采样

共同存在问题

多尺度

不同物体有不同种尺寸,有的网络可能比较倾向于检测出大尺寸的物体 (在图像中占面积比较大),而难以应对小物体

image pyramid

将同一张输入图像 resize 为多种尺寸,然后分别输入到网络中,将检测结果综合起来

feature pyramid

只用一张输入图像,但使用网络中来自不同层的特征图(不同层则意味着特征图尺寸不同),分别进行分类和回归,将结果综合起来

平移不变性

样本不均衡


输入:

  • 输入图片可能是多尺度的
    • 输入的图片可能是同一张图的不同缩放版本,有的早期网络只能接受固定尺寸的输入,因而需要对图片进行剪裁、拉伸、压缩等操作来满足尺寸要求
  • 由于一张图片中可能有多个物体,因此大多数方法都可以理解成,将一张图片切分成多张子图,分别输入到网络中

网络:

  • 正负样本不均衡 class imbalance between positve and negtive
    • 训练时,正样本(物体)远少于负样本(背景)的个数,这在 one-stage 的方法中非常常见,因为 one stage 是进行稠密地采样得到候选框
    • 解决方法:
      • hard negative mining,计算分类损失的时候,只用正样本和一部分的负样本来算 loss,这些被选取的负样本 分类到背景的置信度较低(也就是分类正确的置信度较低),称为 “难负样本”
      • focal loss,认为应该让所有样本都参与到分类损失的计算中,根据分到正确类别的置信度来调整权重,也就是说,那些 易分的样本(分到正确类别的置信度较高)权重则相应调低,难分的样本(分到正确类别的置信度较低) 权重则相应调高。
  • ROI pooling,两个作用:
    • 将 ROI 从原图映射到 feature map 上,从而只需将一整张原图输入到网络,而不是将原图中不同的 ROI 分别输入网络;
    • 将不同的 ROI 都 pooling 成固定的尺寸,也就是使得不同大小的 ROI 通过池化输出固定尺寸的特征向量,便于后续的分类与回归
  • anchor
    • 某类方法会使用,预先定义好候选框的尺寸和比例,训练时需要 encode ground-truth bbox 为 anchor 的形式,regression 分支的 target 是 offset between anchor and ground-truth bbox,对于输出需要 decode anchor 为最终预测的 bbox 位置 (其实就是加上 offset)

输出:

  • NMS 非极大值抑制
    • 可能一个物体的实际 bbox,周围有好几个候选框都被检测出来,也就是对应着好几个检测结果,这时需要根据 confidence (理解为分类得分) 抑制那些非最大值,只保留 confidence 高的检测结果
  • 评判标准
    • TP,FP 计算 precision 和 recall
    • mAP, mean average precision,VOC 的 11-point 方法,取不同的 threshold,计算 precision 和 recall,画出 P-R curve

参考资料

2D 总结 https://zhuanlan.zhihu.com/p/34142321

https://zhuanlan.zhihu.com/p/34179420 模型的评测与训练技巧

https://blog.csdn.net/JNingWei/article/details/80039079 他人总结的 框架图的形式解释各个类别

EOF

深度学习中目标检测Object Detection的基础概念及常用方法 - lunaY - 博客园 - 图4
https://www.cnblogs.com/notesbyY/p/10986930.html