R-CNN目标检测第三弹(Faster R-CNN)

今天,重看了 R-CNN 的终极改进版本 Faster R-CNN(NIPS 版)-本文提到的paper,若为特别指明,说的就是此版本。

先说一个学术趣事吧,R-CNN 的 一作是RGB大神,大神的导师也是DPM检测方法的作者;受到微软亚研院 Kaiming HeRGB博士SPP-Net工作的启发,RGB大神博士毕业后在微软 redmond 研究院做出了 Fast R-CNN;而本篇paper,则是Kaiming 和 RGB的合作产生;今年CVPR17 的mask R-CNN也是两位大神的大作。大神们的合作,我等只能膜拜...

闲话以后再扯,我们就来看这一次改进是怎么让 R-CNN faster的。

01 缘起

1.1、Fast R-CNN的不足

尽管 Fast R-CNN通过 ROI Pooling Layer实现了对proposal深度特征的快速提取,又通过multi-loss的联合训练进一步提升了mAP。但是它依旧不完全是一个end-2-end的工作,下面详细列出:

和R-CNN一样,Fast R-CNN的region proposal生成依旧严重依赖于 Selective Search算法(简写为SS算法)。不仅在于SS算法比较耗时,还在于SS算法得到的proposal不一定适合于detection network。

1.2、Fast R-CNN的主要解决手段

针对 Fast R-CNN 存在的上述问题,Faster R-CNN主要采用以下方式来解决:

1、设计专门用于region proposal generating的网络:region proposal networks。该网络和fast r-cnn中的检测网络共享 conv layer的参数,通过anchor box来生成多个 region proposal,并给出每个proposal的object-ness score

2、设计multi-loss来对该 region proposal network进行优化。此外,依次对参数共享的region proposal network和detection network进行交替训练。

本文在Fast R-CNN 的基础上,采用其原有的detection network来对每张图片中的region proposal进行分类和重定位。另一方面,设计了Region Proposal Network 来生成proposal。

下面,我们主要探讨 region proposal network的构造与优化

02 Region proposal network

paper作者希望设计基于CNN model的region生成机制。

A Region Proposal Network(RPN)(也是CNN model)的以任意size的图像作为输入,输出一系列矩形目标proposals,每个proposal都自带一个object-ness score

为了节省计算量,作者将RPN前半部分的卷积层设计为和detection network的卷积层为共享(shared),在最后一层共享的conv layer后,作者设计了如下的类似sliding window的机制来生成proposal,并得到每个proposal的object-ness score。详细如下:

2.1、后续的proposal如何生成?

1、基本的生成流程

为了生成 region proposals,在最后一个共享 conv layer输出的conv feature map上,上下左右滑动一个小型的network。这个network全连接到conv feature map上的 (n,n)大小的子窗口上,对应每个子窗口,network的输出就是一个低维向量(256-d for ZF,512-d for VGG16)。而这个低维向量后面跟了两个分开的全连接层,其中一个是分类层:负责判定子窗口得到的proposal为object的概率,即计算object-ness score;而另一个则是回归层:负责对子窗口的位置信息进行更新(类似于detection network中的),即计算更精确的proposal的位置。

这里的n取3,事实上,这个滑动的network就是(3,3,input_dim,output_dim)的conv 层。

2、Anchors的引入

事实上,上述生成流程中,对每一个(n,n)子窗口,就可以得到关于这个子窗口的 object-ness score和位置信息的更新。但是proposal的size和aspect ratio 可能存在多种情况,例如目标人的height一般就是width的两倍以上,车辆则反过来。如果考虑多种长宽比的子窗口,那么就会出现组合爆炸,变成了真正的dense sample proposal,计算量太高。因此,对每个(n,n)子窗口,paper在提出采用旋转不变的 Anchors:

在每一个 sliding-window location,同时预测 k 个 region proposals,这样一来,分类层会输出k个object-ness score,回归层会输出k个对应的新的位置信息。

这k个proposal是相对 k个 anchor来说的。这里的k个anchor是一些以sliding-window的中心为中心,不同scale和aspect ratio的proposal。这里取3种scale和3种aspect-ratio,那么k=9。

