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

智能推荐

iOS 的用户认证:使用Swift和Ruby on Rail_颐和园的博客-程序员秘密

iOS 的用户认证:使用Swift和Ruby on Rails 原文:User Authentication on iOS with Ruby on Rails and Swift 作者:Subhransu 译者:kmyhy Update:05/13/2015 Updated for Xcode 6.3 / Swift 1.2.用户登录是大部分 iOS app 都需要的基本功

ktx纹理图片解析_ktx文件_右眼视觉90的博客-程序员秘密

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

JS逆向加密——某乎反爬x-zse-96_.含笑.的博客-程序员秘密

抓包分析这里用于学习分析某乎的搜索案例的加密参数找到请求的数据,多次抓包请求,对比请求的参数以及动态变化的参数,然后携带参数去模拟请求这里 主要是有个 x_zse_96 带带加密参数 需要我们去分析解密加密参数分析首先 浏览器全局搜索 加密的参数x-zse-96,会搜索出来 俩个位置,在这俩个位置都打上断点然后刷新网页,看会在哪个断点断下分析一下x-zse-96的由来和逻辑,截图和控制台有详解,最后再到 signature的地方 打上断点,进入函数里面是调试,看具体的加密逻辑这里的

原VB封装的命名空间Microsoft.VisualBasic的妙用(方便,实用,高效,快速)_luoyanqing119的博客-程序员秘密

1.非常方便的MY对像。My对象的第一层成员如下:My.Application Object:Accessing application information and services.My.Computer Object:Accessing the host computer and its resources, services, and data.     My.Forms

2019icpc南昌邀请赛F(线段树)_weixin_30757793的博客-程序员秘密

题目链接:https://nanti.jisuanke.com/t/40258题意:给长为n的数组a,有m次操作,包括单点修改和查询F(l,r),其值为所有f(i,j)的异或和,l<=i<=j<=r,即其中(n,m<=1e5).思路:这种题可以用线段树来进行修改和查询,但需要先化简。对于l<=x<=r,包括ax的区间有(r-x+1)...

CompletableFuture总结_晴天有雷的博客-程序员秘密

java8 completableFuture总结1. 简介completableFuture是JDK1.8版本新引入的类public class CompletableFuture<T> implements Future<T>, CompletionStage<T> 实现了 Future 和 CompletionStage 接口CompletionStage接口去支持完成时触发的函数和操作2. 方法说明2.1 创建异步操作(runAsync、suppl

随便推点

Debian--9 安装 VirtualBox_OLIVERORCHID的博客-程序员秘密

~~~提醒:一定要看终端的输出日志进入正文:1>查看内核版本 uname -aLinux ice 4.9.0-4-amd64 #1 SMP Debian 4.9.51-1 (2017-09-28) x86_64 GNU/Linux我的是 4.9.0-4-amd642>下载VirtualBox和我相同版本号的 直接使用如下语句就OK: wget http://download.vi

使用mybatis-plus通过自定义模版来自动生成相关模版代码_mybatisplus templateengine_chenm1xuexi的博客-程序员秘密

在现在的开发中,对我们开发人员而言,最重要的就是开发效率,本次讲解的就是使用mybatis-plus来完成自定义代码生成的教程。 我们在对一个框架进行自定义拓展的话,第一种方式就是阅读官方文档,如果官方文档没有给出相关的解决方案,我们可能还需要通过查看源码来完成我们想要实现的功能,我们都知道mybatis-plus实现了代码自动生成器,我们通过官方文档就可以查看,我们知道通过mybati...

orace快速导入mysql_Oracle/MySQL数据快速导入MySQL的方法_weixin_39556702的博客-程序员秘密

Oracle/MySQL数据快速导入MySQL的方法Cyberverse 2019-04-28 12:02:22 2947 收藏 3分类专栏: java成长之路版权本地Oracle安装请移步:本地Oracle服务一栈式解决方案&常见问题解决方法一、工具Navicat Premium 12,有能力的请支持正版,下面分享一个免安装学习版,仅供学习使用链接:https://pan.baidu.c...

新建webpart 进行中..hello world!_weixin_33834679的博客-程序员秘密

http://www.microsoft.com/click/SharePointDeveloper/. 转载于:https://www.cnblogs.com/xiexienet/archive/2008/06/04/1213697.html

禁止ip频繁访问及拉黑名单_"is_file($_server[\"document_root\"]"_每天都进步一点点的博客-程序员秘密

在前台公共文件中加入引入文件(注意后台不要引入):if(is_file($_SERVER['DOCUMENT_ROOT'].'/defense.php')){ require_once($_SERVER['DOCUMENT_ROOT'].'/defense.php');}defense.php文件放根目录:header('Content-type: text/html; cha...

“京东区块链技术白皮书”解密互联网应用(附下载链接)_架构师技术联盟(Hardy)的博客-程序员秘密

Hardy 架构师技术联盟请点击此处输入图片描述请点击此处输入图片描述      前不久,京东发布了“京东区块链技术白皮书(2018)”。相比华为发布的“华为区块链白皮书(附下载链接)”,京东区块链将聚焦运用于供应链、金融、保险防欺诈和大数据安全五个领域,各自聚焦自身技术和市场优势,京东给各大互联网厂商做了一个很好的例子。      区块链本质上是一种健壮和安全的分布式状态机,典型的技术构成包括共...

推荐文章

热门文章

相关标签