论文链接:https://arxiv.org/pdf/1311.2524.pdf
自制PPT与讲解视频链接:https://github.com/DHUB721/Object-Detection (注:仅个人理解,如有错误请多多指正,轻喷,谢谢!)
相关论文: OverFeat: Integrated Recognition, Localization and Detection using Convolutional Networks.
读完rbg大神的论文瞬间感觉这个世界有太多的惊喜,但还是有很多的疑惑。在经过多次研读与讨论之后,对疑惑提出自己的理解。
1. 训练过程是如何进行的?
(1)Supervised pre-training:作者将自己的CNN结构在ILSVRC 2012上进行预训练,目的是为了获得初始化权重。
(2)Domain-specific fine-tuning: 针对特定任务与特定域进行微调。We treat all region proposals with ≥ 0.5 IoU overlap with a ground-truth box as positives for that box’s class and the rest as negatives. 换中文说,就是依据一个IoU值确定训练的正负样本。 但是怎么知道推荐区域与哪个ground-truth box(标注文件)属于同一类别呢?即推荐区域应归为哪一类呢?我认为,这里CNN训练的目的是获取特征向量,不区分类别。
(3)Obiect category classifiers: We resolve this issue with an IoU overlap threshold, below which regions are defined as negatives. 换中文说,就是这个分类器依据另一个IoU值来区分负类与正类。但是怎么区分正类下的具体类别呢?所以针对每一个类别都训练一个SVM分类器(20个)
2. 测试阶段是如何进行的?
Given all scored regions in an image, we apply a greedy non-maximum suppression (for each class independently) that rejects a region if it has an intersection-over-union (IoU) overlap with a higher scoring selected region larger than a learned threshold.换中文说,就是对于同一个object来说会有多个region proposals,我们要根据又一个IoU值来拒绝一定的区域(即非极大值抑制算法)。 注意:这是SVM之后进行的操作,那么进行完NMS之后回归器对于剩余的多个区域进行修正,最后只保留得分最高的那个区域。
3. IoU是什么?用来干什么?
从Sec.1,2. 可以发现论文中一共用了四次IoU(上文三次+边界框回归过程一个IoU),那么IoU究竟是什么呢?
Intersection over Union是一种测量在特定数据集中目标检测准确度的一个标准,只要是在输出中得出一个预测范围(bounding box)的任务都可以用IoU来进行测量。计算IoU需要两个参数:I. ground-truth bounding box(来自标注文件);II. 预测的结果范围(来自算法)。
IoU相当于两个区域交集的部分除以两个区域的并集部分得出的结果。一般来说,这个score > 0.5 就可以被认为一个不错的结果了。
4. 非极大值抑制是什么?作用是什么?
在Sec. 2.中提到非极大值抑制算法,即对于同一个object来说会有多个region proposals,我们要根据又一个IoU值来拒绝一定的区域。那么这个IoU值是什么呢?涉及到哪两个集合呢?拒绝的阈值又是怎么设置的呢?
再来看一下原文:
Given all scored regions in an image, we apply a greedy non-maximum suppression (for each class independently) that rejects a region if it has an intersection-over-union (IoU) overlap with a higher scoring selected region larger than a learned threshold.
其实也不难理解,就是对于同一个object可能会有很多个region proposals,但我们不可能每个都要,我们希望得到一个与标注文件中label最接近的一个框,于是我们要删去这个object的其他框。
NMS具体实现:
先假设有6个矩形框,根据分类器的类别分类概率做排序,假设从小到大属于车辆的概率 分别为A、B、C、D、E、F。
(1)从最大概率矩形框F开始,分别判断A~E与F的重叠度IOU是否大于某个设定的阈值。
(2)假设B、D与F的重叠度超过阈值,那么就扔掉B、D;并标记第一个矩形框F是我们保留下来的。
(3)从剩下的矩形框A、C、E中,选择概率最大的E,然后判断E与A、C的重叠度,重叠度大于一定的阈值,那么就扔掉;并标记E是我们保留下来的第二个矩形框。
就这样一直重复,找到所有被保留下来的矩形框。
非极大值抑制(NMS)顾名思义就是抑制不是极大值的元素,搜索局部的极大值。这个局部代表的是一个邻域,邻域有两个参数可变,一是邻域的维数,二是邻域的大小。这里不讨论通用的NMS算法,而是用于在目标检测中用于提取分数最高的窗口的。例如在行人检测中,滑动窗口经提取特征,经分类器分类识别后,每个窗口都会得到一个分数。但是滑动窗口会导致很多窗口与其他窗口存在包含或者大部分交叉的情况。这时就需要用到NMS来选取那些邻域里分数最高(是行人的概率最大),并且抑制那些分数低的窗口。
5. 边界框回归是怎么做的?
边界框回归是针对定位不准确的问题,因此作者加了一个线性回归模型去修正检测结果,我认为这是论文的一大亮点。
拿一张经典的图来说明:
为了进一步提高定位的准确度,作者希望利用回归的方法对region proposal重新预测一个新的矩形框。至于为什么可以用线性回归模型做到这点,请参见:https://blog.csdn.net/qq_33254870/article/details/88887250