当前位置:首页 > 资讯 > 正文

CNN中的目标多尺度处理策略汇总

CNN中的目标多尺度处理策略汇总

1. 后面实习要解决实例分割中的目标多尺度问题(当然不只是这个问题,还有其他的),为此对CNN中这几年的多尺度处理方法进行简要总结~_~,时间紧任务重,只记录了一点点东西,核心的还是要去看论文读代码。

2. 最近在准备开题的东西,其中也讨论了该问题,这里又扩展了一些论文;

3. 自己发不了顶会在知乎上宣传,只能写写文章~~

3. 过两天要去实习了,没心情学习,终于要离开这个rang自己又爱又恨又安逸的地方,心情略显复杂,对,我很开心~~~

视觉任务中处理目标多尺度主要分为两大类:

SSD以不同stride的feature map作为检测层分别检测不同尺度的目标,用户可以根据自己的任务的目标尺度制定方案。该方式尺度处理简单有效,但存在一些缺陷:

这种方式源于U-Net(不确定是不是~_~),采用对称的encoder-decoder结构,将高层特征逐渐与低层特征融合,这样的操作类似于将多个感受野进行混合,使得输出的多尺度信息更为丰富;Face++团队在去年COCO比赛上,在backbone最后加入gpooling操作,获得理论上最大的感受野,类似于V-shape结构,结果证明确实有效。该方法虽然比SSD的单层输出多尺度信息相比更好,但其也存在问题:

自从2016年FPN网络出来后,目前各大视觉任务的baseline基本都是以backbone-FPN。FPN以更为轻量的最近邻插值结合侧向连接实现了将高层的语义信息逐渐传播到低层的功能,同时它可以看做是轻量级的decoder结构。FPN看起来很完美,但仍然有一些缺陷:

FPN这种有效的黑科技,对其进行魔改也情理之中,用几首歌的时间简要介绍介绍~~

PANet在FPN的基础上加入bottom-up结构有效地传播P2的定位信息到其他层,结构与top-down结构基本一致。

ZigZagNet在PANet上进行改进,使得top-down和bottom-up之间进行交互,同时使top-down和bottom-up的每一层之间也进行信息交互。这样就完成了双方向上的多尺度上下文信息加强。

ThunderNet是做ARM上实时的目标检测算法,主要简化了FPN结构,只使用C4/C5,同时引入gpooling操作(Face++论文好多这么用,确实有效),最终输出C4分辨率大小的累加特征。

一个FPN有效,2个FPN是否有效,MSPN当然还有其他创新点,不同于FPN固定通道256,而是与backbone一致,同时还有一个特征融合模块,解决梯度消失和特征重利用。这个是做姿态估计的,其实这个结构在其他任务上也是work的。

一个FPN有效,那么多个FPN是否有效,M2Det告诉了我们答案,多个FPN结构可以有效的获得多尺度特征分层。是有效果的,但这样单纯的叠加FPN真的那么友好吗!!!:),两个已经很多了。也许别人都想得到,但去不去做就是完全不同的结局啦,我是在说我自己吗,哈哈。

NAS最近在CNN领域刷的飞起,没错,FPN结构也已经被搜索出来了,欢迎大家实验。在目标检测上挺work的。虽然不一定会NAS,但搜索出来的网络结构可以看看的,还是能得出一些结论。

各种添加模块确实是CNN论文中的利器!对于语义分割,一般会将这些模块添加到backbone的最后stage,以增强预测时候的多尺度信;对于目标检测,一般会加到检测头,以增强其上下文信息。对于实例分割,可以加到mask预测分支,也可以加到其他地方。当然,现在有些做法是在FPN中的C5后加入这些模块。

由于实在太多,这里介绍几种典型结构:

以上ASPP与PSP模型是语义分割中的经典模型,一个是使用空洞卷积,一个是不同尺度的池化。都是非常熟悉的东西,就不介绍了。

在FPN上加了PPM模块,获取更为丰富的多尺度上下文信息。

没错,就是ASPP+Non-local,说了要自己动手,不要说别人没有创新~~

这个实在太多了,怎么说都有道理,没了!!

语义分割

实例分割