假设conv feature map的大小为 (W,H),那么anchors的个数为 WHK,这是因为在有边界padding的情况下,每个点都是sliding-window location。

一个重要的性质是:每个点的k个anchors,除了中心不同外,高度和宽度均一致。且对每种anchor,从子窗口到256-d的conv连接是共享的,是不随中心变化而变化的。

所以,现在再看k个anchors,实际上就是在conv feature map运行k个不同kernel size的conv 层。每个conv层后面接的就是分类全连接层和回归全连接层。

2.2、如何学习RPN?

RPN的loss其实和 Fast R-CNN中 detection的multi-loss十分类似。区别在于,detection network中的分类错误是对多类别的分类错误,回归错误只针对不是背景的proposal来做;而RPN 中的分类错误是针对 是否为物体的分类错误,回归错误则只针对是物体的anchor来做。这个loss的公式表达为:

$L({p_i},{t_i})=\frac{1}{N_{cls}}\sum_iL_{cls}(p_i, p_i^)+\lambda \frac{1}{N_{reg}}\sum_i p^i L{reg}(t_i, t^*_i)$

上式中的 $p_i$ 和 $p_i^$ 分别代表proposal经过分类层得到的object-ness预测概率和 proposal对应的gt bbox的label(1 or 0),而 $t_i$ 和 $t_i^$ 则是proposal经过回归层预测出的位置信息以及 proposal对应的gt bbox的位置信息。当然这里的位置信息和R-CNN中的bbox regression一样,经过了参数化的。详见paper的第4页。

值得注意的是,这里的regression是针对k种anchors来进行训练的,即覆盖了多种scale和aspect-ratio下的bbox regression,这样做出的预测是更有针对性的。

RPN 训练时的正负样本定义:正样本包含两类:和每个gt bbox的IOU最大的anchor,以及和任意 gt bbox的IOU大于0.7的anchor。负样本为:和所有的 gt bbox的IOU均小于0.3的anchor。对于正样本某anchor,其回归层的回归目标就是那个和它IOU最大的gt bbox的位置信息。

接下来,就是通过类似 hierarchical sampling的方式采集正负样本,进行SGD训练来学习RPN。

2.2.1、一些训练的细节

1、anchor boxes在训练和测试中的使用

由于anchor box是对子窗口进行不同scale和不同aspect-ratio变化得到的,因此存在大量的anchor boxes超出了图像的边界。在训练中,将超出了图像边界的anchor boxes全部忽略。在测试时,也不保留这些超出边界的anchor boxes(这里存疑,文中并未叙述清晰,需要看具体的代码),待得到最终的 proposal后,对于超出图像边界的proposal,截取其在图像内的部分作为proposal。

2、Non-maximum Suppression用于减少proposal

在RPN得到proposal之后,根据每个proposal的object-ness score来执行NMS(使用的IOU阈值为0.7),并留下前2000个proposal,作为detection network的输入

2.3、如何对RPN和detection network 进行联合训练

由于节省计算量的关系,作者将RPN和detection network的前半部分设计为共享的。顺理成章,最好是进行联合训练。正如paper中第4页末尾所言,

需要开发一种技术来学习共享层的参数,而不是学习两个隔离开来的网络。但这并非简单地将RPN和detection network组合在一起进行联合训练,主要是因为:detection network的训练需要固定的object proposal作为输入。很难说,在对RPN进行优化(即逐步改变proposal的生成机制)时同时去优化detection network,因为不一定会收敛。

不过未来可以尝试开发联合学习,paper中给出的是:采用交替优化的四步训练算法:

1、从 imagenet pretrained的网络出发fine-tuning RPN

2、采用第一步得到的RPN来负责proposal generation,从 imagenet pretrained 的网络出发fine-tuning detection network

3、采用第二步得到的detection network的权重来初始化RPN的共享部分,并保持共享部分的权重不变,在第一步得到的RPN的ROI Pooling Layer及其后的层的权重的基础上fine-tuning RPN

