文章目录

  • AlignDet
    • Pilot Experiment
    • RoIconv
      • Im2Col & RoIAlign
      • RoIconv
    • AlignDet
    • 实验
  • 作者在知乎上的回答

该论文解决在one-stage模型中的feature与proposal不匹配的问题,论文的研究的问题,研究的思路在文章中已经解释的非常好。

AlignDet

作者提到了One Stage模型的一个问题是,当使用多个anchor时,同样的feature预测不同anchor所产生的box,这样子破坏了feature与预测结果一对一的性质。
“Sharing feature for multiple anchor boxes violate the one-to-one correspondence between reference boxes and features, which breaks the strict location sensitivity of object detection.”

本文要解决的一个问题是:
"One-stage detectors suffer most from the misalignment due to the lack of explicit alignment operations like RoIPooling in two-stage detectors. "

Pilot Experiment

本文首先对比了One-Stage和Two-Stage模型是否使用多stride的feature map进行预测,anchor的总数量的总的scale不变,结果如下:

结果显示,Two-Stage的方法受到的影响不大,而One-Stage的方法效果严重下降。作者提出,可能是因为One-Stage模型中不存在Align Pooling的操作,使得feature与box不匹配,难以预测。
" We hypothesize that the misalignment of features and anchor boxes leads to the catastrophic performance degradation."

RoIconv

Im2Col & RoIAlign

Im2Col是把某个位置的卷积核对应的feature map的区域展开成为1列,具体操作可见https://blog.csdn.net/dwyane12138/article/details/78449898

本文阐述Im2Col是一种特殊的RoIAlign,经过公式对比,求解在RoIconv中的offset。但我认为这个解释其实并没有太大帮助,直观的去理解反而更容易一些。

RoIconv

RoIconv可以认为是deformable conv的一种,只不过RoIconv的offset不是学习出来的,而是直接通过learned anchor计算出来的。将传统的卷积核通过offset将其变为anchor大小的卷积核。所以RoIconv可以认为其实就是在将anorchor区域提取出来,然后进行卷积。这个操作模糊了One-Stage和Two-Stage的界限,这个操作与RoIAlign是非常相似的。

AlignDet


DPM相当于是一个Retinanet,使用单stride的feature map和单个scale的anchor,来学习learned anchor(proposal)。然后通过RoIConv提取每个learned anchor对应区域的特征,然后送入分类头和回归头。ADM的具体结构为:
“our ADM is simply a 1024c 7 × 7 RoIConv followed by a 1024c 1 × 1 convolution”


知乎上有一篇讲的比较好
作者:kwduan
链接:https://www.zhihu.com/question/338959309/answer/780051681
整个过程是anchor回归两次,anchor第一次回归得到的咱们按论文里说的叫learned anchor,然后learned anchor再回归一下,这样回归出来的框会更加准确,这也是RefineDet做的事情,但是RefineDet做到这一步还不够完美,因为RefineDet两次回归用的特征都是与RoI不对齐的特征(虽然第二次时利用反卷积结合了高维特征)。咱们画个示例图说明一下:黄色框是anchor,红色是GT,紫色是learned anchor,由anchor回归到learned anchor是用feature map上黑色特征点这一特征(D维向量)做的,而这一黑色特征是使用的灰色卷积核在其相邻的9个点做卷积得到的,这9个相邻的点所组成的区域映射到原图,也就是原图中灰色区域这一部分,换句话说,这一黑色特征的全部信息基本都来自于原图的灰色部分,但是显然,这一灰色区域并没有完全包含整个长颈鹿,用这一区域所得到的特征去预测一个完整的长颈鹿,肯定有一点问题。这就是特征与RoI不对齐的意思。这里的RoI实际上就是learned anchor。那怎样才能将特征与RoI对齐,这就是AlignDet要做的事。第一步跟RefineDet一样,先将初始的anchor回归得到learned anchor。这个时候learned anchor其实已经比较接近GT了。第二步,就是跟RefineDet不同之处了,RefineDet还是使用的不对齐特征再把learned anchor回归一次,而AlignDet是用的对齐的新特征。怎么做到对齐的?如下图:把第一次用的特征再用deformable conv卷一下,当卷积核卷到黑色位置的时候,卷积核加上此位置给定的offset,于是卷积核的形状就变成浅红色的9个点,这九个点所组成的区域映射回原图就是learned anchor的包含区域。这样的话,经过deformable conv所得到的特征就是对齐的了。那么他咋能保证卷积核加上offset就正好是learned anchor 包围区域的?原因是这里的offset是根据learned anchor与卷积核的位置差算出来的。因此RoIConv实质上是一种offset已知的


