专栏首页贾志刚-OpenCV学堂CVPR2019-目标检测分割技术进展

CVPR2019-目标检测分割技术进展

作者博客: https://blog.csdn.net/linolzhang

CVPR 2019 没有出现像Faster RCNN,YOLO这种开创性的工作,基于现有方案和框架的改进为主,技术进步着实有些缓慢,或许也代表方案逐步趋于成熟。本文重点介绍如下几个改进方法:GA-RPN、GIOU、FSAF、Mask Score RCNN

GA-RPN

GA-RPN由港中文、商汤和亚马逊联合提出,COCO Challenge 2018 检测任务,在极高的 baseline 上涨了1个点。

论文信息:

Region Proposal by Guided Anchoring https://arxiv.org/pdf/1901.03278.pdf

先来讲候选框生成,传统的Selective Search方法提取像素一致区域,改进的EdgeBoxes利用边缘特征闭合,可以认为具有这种通用特征的区域是最有可能存在目标的区域。这种传统方法的缺点是速度慢,很难整合到CNN网络,于是Fatser-RCNN通过暴力的 滑窗机制实现Candidate选取,也就是RPN,参考:

https://blog.csdn.net/linolzhang/article/details/54344350

候选框选取机制很大程度上代表了最终检测效果的好坏,无效候选框对应大量没有价值的负样本。

  • 对于 one-stage 来讲,可以通过 focal loss 一定程度上解决采样不均衡的问题,但的确只是一定程度;
  • 对于 two-stage方法来讲,RPN机制保证了比 one-stage 更好的效果,3×3的Anchor 包含了大量尺度、ratio不合理的样本,虽然按照1:3的比例做样本过滤,但通常基于随机策略或按照一定的简单规则,筛选能力有限。

思想其实很简单,很多人都能想的到,理想的 Anchor 可以通过特征语义来辅助生成,也就是接下来要讲的 Guided Anchoring ,先看框架图(原文):

框架整体采用了特征金字塔,处理不同尺度的问题。右侧的 Anchor 生成过程(蓝色框),输入是一张特征图Fi,输出是调整后的特征图 Fi'。

Anchor生成(对应红框)借鉴了Anchor-Free的思想,能生成任意尺寸的Candidate,改进的思路是 将Box生成过程分成两部分,中心点生成 和 尺寸生成,中心点对应1个 Channel 特征图(理解为显著性区域),尺寸对应2个Channel的特征图,实现两个不同度量维度的解耦。

生成流程描述:

1)中心点生成

特征图对应一个2分类结果,表示该点是否作为目标中心,如图所示:

  • Center Region(绿色部分)是作为正样本,标识目标中心,可以理解为 RPN选择 对应 IOU>0.7 的情况;
  • Outside Region(灰色部分)作为负样本,可以理解为 RPN选择 对应 IOU<0.3 的情况;
  • Ignore Region(黄色部分)0.3<IOU<0.7,该部分样本忽略。

2)尺寸生成

形状预测目标是得到对应中心的 w、h,传统直接预测的方法问题是w、h的尺度太高,通过将其映射到 [0,1],可以有效降低回归搜索空间。通过下面的公式,实现从 dw、dh 到 w、h的映射,因此尺寸生成模块只需要预测 dw、dh 即可。

训练过程中,最大化变化的 Anchor 与 GT 的重合度,通过 max IOU 作为训练目标。

3)特征调整

由于可变的Anchor的问题,考虑根据Anchor大小适配不同尺度的特征(参考图1绿框),映射到不同的感受野,对应RPN采用的是 ROI Pooling,本文采用的是 变形Conv(不了解的可以自行搜索一下)。

首先通过形状预测分支shape通过1*1 conv,获取offset field(参考图1绿框),然后根据该offset field进行3x3的 变形卷积得到调整后的特征图 Fi'。基于特征图 Fi' 进行分类和bounding box回归。

数据训练:

定义多参数 Loss,其中 λ1、λ2 为调节参数。

结果

GIOU

提出一种 Loss 度量方案,通过 IoU Loss 代替 L1 Smooth Loss,取得了不错的效果。

论文信息:

paper: https://arxiv.org/pdf/1902.09630.pdf github: https://github.com/generalized-iou

上图给出了在L1和L2一致的情况下,对应IoU是不同的,什么意思呢?既然Box和Ground Truth之间的差异是用IoU来衡量,那 最好的办法就是直接用 IoU作为Loss。

但是这里有两个问题,决定了IoU并不适合做Loss函数:

1.当两个Box不重合时,IoU为0,也就是说两个box的距离远近其结果是一样的,无法通过梯度来优化; 2.IoU只能反映交并情况,无法衡量轴对齐,如下图在IoU相等的情况下,图一明显比后面收敛的更好。

基于上面两个问题,在IoU的基础上做了扩展,提出了GIoU,公式:

其中C是指AB的最小包围盒,因此GIoU的定义是 IoU - 包围盒空余部分占比。我们来看Loss定义:

Loss = 1-GIoU = 1 - IoU + 包围盒空余部分占比

发现什么都没变,就加了一个包围盒的空余部分占比(记作Space),分析下这部分带来的变化:

  • 当两个Box不重合时,IoU=0,不起任何作用,两个Box离得越近,Space越小(对应上面Loss越小),也就是说Space起到了拉近Box的作用;
  • 当两个Box有交叠的时候,IoU开始起作用,从【没有交叉IoU=0】到【完全重叠IoU=1】,对应 Loss从1变为0,逐步收敛。那么这里Space的作用体现在哪儿呢?没错,加速轴对齐,对的越齐Space越小。