4、采用第三步得到的RPN来负责proposal generation,保持共享部分的权重不变,在第二步detection network的FC层权重的基础上fine-tuning detection network。

03 实验分析

3.1、RPN对训练的提升

paper第5页的Table 1清晰展示了实验结果,以下结果说明了训练RPN时multi-loss的重要性

1、训练好RPN后,采用SS算法生成的proposal来训练detection network,然后在测试时采用RPN来生成proposal,mAP相对上面的方法略有下降

2、训练好不带分类输出的RPN后,采用SS算法生成的proposal来训练detection network,然后在测试时采用不刚刚训练的不带分类输出的RPN来生成proposal,mAP有大幅下降,下降的绝对值接近10%以上

3、训练好不带回归输出的RPN后,采用SS算法生成的proposal来训练detection network,然后在测试时采用不刚刚训练的不带回归输出的RPN来生成proposal,mAP有小幅下降,下降的绝对值接近5%以上

3.2、其他

1、采用的detection network的capacity越强,mAP也更高(from ZF-Net to VGG)

2、在整个的检测流程中,因为实现了RPN和detection network的共享,实际上proposal的生成几乎不耗费时间

我个人感觉,今后肯定能出现一个将RPN和detection network结合起来的工作...

原文发布于微信公众号 - 人工智能LeadAI(atleadai)

原文发表时间:2018-01-21

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏数据派THU

卷积神经网络失陷,CoordConv来填坑(附代码&视频)

本文讲述了卷积神经网络在涉及坐标建模等方面的缺陷,但是提出了CoordConv 作为解决方案。

592
来自专栏人工智能头条

处理非平衡数据的七个技巧

732
来自专栏机器之心

卷积神经网络「失陷」,CoordConv来填坑

Uber 利用卷积神经网络解决许多方面的问题,其中就包括坐标变换。从自动驾驶汽车的设计到路标的自动检测、再到地图的绘制,Uber 都需要使用卷积网络完成坐标变换...

1113
来自专栏AI科技评论

学界 | 卷积神经网络做简单任务原来有 BUG?UBER AI Lab 来支招

AI 科技评论按:UBER AI Lab 最新研究发现卷积神经网络在处理坐标变换问题上存在惊人的「无能」缺陷,并提出了一种简单的 CoordConv 策略修复了...

611
来自专栏AI研习社

怎么选择机器学习算法?SAS首席科学家为你讲解

本文面向的是入门到中级的数据科学家,或对利用机器学习算法来解决问题感兴趣的数据分析师。 面对各种各样的机器学习算法——“我应该用哪一个?”,是一名初学者经常遇到...

3385
来自专栏新智元

纳米神经网络 NanoNet:数据有限,照样玩转深度学习

【新智元导读】解决深度学习问题时,使用迁移学习能够很好地减少所需的训练数据量。但是,使用这种方法需要更多的专业知识,比如判断如何调试问题、将哪一层的输出作为输入...

34313
来自专栏人工智能头条

Ian Goodfellow 生成对抗网络GAN论文解析

2034
来自专栏IT派

改变你对世界看法的五大计算机视觉技术!

计算机视觉是当前最热门的研究之一,是一门多学科交叉的研究,涵盖计算机科学(图形学、算法、理论研究等)、数学(信息检索、机器学习)、工程(机器人、NLP等)、生物...

1310
来自专栏机器之心

ICASSP 2018 | 阿里巴巴论文提出Advanced LSTM:关于更优时间依赖性刻画在情感识别方面的应用

选自arXiv 作者:陶菲/Fei Tao、刘刚/Gang Liu 机器之心编译 论文:《高级长短期记忆网络:关于更优时间依赖性刻画在情感识别方面的应用》(Ad...

3307
来自专栏新智元

DCGAN:深度卷积生成对抗网络的无监督学习,补全人脸合成图像匹敌真实照片

【新智元导读】Github 用户 saikatbsk 最近做了一个项目,使用深度卷积生成对抗网络进行图像补完,取得了非常不错的效果。他表示不久后会将具体方法公布...

3984

扫码关注云+社区