CornerNet-Lite论文阅读_IceCola_Bing的博客-程序员秘密

技术标签: 论文阅读  计算机视觉  

论文地址https://arxiv.org/abs/1904.08900
开源代码https://github.com/princeton-vl/CornerNet-Lite

简介

CornerNet-Lite在CornerNet的基础之上,提出了轻量版,在尽量保证原检测精度的基础之上,通过两种方式提高检测的速度,以期达到实时监测的需求。CornerNet-Lite包含两个版本。

1. CornerNet-Saccade

通过减少要处理的像素数量来加快推理的速度。使用了类似于人类视觉扫视的注意力机制。它以缩小的完整图像开始,并生成一个关注图,然后将其放大,并由模型进行进一步的处理。这与原始的CornerNet的不同之处在于,它可以在多个尺度上进行全卷积。通过选择剪裁的子集来进行高分辨率的检测,CornerNet-Saccade在提高速度的同时提高了精度。COCO上达到43.2%AP,每个image190ms。比CornerNet提高了1%的AP,速度快了6倍。

2. CornerNet-Squeeze

通过减少每个像素的处理量来加快推理速度,它融合了SqueezeNet和MobileNets的想法,并介绍了一种新的紧凑型hourglass主干网络,该网络充分使用了1x1卷积、瓶颈层(bottleneck)和深度可分离卷积。使用了新的hourglass网络,CornerNet-Squeeze在COCO数据集上达到34.4%的AP,30ms。与YOLOv3的(33% at 39ms)相比更快更准一些。

但是当将Squeeze与Saccade结合的时候,其精度和准确度都有比Squeeze有所下降。这是因为,要想使用到Saccade的优势,需要生成足够准确的注意力图,但是Squeeze的紧凑结构并没有这样的额外能力。此外,原始的CornerNet可在多个比例上应用,这为Saccade提供了足够的空间来减少处理的像素的数量。而相反的是,由于超紧(?)的推理运算Squeeze已在单个scale上应用,这为Saccade节省了更多的空间。

创新性

这两种变体使得基于关键点的方法更有竞争力,涵盖了如下的两个用例:

  • CornerNet-Saccade用于离线处理,可以在不牺牲准确率的情况下提高效率。
  • CornerNet-Squeeze用于实时处理,…

创新点:

  • Saccade是首个将saccade与基于关键点的目标检测相结合的方法。其与之前工作的主要区别在于如何处理每个crop(pixels或feature map)。Saccade可以使用单阶段网络对每个crop进行多个检测。

CornerNet-Saccade produces multiple detections per crop with a single-stage network.

  • Squeeze是第一个将SqueezeNet与堆叠hourglass相结合并应用于目标检测。

贡献:

  1. 提出了CornerNet-Saccade和CornerNet-Squeeze,两种新的基于关键点的检测方法来提高检测的精度。
  2. 在COCO上,将最先进的基于关键点的检测算法的速度提高了6倍,并将AP从42.4%提高到了43.2%
  3. 在COCO上,与YOLOv3相比,同时提高了检测的精度和速度。

相关工作

Saccade in Object Detection

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

使用saccade在目标检测中加速推理已经有很长一段时间了。例如,saccade的一种特殊情况是级联(cascade),该级联反复选择区域的子集进行进一步的处理。

没看完

3 CornerNet-Saccade

