吊打YOLOv3!普林斯顿大学提出:CornerNet-Lite,基于关键点的实时且精度高的目标检测算法,已开源!

前戏

最近目标检测方向,出了很多很棒的paper,CVer也立即跟进报道(点击可访问):

  • 中科院牛津华为诺亚提出:CenterNet,One-stage目标检测最强算法!可达47mAP,已开源!
  • 谷歌大脑提出:基于NAS的目标检测模型NAS-FPN,超越Mask R-CNN
  • 最新的Anchor-Free目标检测模型FCOS,现已开源!

本文要介绍一篇实时性好,准确率又高的论文:CornerNet-Lite。该论文是由 普林斯顿大学的几位学者提出。截止2019年4月20日,据Amusi所了解,CornerNet-Lite 应该是目标检测(Object Detection)中 FPS和 mAP trade-off 最佳算法。

注:标题注明"吊打YOLOv3",这个不是标题党。因为CornerNet-Lite 在 FPS和mAP上都超过了YOLOv3,具体详见下文介绍。

简介

《CornerNet-Lite: Efficient Keypoint Based Object Detection》

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

github: https://github.com/princeton-vl/CornerNet-Lite

作者团队:普林斯顿大学

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

Abstract:基于关键点的方法是目标检测中相对较新的范例,消除了对 anchor boxes 的需求并提供了简化的检测框架。基于Keypoint的CornerNet在单级(single-stage)检测器中实现了最先进的精度。然而,这种准确性来自高处理代价。在这项工作中,我们解决了基于关键点的高效目标检测问题,并引入了 CornerNet-Lite。CornerNet-Lite是CornerNet的两种有效变体的组合:CornerNet-Saccade,它使用注意机制消除了对图像的所有像素进行彻底处理的需要,以及引入新的紧凑骨干架构的 CornerNet-Squeeze。这两种变体共同解决了有效目标检测中的两个关键用例:在不牺牲精度的情况下提高效率,以及提高实时效率的准确性。CornerNet-Saccade适用于离线处理,将CornerNet的效率提高6.0倍,将COCO的效率提高1.0%。CornerNet-Squeeze适用于实时检测,提高了流行的实时检测器YOLOv3的效率和准确性(CornerNet-Squeeze为34ms时34.4mAP,而COCO上为YOLOv3时为39ms,33mAP)。这些贡献首次共同揭示了基于关键点的检测对于需要处理效率的应用的潜力。

背景

CornetNet 在 ECCV 2018 (oral)上横空出世,引领一波基于关键点的目标检测狂潮(最近anchor-free盛行),但这类算法(很多one-stage)也有缺点。虽然mAP有很大提升,但速度上都远不能达到实时(有些论文就避而不谈FPS了)。这其实可以看成学术阶段的成果,但距离落地应用还有一点距离。

而 本文CornetNet-Lite 是对CornetNet进行优化,提出了两种算法:

  • CornerNet-Saccade
  • CornerNet-Squeeze

在 Amusi 看来:

CornerNet-Saccade 是追求高准确率(mAP)的同时,尽可能提高速度(FPS),即准确率优先,其对标于CornerNet等算法。创新点:引入Saccade思想

CornerNet-Squeeze 是追求高实时性(FPS)的同时,尽可能提高准确率(mAP),即速度优先,其对标于YOLOv3等算法。创新点:引入SqueezeNet优化思想

正文

1 CornerNet-Saccade

什么是 Saccades?

人类视觉中的 Saccades(扫视运动)是指用于固定不同图像区域的一系列快速眼动。在目标检测算法中,我们广义地使用该术语来表示在推理期间选择性地裁剪(crop)和处理图像区域(顺序地或并行地,像素或特征)。

CornerNet-Saccade中的 saccades 是 single type and multi-object。CornerNet-Saccade 检测图像中可能的目标位置周围的小区域内的目标。它使用缩小后的完整图像来预测注意力图和粗边界框;两者都提出可能的对象位置,然后,CornerNet-Saccade通过检查以高分辨率为中心的区域来检测目标。它还可以通过控制每个图像处理的最大目标位置数来提高效率。具体流程如下图所示。

CornerNet-Saccade 设计了一种新的backbone:Hourglass-54(含3个hourglass模块,深度为54)。原CornerNet中使用的是 Hourglass-104(含2个hourglass模块,深度为54)。

注:crop在CornerNet-Saccade中作用非常大

2 CornerNet-Squeeze

与专注于subset of the pixels以减少处理量的CornerNet-Saccade相比,而CornerNet-Squeeze 探索了一种减少每像素处理量的替代方法。在CornerNet中,大部分计算资源都花在了Hourglass-104上。Hourglass-104 由残差块构成,其由两个3×3卷积层和跳连接(skip connection)组成。尽管Hourglass-104实现了很强的性能,但在参数数量和推理时间方面却很耗时。为了降低Hourglass-104的复杂性,本文将来自SqueezeNet和MobileNets 的想法融入到 lightweight hourglass 架构中。

主要操作是:

  • 受SqueezeNet启发,CornerNet-Squeeze将 residual block 替换为SqueezeNet中的 Fire module
  • 受MobileNet启发,CornerNet-Squeeze将第二层的3x3标准卷积替换为 3x3 深度可分离卷积(depth-wise separable convolution)

具体如下表所示:

3 实验结果

开源代码是基于PyToch1.0.0,在COCO数据集上进行测试。测试硬件环境为:1080ti GPU + Intel Core i7-7700k CPU。

One-stage 算法性能比较

CornerNet-Saccade 算法性能比较

可见 Hourglass-54要强于Hourglass-104,另外gt attention对涨点帮助很大

CornerNet-Squeeze 算法性能比较

见证奇迹的时候来了!CornerNet-Squeeze 吊打YOLOv3,因为即使是C语言版本的YOLOv3,都已被全方位(mAP+FPS)超过。

注:日常期待一下YOLOv4,毕竟YOLOv3已经是去年3月的"老人"了。

代码已开源,快快下载尝试一波:

https://github.com/princeton-vl/CornerNet-Lite

原文发布于微信公众号 - CVer(CVerNews)

原文发表时间:2019-04-20

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

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券