实验

  • 首先在单stride的feature map和单个scale的anchor的Retinanet中的P4后按照设定的anchor的大小加入了3*3的RoIConv,效果提升了5个点,证明了RoIConv的有效性。
  • 对比了AlighDet与多scale多anchor的Retinanet,效果有提升。
  • 在Ablation Study中对比了不同的Feature Alignment,Label Assignment和RoI Convolution Design的不同方式。(Label Assignment有点没看懂,是不是说在ADM中,与GT box的IoU在一个较高的阈值之上的anchor才认为是前景?)

作者在知乎上的回答

https://www.zhihu.com/question/338959309/answers/updated

作者:Roger Chern
链接:https://www.zhihu.com/question/338959309/answer/780536872
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

首先感谢大家对我们工作的关注,本来出结果之前都不准备放 paper 的,但是最近有一些相似的工作,比如 王剑锋 提到的 P&A 挂出来了,所以还是放出来。整个工作的思路还是沿着 refinedet -> guided anchoring 过来的,兼有吸收了一些 cascade r-cnn 的思想。做这个工作一方面是想解决 anchor 和 feature 对不齐的问题,另一方面也是想阐述 one-stage 和 two-stage 的区别并没有想象中的大(paper 另一个候选名字叫 bridging one-stage and two-stage detection)。其实一旦讲清楚了 im2col 和 roialign 的关系之后,如何去弥合 one-stage和 two-stage 在 alignment 上的差别就已经显而易见了。选择 7x7 RoIConv 和 1x1 1024c 的 feature 是为了尽可能的对齐 FPN Faster R-CNN,由于 1x1 卷积不会扩散 roi feature ,从而保持每个 region feature 的独立性,这样就和 R-CNN head 完全一致了。Aligndet 和 Faster R-CNN 的区别也就仅仅剩下 dense prediction + focal loss 对上 balanced sampling prediction 了。仔细研究了一下 reppoints,发现虽然 motivation 大不相同,但是最后大家确实殊途同归。对于 table 7 里 RPDet 不是 multi-scale training 表示确实疏忽了,误以为和其他 retinanet-based method 用的相同的 protocol,后续会更新一版 paper。在这里对 B1ueber2y 以及其他作者表示歉意,也期待你们在新一版的论文里更公平的比较。另一方面,我们对点数这个东西其实没有特别关注,诸如 GN/SyncBN,用 YOLO/FCOS 这类更好的 assign 策略,回归单独用大一点的头,smooth_l1 换成 l1,同等 FLOPs 下换 depthwise 涨点/降计算量这些方法我们都有意回避了。如果大家能从 ablation 分析里获得一些 insight,就是对我们工作最大的鼓励。谢谢。