CornerNet-Saccade可以检测图像中可能的对象位置周围的小区域内的对象。它使用了缩小的完整图片来预测注意力图(attention map)和粗糙的boundind box;两者都建议可能的目标位置。然后,CornerNet-Saccade通过以高分辨率检查以这些位置为中心的区域来检测目标。它也可以通过控制每个img中obj位置的最大数量来平衡精度与速度。(先用小图搜索大致位置,然后在这些位置上使用高分辨率的图去检测obj

整体流程:

CornerNet-Saccade整体流程图

  1. 小图送进网络,生成attention map得到定位坐标,同时网络还生成粗糙的bounding box
  2. 针对给出的位置(排序并取top-K)在高分辨率的img上进行裁剪,送进检测网络,进行定位,并最终融合出原图的检测结果

3.1 估计obj位置

CornerNet-Saccade的第一步是获取图片中可能的目标位置。
downsize图片为两个尺寸:255和192 pixels。为了让两种尺寸可以并行处理,对193 pixel的img进行0填充至255pixel。将图片改正如此低的分辨率主要有如下两个原因:

  1. 这个步骤(初步定位)不应该成为推理时间的瓶颈。
  2. 网络应该轻松利用图像中的上下文信息来预测attention maps。

对于每个downsized img,CornerNet-Saccade预测了3个attention map,一个为了small obj,一个为了medium obj,一个为了large obj。小obj的bounding box的大小小于32pixels,中号的介于32到96pixel之间,大号obj pixel大于96。分别预测不同对象大小的位置,使我们可以更好的控制CornerNet-Saccade在每个位置上应放大多少。可以在较小的obj的位置上放大多一些,而在中等obj的位置上放大小一点。

我们通过使用不同尺度上的feature map来预测attention maps。这些feature map从CornerNet-Saccade的主干网络中获得,其主干网络是hourglass网络。每个hourglass模块都应用了多个卷积和下采样层以缩小输入feature maps的大小。然后,再通过多个卷积和上采样层将feature map转换到原始的输入分辨率。来自上采样层的feature maps用于预测attention map。较小比例的feature map用于更小的obj而较大的feature map用于较大的obj。我们通过将3x3的Conv-ReLU模块和随后的1x1Conv-Sigmoid模块应用于每个feature map来预测attention map。测试阶段,只处理得分大于阈值 t 的位置(实验中,t=0.3)

当Corner-Saccade处理downsized img时,它很有可能在图片中检测出一些obj,并生成对应的bouding box。虽然这些bounding box可能并不怎么准确。因此,我们还会在高分辨率检测region,以获得更好的bounding box。

训练阶段,我们设置attention map上每个bounding box的中心位置设置为正样本,其余为负样本。使用focal loss α = 2

3.2 检测目标

CornerNet-Saccade使用从缩小的图像获得的位置来确定要处理的location。如果直接从缩小的图像中裁剪区域,某些obj可能太小而无法检测。因此,根据第一步获得的比例尺信息(对应ss、sm 、sl),对应在高分辨率下检测区域。

对于从attention map获得的位置,我们可以针对不同大小的obj按照不同的比例进行放大。我们设置ss=4、sm=2、sl=1。在每个可能的location(x, y),对downsized img按比例(ss等)放大。然后将CornerNet-Saccade应用于以该位置为中心大小为255x255的窗口。

从bounding box中获得的位置会提供有关obj尺寸的更多信息。我们可以使用bounding box的大小来确定放大的比例。同时,还移除了触碰边界的bounding box,因为剪裁的区域没有包含完整的obj。训练阶段,我们是使用了CornerNet中的训练损失来预测corner heatmap,embedding、offset。

3.3 平衡精度与速度

通过控制每个图像要处理的对象位置的最大数量俩平衡精度与速度。我们会有限考虑更可能包含obj的位置。这样,在获得obj位置之后,我们将根据他们的得分对其进行排名,并优先确定从边界框获得的位置。给定要处理的kmax个crops,我们将检测Top-Kmax个目标的位置。

3.4 已知冗余的定位

当目标之间比较相近的时候,我们可能会产生高度重叠的区域。不希望同时处理两个区域,因为处理其中的一个可能会检测到相近的另一个区域的对象。
在这里插入图片描述
我们采用了类似NMS的方式来移除多余的locations。首先,我们将目标的定位进行排名,将bounding box的位置优先于attention map的位置。然后,我们将保留最佳目标位置,并删除最接近最佳位置的其他locations。重复这一操作,知道没有剩余的obj location。

3.5 主干网络

我们设计了一个新的hourglass主干网络,在CornerNet-Saccade中起到了更好的效果。这个新的hourglass网络包含三个hourglass模块,深度为54层。(原CornerNet包含两个hourglass模块,层数104)。新的这个叫:Hourglass-54

在Hourglass-54中的每个hourglass模块都有着更少的参数,并且比Hourglass-104的更浅。按照Hourglass-104的缩小策略,通过stride=2来缩小feature。在每个下采样层之后添加了一个跳跃的残差模块。每个hourglass模块将input feature缩小了三倍,并沿途增加了通道的数量(384,384,512)。在模块中间有一个带有512个通道的残差模块,在每个上采样层之后还有一个残差模块。同时,在hourglass模块之前,我们还将图像缩小了两倍。

训练中为hourglass网络添加中继监督。测试期间,我们仅使用来自网络中最后一个hourglass模块的预测。

3.6 训练细节

在attention maps和obj locations的loss中使用Adam进行优化,同时使用了同CornerNet中相同的训练超参数。网络输入的大小为255x255,同样是inference时的输入大小。Batch size=48。使用同CornerNet中的一样的数据增广。当我们在obj周围随机裁剪一个区域时,改对象将随意放置或以一些随机偏移放置在中心。当网络检测到以obj location为中心的crop中的目标时,可以保证训练与测试的一致性。(?没看懂

4. CornerNet-Squeeze

与Corner-Saccade通过专注于像素的子集来减少处理量相比,Squeeze通过减少每个像素的处理量来减少处理的总量。在CornerNet中主要的计算资源集中Hourglass-104上。Hourglass-104由这样的残差块组成:两个3x3的conv层和一个跳跃层。虽然Hourglass-104有出色的性能,但是就参数数量和推理时间而言,它太昂贵了。为了减少Hourglass-104的复杂性,我们融合了SqueezeNet和MobileNet的想法,开发了一个轻量的hourglass架构。

4.1 SqueezeNet和MobileNet中的想法

SqueezeNet提出了三个策略来减少网路的复杂性:

  1. 将3x3的kernel替换为1x1的kernel
  2. 将输入通道减少到3x3kernel
  3. 下采样更晚一点

The fire module——SqueezeNet的构成封装了前两个想法。The fire module 首先通过包含1x1过滤器的squeeze层来减少输入通道的数量。然后,它将结果馈送至由1x1和3x3过滤器组合的扩展层。

基于SqueezeNet提供的思路,我们在CornerNet-Squeeze中使用了the fire module而不是残差块(residual block)。除此之外,受启发与MobileNet,我们用3x3的深度可分离卷积替换了第二层中的3x3的标准卷积,这进一步缩短了推理时间。

没有使用SqueezeNet的第三个想法。

除了替换了残差块,我们还进行了其他的修改。

  1. 通过在hourglass模块之前增加一个下采样层,并在每个hourglass模块中删除一个下采样层,我们减少了hourglass模块的最大特征图分辨率。(代码中在pre中添加了一个residual block,其他的只有一个,而Squeeze有两个)
  2. Squeeze在hourglass模块之前将img尺寸缩小了三倍,而CornerNet只缩小了两倍。
  3. 替换了CornerNet预测模块中的3x3过滤器,将其替换为1x1的过滤器。
  4. 用一个4x4的kernel的转置卷积替换了hourglass网络中的nearest neighbor upsampling。

4.3 训练细节

使用了同CornerNet一样的损失和超参数。唯一的改变是Batch size。在Cornernet-Squeeze中,在相同的图像分辨率下,在hourglass模块之前将图像缩小一倍,从而你使得内存的使用减小了四倍。

5. 实验对比

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_39065196/article/details/108561005

智能推荐

漂亮的js删除确认提示框_hehuan1213的博客-程序员秘密

<br />演示地址:http://www.corange.cn/demo/3697/<br /><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" <br />"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <br /><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <br /

python计算学分绩点_GitHub - junfenghu/calc_GPA: 计算学分基点_大鹏侃金的博客-程序员秘密

# 计算学分基点和获取四六级成绩计算学分基点公式:学分基点=∑(课程成绩*课程学分)/应修学分数据来源:[http://210.44.176.116/cjcx/zcjcx_login.html](http://210.44.176.116/cjcx/zcjcx_login.html)计算细节:全校性公选课不参与学分绩点计算选修课参与学分计算二级学分计算方法:合格:60分,不合格0分五级学分计算方法...

Android在指定View的下方显示PopupWindow_basepopupwindow显示在view之下_酒尽雪满天的博客-程序员秘密

今天工作不忙,所以就把这些年做Android开发的一些经验技巧陆续写到博客上,一来是做自己的备忘,二来是可以帮助大家提高自己的技能。大家在做下面的弹出层时用的应该都是android的PopupWindow吧(不排除有人直接用ListView盖在上面的),那么PopupWindow是怎么显示在“全部商圈”的正下方呢?这里就要计算一下了,但是并不是每个人都擅长去计算的。那我把自己写的计算的

Android学习笔记(十)之WIFI服务的开启和关闭_cuiran的博客-程序员秘密

效果演示现在的程序大多都需要Internet支持,下面主要说下针对Wifi服务的开启和关闭     详细步骤修改xml文件首先新建工程,然后修改main.xml<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_wid

leetcode笔记:Rotate Image_Herbert_Zero的博客-程序员秘密

该题要求将图像顺时针旋转90度,最简单的做法就是画个图出来观察旋转90度之后的图像的情况,经过分析可知,顺时针旋转90度就是将原来的图像的最后一行作为第一列,倒数第二行作为第二列,因此类推,第一行作为最后一列。

随便推点

帆软报表 显示较多列时,分页断开显示_帆软 分页表格断裂_qq1429351723的博客-程序员秘密

1、分页模式预览改为数据分析模式预览,2、在模板-页面设置-纸张大小调大改为数据分析模式预览,或者在模板-页面设置-纸张大小调大

Lync 2013 配合 Sonus SBC 1000/2000 配置呼叫转接和同时拨打_csid_502的博客-程序员秘密

在Lync 2013 &amp; SFB2015环境下,我们经常需要配置呼叫转接和同时拨打,为实现以上两个功能我们需要在语音网关上和Lync上做一些特殊的配置,才可以实现。首先,我们看看Lync是如何实现呼叫转接的(同时拨打有些类似)。下图:如上图所示,17712340001拨打12345678,12345678配置了呼叫转接到17712340002;在我们没有做特殊...

Java全栈程序员之02:Ubuntu下Java环境安装、配置、测试_weixin_33734785的博客-程序员秘密

在上文讲完之后,我们手里的ubuntu只能算是一个上网机,什么也干不了,本篇我们将折腾它为开发机。这里,我们这里假定你对linux体系是初级选手,所以本篇会讲的啰嗦一点,高手就出门左转吧。 1.安装首先我们确定下我们安装的Ubuntu系统是否已经安装了java环境。进入终端,敲入命令su,进入root模式(当然也可以省掉这一步),敲入命令java -version。如果看到这个...

分享实录 | 单人开发场景下的测试环境实践_阿里开发者的博客-程序员秘密

在软件研发过程中,“测试环境”是部署最频繁、也是开发者使用最频繁的一种运行环境,稳定而易用的测试环境能够极大提高开发者的工作效率和幸福感。为更好的将阿里巴巴在测试环境管理方面的实践和经验跟广大开发者分享,《云效说码》策划了《阿里巴巴Kubernetes测试环境开源工具箱》系列直播视频,由阿里巴巴技术专家林帆(金戟)和郑云龙(砧木) 来为大家讲述。本系列分享共有三节内容,本文整理自砧木的第二次分...

从此英语渣渣也能看懂man手册-【linux man手册汉化安装使用教程】_初心@[email protected]的博客-程序员秘密

中文man手册安装使用一、yum安装cman二、编译安装三、汉化man手册使用(cman)yum源:阿里源博客使用的linux版本:CentOS Linux release 7.7.1908 (Core)注:博客中包含常见所以liunx版本的安装方法,并附加安装包的百度网盘链接。一、yum安装cman这个方法肯定首选yum安装 这个方法最简单yum源配置←点击这里查看安装需要的包...

机器学习算法之EM算法(中)_emd算法_小丑嘲笑的博客-程序员秘密

当年刚学打篮球的时候,疯狂地迷恋上了乔丹,然后迷恋上了NIKE,更熟记了NIKE的那句广告语:JUST DO IT。 然后…我从此进入了IT行业。言归正传:介绍一下Jensen不等式EM算法直观案例...

推荐文章

热门文章

相关标签