RON 算法及代码笔记

论文:RON: Reverse Connection with Objectness Prior Networks for Object Detection
论文链接:https://arxiv.org/abs/1707.01691
代码链接:https://github.com/taokong/RON

Reverse Connection with Objectness Prior Networks(RON)是CVPR2017的文章。这篇文章主要通过融合不同层的特征后对object的框进行预测,可以检测图像中multi-scale的object,因此在网络结构上也主要是针对这个做改进。另外RON跟Faster RCNN有一些相似的地方,比如其中的objectness prior和Faster RCNN中的RPN网络思想类似,都是用来辅助object的分类,但并不是直接引入RPN网络,这是RON算法的速度比Faster RCNN算法的速度快3倍的一个原因,还有一个重要原因是Faster RCNN中的roi pooling层存在较多的重复计算,而RON中没有roi pooling层,对于坐标的回归直接在类似RPN网络的回归分支中完成,因此对坐标的回归操作只进行一次

Figure2是RON的网络结构。以主网络为VGG-16为例,假设输入图像大小是320,则conv4的输出feature map大小是40*40,conv5的输出feature map大小是20*20,conv6的输出feature map大小是10*10,conv7的输出feature map大小是5*5。当图像输入网络时先经过特征提取网络提取特征(conv4到conv7),然后在conv7层的输出后面接一个reverse connection block,对conv7而言因为是最后一层,所以只是对conv7的输出接一个卷积层(代码上是卷积核大小为2*2,数量为512的卷积层)就得到reverse fusion map(简写为rf-map),然后对conv7输出的rf-map做反卷积后和conv6的输出做加法得到conv6的rf-map,再基于conv6的rf-map和conv5的输出得到conv5的rf-map,一直到最后得到conv4的rf-map。这4个rf-map是后续bbox的分类和回归操作的基础。reverse connection其实在思想上和ResNet的residual connection有点类似,在ResNet的residual connection中是浅层特征连接到高层特征,而这里的reverse connection是高层特征连接到浅层特征,这也是reverse这个单词的含义。
RON和SSD虽然都是做特征融合,但是其中的区别还是比较大的:SSD虽然也是基于几个层的feature map做预测,但是对bbox的预测是基于每个层的feature map,每层预测得到bbox的信息后再将各层的信息整合在一起,所以比如说对于小目标的检测,bbox的尺寸较小,因此主要靠浅层的feature map上的bbox来预测,因此实际用到的feature map信息只有浅层的,高语义的feature map信息并没能帮助到小目标的检测,这也就是SSD对小目标检测效果不好的原因。再来看RON算法,在RON中是先将不同尺寸的feature map通过deconvolution的方式融合在一起,这样浅层的feature map就融合了高层的feature map信息,然后基于融合后的4个feature map层做预测,最后将这4个层预测得到的bbox整合在一起输出就得到整个网络的输出结果
这里写图片描述

reverse connection block的结构图如Figure3所示。这个结构就实现了不同尺寸的feature map的融合,具体过程是这样的:conv n表示第n层的输出,该输出经过一个3*3卷积层后得到的输出与n+1层输出的rf-map经过2*2的反卷积层后得到的输出做element-wise addition得到第n层的rf-map
这里写图片描述

关于每一个融合层中anchor(文中用reference boxes或者default boxes名字,实质上是一样的,初始化后就不变了)的初始scale和aspect ratio的设置如下,其中k表示feature map层。
这里写图片描述

其中smin是输入图像大小的1/10(假设输入图像大小是320*320,那么smin就是32),因此当k=1时,Sk={32,64},当k=2时,Sk={96,128},当k=3时,Sk={160,192},当k=4时,Sk={224,256}。这样每一层就会初始化得到2种scale和5种aspect ratio的anchor。

Figure1是在RON算法中的另一个内容:objectness prior。objectness prior本质上是一个bbox包含object的概率。如何得到objectness prior呢?实现上就是分别在4个rf-map层后先接一个卷积核数量为20的3*3卷积层,20的含义是2(bg/fg)*10(anchors);再加上一个softmax层就得到每个bbox的2分类概率,这一部分其实和RPN网络的分类支路类似,只不过一方面这里是对4个融合特征层rf-map都执行二分类操作,另一方面这里不显式地生成和过滤proposal,这也是RON速度比Faster RCNN快的一个原因。Figure1中的(a)(b)(c)(d)表示在4个rf-map上计算objectness prior的结果,可以看出尺寸较大的沙发会在(a)(b)两个rf-map上得到(conv7和conv5对应的rf-map),而尺寸较小的狗则在(c)(d)两个rf-map上得到(conv5和conv4对应的rf-map)。
因此,虽然这部分操作和RPN网络的分类支路类似,但是有一个很大的不同点是这里并不生成proposal,因此不是像Faster RCNN算法中RPN网络和检测网络有两部分损失函数,在Faster RCNN中RPN网络

  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值