【论文阅读】【二维目标检测】Revisiting Feature Alignment for One-stage Object Detection相关推荐

  1. 旋转目标检测:The KFIoU Loss for Rotated Object Detection(Under review in ICLR 2022)

    关键词:KFIoU, 倾斜IoU(SkewIoU) 参考博客: https://zhuanlan.zhihu.com/p/447286823 论文原文下载: https://openreview.ne ...

  2. 论文阅读笔记 | 三维目标检测——PartA2算法

    如有错误,恳请指出. 文章目录 0. 前言与补充知识 1. 背景 2. 相关工作 3. 网络结构 3.1 Part-aware stage Anchor-free Proposal Generatio ...

  3. 论文阅读笔记 | 三维目标检测——PointRCNN

    如有错误,恳请指出. 文章目录 1. 背景 2. 网络结构 2.1 Proposal Generation 2.2 Proposal Refinement 3. 实验部分 3.1 kitti上的测评 ...

  4. 论文阅读笔记 | 三维目标检测——MV3D算法

    如有错误,恳请指出. 文章目录 1. 背景 2. 网络结构 2.1 提案投影网络 2.2 区域融合网络 3. 实验结果 paper:<Multi-View 3D Object Detection ...

  5. 【目标检测论文阅读笔记】QueryDet: Cascaded Sparse Query for Accelerating High-Resolution Small Object Detection

    Abstract 虽然深度学习的通用目标检测在过去几年取得了巨大成功,但检测小目标的性能和效率却远不尽如人意.促进小目标检测的最常见和有效的方法是使用高分辨率图像或特征图.然而,这两种方法都会导致昂贵 ...

  6. 论文阅读笔记 | 三维目标检测——VoxelRCNN算法

    如有错误,恳请指出. 文章目录 1. 背景 2. 网络结构 Voxel Query Voxel ROI Pooling Accelerated Aggregation Loss Compute 3. ...

  7. 【论文阅读】2d目标检测:综述

    最近在恶补2d目标检测的文章,把他们整理了一下,写一下综述,方便以后查看. 写得比较简略,主要是自己对于 一些网络的理解. - sppnet 本文引入了一种针对不同尺度图片的目标检测网络.传统网络针对 ...

  8. 『论文阅读笔记』目标检测模型中的性能评价方式-IOU、precision/recall、mAP、PR、Fps!

    目标检测模型中的性能评估标准-IOU.precision/recall.mAP.PR.Fps! 文章目录 一.交并比IOU 二.精确率(precision)和召回率(recall) 三.P-R(pre ...

  9. 论文阅读笔记 | 三维目标检测——VoxelNet算法

    如有错误,恳请指出. 文章目录 1.背景 2. 网络结构 2.1 体素特征表示 2.2 卷积特征提取 2.3 RPN网络 3. 实验结果 paper:<VoxelNet: End-to-End ...

  10. 论文阅读笔记 | 三维目标检测——3DSSD

    如有错误,恳请指出. 文章目录 1. 背景 2. 网络结构 2.1 特征提取 2.2 边框生成 3. 实验结果 paper:<3DSSD: Point-based 3D Single Stage ...

最新文章

  1. 新手推荐!天池数据挖掘挑战赛,2019全球数据智能大赛正式启动!60万奖金等你来拿...
  2. 判断、转载-【Cocos2D-X 】初窥门径(8)判断精灵点击-by小雨
  3. 003_支持并发的饿汉单例
  4. 用python排序算法_Python - 八大排序算法
  5. mysql导出数据意义_11、mysql导出数据
  6. WACV 2021 开幕,更偏重技术应用,附论文下载
  7. php中头部含义,PHP 常用的header头部定义汇总大全
  8. java 之 servlet简介
  9. Find命令使用详解及实例分析
  10. 方维系统登陆弹窗,登陆后自动刷新当前页的实现方法
  11. php round函数输出不对_PHP第一章-变量
  12. JNI使用NewStringUTF崩溃的解决方法
  13. android移动商城源码,o2o移动社区Android端app开源源码
  14. 文本转语音的接口(开放免费)
  15. MP3/4维修全攻略
  16. PPT处理控件Aspose.Slides功能演示:使用 Java 在 PowerPoint 中创建和操作表格
  17. oracle plsql 绑定变量值,dbms_sqltune解析SQL的BIND_DATA绑定变量值
  18. GlobalSign 企业型SSL 证书
  19. 有赞2019校招及社招内推
  20. ios开发者平台生成App 专用密码

热门文章

  1. 学生HTML个人网页作业作品下载 个人主页博客网页设计制作 大学生个人网站作业模板 简单个人网页制作
  2. python爬取网课答案_高校邦网络数据采集与Python爬虫【带实验】网课答案
  3. 搞定从mac把超过4G的文件拷入U盘
  4. 万物皆可编码:聊聊1~10这十个数字
  5. Ubuntu安装指定版本的内核
  6. 软件体系结构——面向对象风格
  7. 手机文件夹为什么是英文?哪些可以删除?看完清理能多出10G内存
  8. rpm -ivh *rpm 是什么意思
  9. 优矿 python_【优矿uqer.io】量化分析师的Python日记【第5天:数据处理的瑞士军刀pandas】...
  10. oracle数据库的关于建表的sql语句练习