CNN:目标检测Head

一、概述Object Detection

最早深度学习只支持一张图片包含单个目标时,对该图片进行classification或对图片中的单个物体进行classification with localization:

  • classification : 适用于一张图片中只有一个目标,以三分类为例 y = [ c1, c2, c3],直接使用softmax即可;
  • classification with localization: 是指在softmax给出分类结果的同时,同时期望给出目标的位置,需添加bounding box的4个参数(bx, by, w, h), 让网络回归出目标的具体位置,即 y = [pc, bx, by, bh, bw, c1, c2, c3]  

pc的作用:如果包含目标,则pc设为1,再去设定其他参数;如果不是目标,则pc设为0 。这样,对于常见的误检图片(负样本)也可以加入到数据中,降低误检)。

在此基础上,逐渐发展为支持一张图片有多个目标时给出每个目标的类型和位置,即我们现在说的目标检测object detection问题。

object detection: 基于上述classification with localization发展而来的最直观的目标检测算法是滑移窗口+classification算法:在图片内选择窗口,假设是一个窗口内只有一个object的假设,从而将窗口内的问题转化为Classification问题。滑移窗口相当于暴力搜索法,在空间滑移窗口以覆盖不同空间位置,同时,还需要选择不同尺度的窗口以覆盖不同尺度的目标。该方法的缺点是:

  • 计算量大,且涉及很多冗余计算;
  • 选择的窗口的位置肯定不能保证准确贴合目标位置的,但是也不适合使用滑移窗口+Classification and localization的方法,一方面由于目标有可能不是全部落在窗口中的,另一方面,增加回归bounding box的4个参数会使得计算量更大。

在实际发展中,逐渐发展了很多更简洁、快速、有效的算法。总体而言,根据是否先使用Region Proposal,分为Two-stages和One-stage;根据是否依赖预选框进行正负样本的定义和归一化,分为Anchor based和Anchor free的方法。Anchor based可以是Two stages,也可以是One stage的;Anchor free的方法一般属于One-stage。注意,这些方法中其实出现了3种box,不要混淆它们的概念:

  • Anchor box是一些预定义尺寸的box,实质是一些regression reference;
  • Region Proposal是基于Anchor box进行了一次Regression获得的class-independent的区域box,随后在该区域提取feature再进行class-dependent的Regression;
  • bbox是最终检测结果的框,无论是Anchor based还是Anchor free,无论是Two stages还是One stage,都会产生最终的bbox结果。

