zoukankan      html  css  js  c++  java
  • AlignDet特征对齐:one-stage检测算法的改进

    当前针对目标检测算法有两种思路(暂时不考虑anchor free),其中一种是轻量化two-stage检测算法(如thundernet),另外一种就是

    提高one-stage算法的精度,如使用更好的特征(特征融合、多尺度特征FPN等),包括基于SSD改进的refinedet,基于FPN的RetinaNet等等。

    AlignDet就是在RefinDet的基础上的进一步工作,它指出了one-stage和two-stage的精度差距的本质问题--特征对齐问题(其实这个问题在19年的1月份

    RefineDet的作者就在一个讲座里指出了,不知道为啥让图森的人抢先了。另外似乎跟RepPoints里的basemodel一样,

    在知乎引发了热议https://www.zhihu.com/question/338959309)。

    1、多尺度特征和One-stage

    在two-stage中,通过roipooling或者roialign可以解决特征的对齐问题。在One-stage中,可以通过FPN来缓解特征的对齐问题--FPN中,不同尺度的

    bbox,会对应不同尺度的feature。作者做了一组实验,分别在faster rcnn和retinaNet中,去除FPN,one-stage精度下降的更厉害。

     另外关于特征对齐,可参考上述知乎链接里kwduan的回答。

    2、RoIConv

       思路:由anchor回归得到learned  anchor之后,根据stride算出其对应特征图的offsets,

    然后dcn用这个offsets,去卷积learned anchor 对应的feature,这样就将特征对齐了。将

    对齐后的特征再次进行分类和回归。(疑问:既然已经知道了learned anchor了,为什么

    还要算offsets,再去用dcn呢?直接用一个conv不就可以了吗?)

    3、AlignDet

    如图,个人感觉这已经不是one stage了。其中DPM可以是RPN,SSD等,这部分就是一个One-stage。

    经过RoiConv去做特征对齐,再去做分类和回归。

    (想法:和two-stage相比,这里采用了全卷积网络,差别就剩没有耗时的roi-pooling了,这也是AlignDet的速度仍然要比two-stage快的原因。)

     4、实验

         (1)只使用单一尺度,可以看到RoIConv高了5个点,还是挺牛逼的。

      (2)在多尺度FPN上增加RoiConv仍然可以提高。(疑问:不加ADM的AlignDet,不就是DPM略有变化的RetinaNet吗?效果为啥差别这么大?)

     (3)不同阶段采用不同的iou来挑选样本(类似与cascade rcnn)。在dpm阶段使用较低的iou,在adm阶段使用较高的iou,整体看

    效果最好。

    (4) RoiConv的设计。越大越好,同时为了速度考虑,在使用7*7RoiConv的同时,p3的RoiConv使用3*3(是为了在paper里速度比RetinaNet好看吗?)

     想法

    总的来看还是一篇不错的paper,对特征对齐给出了一个不错的解决方法,可惜有些细节还有疑问,目前还没有开源。

    one-stage和two-stage现在的界限越来越模糊了,此前我曾移植过mobilenet-refinedet,速度并不理想,不知道轻量级的aligndet效果怎么样

    ,还是有些期待的。

  • 相关阅读:
    MVC总结
    Python在Linux | Windows中输出带颜色的文字的方法
    flushdns
    linux配置java环境变量(详细)
    ELK
    sed 时间段
    如何让root用户能直接进行ssh登录?
    rsync有两种常用的认证方式,另外一种则是ssh。
    windows rsync server
    awk
  • 原文地址:https://www.cnblogs.com/573177885qq/p/12401646.html
Copyright © 2011-2022 走看看