专栏首页CVer从Densebox到Dubox:更快、性能更优、更易部署的anchor-free目标检测

从Densebox到Dubox:更快、性能更优、更易部署的anchor-free目标检测

最近 Anchor-free (no-prior box)的概念又重新火热起来,anchor-free的概念从2015年densebox, yolov1开始出现,但一开始性能并不是很好,后来基于anchor(prior box)的概念的检测算法如faster rcnn, ssd性能有很大的提升,于是目标检测从此走进anchor时代,但是最近anchor-free的文章出现很多,目标检测发现不使用anchor依然可以达到较好的效果。今天要介绍的Dubox和Densebox都是由百度提出的无先验框的一阶段目标检测算法。

《DuBox: No-Prior Box Objection Detection via Residual Dual Scale Detectors》

arXiv: https://arxiv.org/abs/1904.06883

github: None

作者团队:百度

注:2019年04月17日刚出炉的paper

引言:

传统的神经目标检测方法使用多尺度特征,让多个检测器独立并行地在多个分支执行检测任务。同时,加入先验框(prior box)提高了算法处理尺度不变性的能力。然而,过多的先验框和多个检测器会增加检测算法的计算冗余度。这篇论文介绍了一种新的一步检测方法Dubox,它可以在没有先验框的情况下检测物体。设计的双尺度残差单元具有多尺度特性,使双尺度检测器不再独立运行。高层检测器学习低层检测器的餐叉。Dubox增强了启发式引导的能力,进一步使第一尺度探测器能够最大限度地检测小目标,第二尺度探测器能够检测第一尺度探测器无法识别的目标。此外,对于每一个比例探测器,采用新的classification-regression strap loss,使检测过程不基于先验框。结合这些策略,检测算法在速度和精度方面取得了优异的性能。通过对VOC、COCO目标检测基准的大量实验,证实了该算法的有效性。

标签和loss设计:

首先对于标签的设计:

文章定义了在物体框内

为正样本,其他为负样本。

熟悉densebox的同学都知道,这种设计和densebox相似,densebox更像分割类算法,对物体的中心范围进行回归+分类,因为物体内的范围都是正样本,其其他范围为负样本,为了克服正负样本波动性所以在正样本周围加上了一圈ignore范围,从而防止梯度的波动。Dubox没有使用固定的ignore范围,而是在loss设计时候是有iou gate unit自动的学习ignore范围。

既只有回归框和真值框达到0.5的重合时分类才在该点产生loss,从而达到自动学习ignore范围的作用。用公式表达就可以写成:

其中

Dubox框架设计:

Dubox的另一大创新是不再多个分支上独立并行的使用多个检测器,而是将检测器减少到了两个:

在这种设计中高层的检测器去检测底层检测器无法检测到的物体,从而最大化检测性能,

同时论文中为了减少两个检测器之间的检测冗余,设计了诸多减少冗余策略,使两个检测器之间的检测冗余最小,但整体达到了最优性能。

这种设计带来的好处有以下几点:

1. 基于分割的检测使底层检测效果明显高于yolo等算法。这源自于其基于分割的思想。

2. 第二个分支去检测第一个分支的残差,使独立运行变成了协同运作。

3. 整个网络的设计只使用简单的基本操作,这让其在部署中有非常大的优势。

4. 最后一个核心的可能只有经历过硬件部署的同学才能体会到,那就是更加优秀的int8部署。在部署gpu硬件上一般使用int8加速,但是使用一个分支进行int8进行量化时,有非常大的损失,这种损失可以看作,回归范围被强制映射到256个值,损失是在所难免的。而dubox的设计将两个分支进行分成无冗余的两个分支,两个分支分别进行int8量化产生的损失非常小甚至几乎没有。

实验:

最终的实验结果,论文各个部件的消融实验:

在voc上的速度和性能,达到了82.89的map, 其320x320版本达到了79.31map 和高达50fps的速度。

在coco上的性能:

总结:

Dubox整体上属于densebox的强化版,进一步加强了其在硬件上的友好性,达到了速度和性能上的最优表现。使用int8量化后的速度会有更大的提升,相对的精度会损失很少,虽然论文中没有提到,这使dubox的设计更加适用于工程实践。

本文分享自微信公众号 - CVer(CVerNews),作者:Amusi

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

原始发表时间:2019-05-14

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 阿里达摩院实习生立功!何恺明Mask R-CNN精度提升,一半输入数据量就行 | CVPR2020

    这就是阿里达摩院提出的图像分析新方法:“频域学习”(Learning in the Frequency Domain)。

    Amusi
  • 50.4 AP!FCOS再升级!简单而强大的anchor-free目标检测器

    FCOS+DeformConv2+ResNeXt101+BiFPN 在COCO上能刷到50.4 AP!

    Amusi
  • 大盘点 | 2019年4篇目标检测算法最佳综述

    上次整理了近期目标检测比较亮眼的论文汇总,详见: 一文看尽8篇目标检测最新论文(EfficientDet/EdgeNet/ASFF/RoIMix/SCL/EFG...

    Amusi
  • 实战:小程序云开发之在云函数中使用Router

    最近在做自己的小程序《看啥好呢》,这个小程序是使用云开发的方式开发的,功能特别简单,就是获取豆瓣、大麦网的数据展示,虽然功能简单,但还是记录下开发过程和一些技术...

    Dunizb
  • 小人脸检测 - Finding Tiny Faces

    https://www.cs.cmu.edu/~peiyunh/tiny/index.html code: https://github.com/peiyu...

    用户1148525
  • 【实战】小程序云开发,云函数中使用Router(附源码)

    最近在做自己的小程序《看啥好呢》,这个小程序是使用云开发的方式开发的,功能特别简单,就是获取豆瓣、大麦网的数据展示,虽然功能简单,但还是记录下开发过程和一些技术...

    Dunizb
  • 史上最快! 10小时大数据入门实战(四)-分布式资源调度YARN1 YARN 产生背景2 YARN 架构

    JavaEdge
  • 国外医生设计3D打印设备,帮助人们安乐死去 | 黑科技

    镁客网
  • Nginx 烹调书

    本书是「Complete Nginx Cookbook」一书的部分中英文对照翻译版本。

    柳公子
  • Python入门白皮书#P01 Lists

    文档: 我们以Google Python Exercises作为练习素材。 参考对应的文档 https://developers.google.com/edu/...

    企鹅号小编

扫码关注云+社区

领取腾讯云代金券