在之前的博客中我讲述了CNN网络的Backbone网络的发展历程很大程度地依赖于2010~2017年ImageNet数据集CNN:经典Backbone和Block_yly的博客-CSDN博客 的比赛(主要体现在分类任务),本文讲述的目标检测Head的优化发展更依赖于另一个数据集PASCAL VOC 2005-2012(数据集到2012年就不更新了,但评分网站一直开放,所以到今天为止不断有模型刷榜,算法排名可参见http://host.robots.ox.ac.uk:8080/leaderboard/main_bootstrap.php )上,本文我们主要使用其中的comp4的进行排名http://host.robots.ox.ac.uk:8080/leaderboard/displaylb_main.php?challengeid=11&compid=4

二、Two-stages  & Anchor based算法

先利用传统算法或CNN网络给出候选框,再在候选框上运行classification以及进一步回归优化候选框的精确位置。Girshick等人的一些列工作引出了anchor box方法和两阶段模型。

R-CNN (2014,Rich feature hierarchies for accurate object detection and semantic segmentation,VOC2007 mAP=49.6)中,使用三步完成目标检测:

A. 使用传统方法做Region proposals;

B. 将候选框Resize到固定尺寸后放入CNN网络中提取feature,并输出一个固定长度的feature vector;

C. 使用了传统的机器学习方法对提取的feature vector进行分类。

          图片引自Rich feature hierarchies for accurate object detection and semantic segmentation 

这里,只用CNN网络提取特征,对于每一个Region proposal都需要送进一次CNN网络,每张图片对应着~2k个Region proposal,这使得处理一张图片非常慢,无法做到实时;另外,由于最后只是使用了机器学习的方法对之前的Region proposal的候选框做了分类,检测框的定位取决于Region proposal的精度,一般不太不准确。 

在2015年的两篇论文中,先后对步骤C和步骤A进行了优化。

Fast R-CNN (2015,VOC2007 mAP=68.4),论文中针对上述问题,对步骤B和C进行了优化。针对步骤B,这里利用了数据共享,不再是把每一个Region proposal分别送进同一个CNN网络,而是先对整幅图像送入CNN网络提取feature map,随后,把该Region proposal区域投影到feature map,并把提取的feature map的RoI区域送入RoI pooling layer获得到固定尺度的feature map (在2017,Mask R-CNN中改为ROIAlign去除RoI pooling过程中带来的两次量化误差,以获得更准备的预测框位置);针对步骤C,使用网络的方法代替传统的机器学习,使得网络可以端到端地进行训练,使用Fully connected layers,并在softmax分类的基础上增加了bbox regressor头,使得检测框的定位更加准确。

                                                                    图片引自Fast R-CNN

该方法中,Region proposal还是使用传统机器学习方法。

Faster R-CNN (2015, Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks,VOC2007 mAP=70.4)中,针对步骤A进行了优化,直接使用CNN网络获得Region proposal,进一步做到Region proposal与提取特征共享计算。即在CNN输出的feature maps基础上加了一个RPN(Region Proposal Network)的头,随后,使用输出的Region proposal进行和上面Fast R-CNN类似的RoI pooling + Classifer(包括softmax分类和bbox regressor)。

  图片引自Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks  

其中,RPN网络的结构如下图所示,使用的sliding window是固定尺寸的3x3的feature送入Intermediate layer,reg layer中通过k个不同regressor来来保证分别优化回归k个anchor box。head的参数包括是否包含物体的二分类(2k个参数:属于物体,不属于物体的两分类softmax层;若使用logistic regression则可变为k个参数)和anchor bbox的参数回归获得Region proposals(4k个参数:box中心点的坐标和长宽(x,y,w, h))。RPN网络中正式提出了使用anchor boxes,anchor boxes是指在每一个3x3的window的feature中回归k个不同尺度和纵横比的boxex的参数(这里在每一个3x3的window中都使用了Anchor boxex,实质是滑移窗口的卷积实现,充分利用GPU的并行计算,并不是依次地进行滑移window)。在原论文中,作者使用了面积为128^2,256^2,512^2三种面积和1:1,2:1, 1:2三种比例分别配对,共9中anchor boxes(即k=9)。

     图片引自Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks 

anchor box有两个作用

第一,定义正负样本,即建立与标注的目标框真值的关系。

为了让Region Proposal这部分头输出propose的目标框,需要要确定标注的目标框真值与待预测量的对应关系,论文中,是通过anchor box建立和标注目标框真值的关系的,即把标注真值目标框与anchor box进行对应关联。具体实现是把所有与标注真值框有最高IoU的Anchor box以及与标注真值的IoU>0.7的Anchor box都作为positive label, 因此,一个标注真值框可能给多个Anchor box分配positive label。

“For training RPNs, we assign a binary class label (of being an object or not) to each anchor. We assign a positive label to two kinds of anchors: (i) the anchor/anchors with the highest Intersection-overUnion (IoU) overlap with a ground-truth box, or (ii) an anchor that has an IoU overlap higher than 0.7 with any ground-truth box. Note that a single ground-truth box may assign positive labels to multiple anchors. Usually the second condition is sufficient to determine the positive samples; but we still adopt the first condition for the reason that in some rare cases the second condition may find no positive sample. We assign a negative label to a non-positive anchor if its IoU ratio is lower than 0.3 for all ground-truth boxes. Anchors that are neither positive nor negative do not contribute to the training objective”

Anchor与标注真值框之间进行match的代码在Detectron2/detectron2/modeling/matcher.py中的实现如下:

class Matcher(object):
    """
    This class assigns to each predicted "element" (e.g., a box)
  • 6
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yuyuelongfly

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值