上图说明了 GIoU带来的效果提升,GIoU是一种Trcik方案,可以与任何检测框架结合,具体可以参考原文。运行对比:

FSAF

来自CMU的一篇文章,提出了基于Single-Stage的特征层选择策略,在COCO上所有Single-Stage目标检测器中达到了SOT。

论文信息:

paper: https://arxiv.org/pdf/1903.00621.pdf

来看论文的关键点:Feature Selective & Anchor-Free,貌似都很老套,一个一个分析吧。所谓 Feature Selective 很早前就有方法做过尝试,通俗点的说,对于特征金字塔来讲,每个层的特征代表了不同尺度的Object,在对Object进行回归的时候,选择合适的Feature层,才能提升准确度。来看基本结构图:

这是一个典型的Anchor-Free的结构图,通过Focal loss计算分类,通过IoU loss计算回归(前面已经讲过其优势)。结合前面的特征金字塔,这里面的关键在于argmin:

1.在训练时,获取最小的loss对应的特征层,也就是和ground truth最接近的; 2.在inference时,采用置信度最高的特征层对应的结果。

位置和形状是分开预测的,这也是今年的一个主流,当然GA-RPN预测的归一化的WH参数应该比这个更好一些,【减少预测参数、参数归一化 理论上是一个提升点】。

FSAF与Two-Stage框架结合:

FSAF是一个子框架,可以集成于ssd、yolo等single-stage框架下,也可以与Faster RCNN等two-stage检测框架结合,来看一个基于 RetinaNet 的例子:

基于金字塔结构,在原来Anchor-based基础上,同时加入了Anchor Free分支(下图绿框),构建多任务学习,通过Anchor-Based 和 Anchor-Free共同学习,提升整体效果,来看进一步展开的结构图:

如上图所示,Anchor-Free添加的上面 WxHxK 个channel 作为分类(预测K个类别的概率),下面的 WxHx4 个channel 作为对应类别的回归,那么这里有两个问题:

1)为什么要添加这两个branch呢?个人浅见是Multi-task有助于提升整体的准确度,这也在后面得到了证实。 2)2个分支和原来的Anchor-Based分支是如何一起工作的呢?训练阶段把两个分支(Anchor-base 、Anchor-Free)的loss加权平均(貌似很好理解)。推理阶段两个分支分别预测Box,预测得到的Box放在一起做 NMS。

实验结果

可以看到,在COCO数据集的表现很好,特别是和Anchor-Based方法结合之后,更多实验结果请参考原论文。运行结果对比,可以看到该方法可以检测更多有挑战性的目标:

Mask Scoring RCNN

最后一个因为篇幅有限,作者单独写了一篇文章链接如下:

CVPR2019-实例分割Mask Scoring R-CNN

本文分享自微信公众号 - OpenCV学堂(CVSCHOOL),作者:linolzhang

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-06-08

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • OpenCV中图像二值化函数调用几个关键点详解

    OpenCV在图像二值化的时候提供了一些很有用的API函数,其实基于指定阈值与全局阈值二值化的API函数为

    OpenCV学堂
  • 深度学习训练-详解图像数据标准化与归一化

    使用深度学习在进行图像分类或者对象检测时候,首先需要对图像做数据预处理,最常见的对图像预处理方法有两种,正常白化处理又叫图像标准化处理,另外一种方法叫做归一化处...

    OpenCV学堂
  • 机器视觉之尺寸测量基础

    在传统的自动化生产尺寸测量中,典型的方法是利用卡尺或千分尺在被测工件上针对某个参数进行多次测量后取平均值。这些检测设备或检测手段测量精度低、测量速度慢,测量数据...

    OpenCV学堂
  • QA与测试到底有什么区别?

    显然两者的性质是不同的,软件测试QA的一部分,从工作内容的范围来讲,QA>软件测试。

    Peter Shen
  • 科学瞎想系列之十三 电动汽车动力系统(1)

    电动汽车是现在炙手可热的新鲜玩意之一,它与通常的燃油汽车最大不同在于动力系统,这个话题一次说完会篇幅很长,许多人没那个耐心看完,我们就分几期说说电动汽车...

    标准答案
  • 腾讯高级设计师:如何规划有格调的设计作品集?

    患者:找工者和整理癖 症状:情绪时而亢奋,时而低落,逐渐出现多种人格分裂的症状。可能偶然伴随脸上爆痘痘的情况出现。 本期关键字:作品集,简历,求职,整理,外面的...

    前朝楚水
  • Celery分布式任务队列插件Celery - Distributed Task Queue

    http://docs.celeryproject.org/en/latest/index.html Celery - Distributed Task Que...

    SeanCheney
  • 研究团队开发AI使用深度学习方法测量肿瘤

    测量肿瘤对癌症治疗的反应在决定病人的预后方面起着重要的作用。这一过程通常由训练有素的放射科医师进行,是劳动密集型的,主观的,容易造成前后不一致。

    AiTechYun
  • 微信「扫一扫」识物为什么这么快?背后的秘诀竟然是

    “扫”是“扫一扫”识物的亮点,带来更为便捷的用户体验。相比于“拍”的交互方式,“扫”的难点在于如何自动地选择包含物体的图像帧,这离不开高效的移动端物体检测。

    腾小云
  • 天秀!一张图就能彻底搞定Pandas!

    昨天在面向GitHub编程时,无意发现了Pandas官方竟提供了同款小抄,项目地址如下

    龙哥

扫码关注云+社区

领取腾讯云代金券