目标检测论文回顾

看了一段时间的目标检测的论文,在这里写个文章总结一下吧。不一定理解正确,如有问题,欢迎指正。

1、RCNN

RCNN是基于selective search(SS) 搜索Region proposal(RP),然后对每个RP进行CNN的Inference,这个算法比较直接。
这里写图片描述
框架应该也挺容易看明白的。
SS对每幅图片提取大约2K个RP,然后对RP进行推理。

2、SPPNET

RCNN的计算很多是没有必要的,因为框有重叠啊,既然被计算过,何必再有让别的框再计算呢?于是Computation Sharing开始了。
这里写图片描述
conv5以前的计算,对于一幅图片只需要一次进行。

另外,SPPNET主要有三个贡献:

  • (1)SPP可以产生固定大小的特征,这使得输入图片可以是任意大小的。为什么呢?作者发现,在CNN当中,其实出了全连接以外,其他的层基本不需要固定大小。既然如此,那就让全连接之前的计算适应任何尺寸吧,只要在到达全连接的时候,让它固定尺寸就好啦!怎么做呢?就是图中的SPP。将图像以不同的pooling步长,得到固定长度的pooling结果。

  • (2)SPP使用多水平的空间bins,同时保持滑动窗的大小不变,这样可以对目标的变形比较鲁棒。

  • (3)得益于多变的输入图像尺寸,SPP可以做到不同尺度的Pooling。

问题:SPPNet仍然是多部训练的,主要原因是:SPP层是多尺度的,对于后面传过来的梯度来说,它计算梯度时涉及到的Receptive Field比较大,计算很慢。而且后面使用的分类器是SVM,应该来说是比较耗时的吧。其实SPPNET训练时,是先用SS找到RP,然后输入前面层,把特征存起来,然后在把特征加载进来输入后面层,前面层的训练和后面层的训练是分离的。

fast RCNN

这篇文章就是针对SPPNET中的问题做的,主要贡献有:

  • 提出了ROIPooling。这个ROIPooling其实就是SPP的简化版。SPP不是使用了金字塔,导致梯度传递困难吗?那就只用一层的金字塔吧。不行,还得换个名字,那就叫ROIPooling。使用了ROIPooling后,得到的也是一个统一尺寸的特征,梯度也没有以前那样涉及到的感受野那么大,所以前后就可以连起来训练了。

  • 多任务Loss。以前SPPNET不是Bounding Box(BB)回归和分类是分离的吗?这里就用一个多任务的Loss吧。而且分类器也不要SVM这么复杂了,只需要Softmax。

这里写图片描述

问题:这个也其实有问题的,你看SS在里面不是一直没有参与学习吗?而且SS好像是离线计算的吧?(这个需要再考证一下。)还有一个重要的问题是,后面的BB回归和分类网络再强,你也是受SS提取的RP限制的。也就是说SS可能已经成为了瓶颈。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值