【一步一步的积累】RCNN系列

总结一下从RCNN到Fast RCNN再到Faster RCNN,最后谈谈yolo。

DL在Classification方面的能力已经被无数的刷榜成绩证明了。但是detection一直以来都是要比classification要高出一个量级的任务,并且也是在实际的工程中更常见的一个任务,却始终没有很好的被DL所解决。

传统的检测的解决思路一般都是使用金字塔结构解决不同的尺度,sliding window解决不同的位置,以及用不同ratio的bounding box来解决物体长宽比例的问题。这些复杂的重复计算会使得整个系统低效不可行。所以对于深度学习来说,要解决的就是如何在高效高精度的保障下,实现上面说的这些效果。

最开始解决这个问题的就是RCNN,就是region based的CNN,虽然思路很简单:使用selective search等方法给出很多的candidates,然后统一的使用一个CNN网络来进行分类。这篇文章最大的创新其实是将detection问题转换为classification问题的思路。这一个思路让DL瞬间在detection领域引爆了。

在RCNN里面其实没有太多的细节的创新,所以后面就引起了大家对这个框架的大修大补。微软搞的Fast就是在这个基础上开始改进的,使用了SPP的思想(利用不同大小的pooling,来实现pyramid的不同尺度的效果),同时也通过同时完成classification和regression的任务来提高精度,但是纯粹的SPP是不能去学习的,这样就不能放在整个网络中一起学习。所以作者给出了ROI Pooling的概念,但是ROI Pooling只能生成一个pyramid上的窗口,因此只能算是一个简化版本的SPP。但是他的好处就是能参与BP来学习了。

到了这一步,同组的哥们又做了进一步的改进:selective search太碍事了。在DL解决一切事情的今天,还用那么“老土”的方法应该是要消灭掉的。所以Faster的做法是,建立一个RPN网络,直接来propose candidates。这样输入任意一张图像,这个RPN网络在最后一层的feature map上进行sliding window(不同的位置),然后对同一个位置使用了不同的box(作者叫做anchor)(不同的尺度和长宽比),这样会得到一系列的candidates,然后再提交给紧接着的Fast RCNN的网络,这样一气呵成。


到这,虽然复杂,但是已经是一个完整的结构了。但是总是还有强迫症认为这不算是真的一个网络。。。yolo的作者就觉得自己才是真正的one network。。。Yolo的结构其实和一般的CNN没啥大区别,就是最后一层输出的思想换了一下。它把图像分为下面彩色那种小格子,将小格子作为参照,每个格子都输出一个(x,y,w,h,c, C0…Cn),对应物体相当于格子的偏移xy,长宽wh,和是否有物体c,和物体对应的类别Ci,当然一个还是不够,作者说可以每一个格子有B个,论文中B=2.其实这个思路是很有意思的,这个网络只修改了输出,他其实默认了网络具备detection的能力。(之前的网络还是处理的classification),有了detection能力,然后就是一个问题,到底如何输出不定个物体?作者就想到用这样的2D参照点给出了物体个数的上限值,然后强制训练。



综上就是这几篇文章的简单总结。运用到实际工程的时候,还有很多细节需要注意。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值