热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

《CornerNet:DetectingObjectsasPairedKeypoints》论文笔记

1.概述这篇文章提出了CornerNet的目标检测模型,该模型是一个直通检测检测模型,与FasterRCNN那种两阶段的检测模型不一样,
1. 概述

这篇文章提出了CornerNet的目标检测模型,该模型是一个直通检测检测模型,与Faster RCNN那种两阶段的检测模型不一样,更类似于SSD与YOLO。但是与SSD等模型不同的是其并不使用anchor boxes,而是提出了一种叫做corner pooling的操作帮助网络更好地定位目标。在COCO数据集上的表现性能超过了所有现有的检测网路。
anchor boxes机制在现有两阶段以及直通检测网络模型中被广泛使用,这些模型中也是通过anchor的检出来进行边界的回归。但是anchor也会带来其的缺点,该文章中大体给出了两点:
1)通常需要大量的anchor,在DSSD中需要40k,而在RetinaNet中则需要100k。这么大量的anchor就带来了正例anchor的数量与负例anchor的比例及其不成比例,从而降低了网络的训练速度。
2)anchor boxes的引入带来了许多的超参数,并且需要进行细致设计。包括anchor boxes的数量、尺寸、长宽比例。特别是在单一网络在多尺度进行预测的情况下会变得复杂,每个尺度都需要独立设计。
下图是这篇文章中使用的网络结构可以描述为:
在这里插入图片描述
在该方法中舍弃传统的anchor boxes思路,提出CornerNet模型预测目标边界框的左上角和右下角一对顶点。使用单一卷积模型生成热点图和连接矢量:所有目标的左上角和所有目标的右下角热点图,每个顶点的连接矢量(embedding vector)。也就是该方法在卷积的输出结果上,分别预测边界框的左上角与右下角,之后寻找它们之间的对应关系。

主要思路其实来源于一篇多人姿态估计的论文。基于CNN的2D多人姿态估计方法,通常有2个思路(Bottom-Up Approaches和Top-Down Approaches):
Top-Down framework:就是先进行行人检测,得到边界框,然后在每一个边界框中检测人体关键点,连接成每个人的姿态,缺点是受人体检测框影响较大,代表算法有RMPE;
Bottom-Up framework:就是先对整个图片进行每个人体关键点部件的检测,再将检测到的人体部位拼接成每个人的姿态,代表方法就是openpose。

在文章中给出了两个创新点:
1)文章将目标检测上升到方法论,基于多人姿态估计的Bottom-Up思想,首先同时预测定位框的顶点对(左上角和右下角)热点图和embedding vector,根据embedding vector对顶点进行分组,论文中提到分组的依据是同目标的两个角点距离是很小的。
2)文章提出了corner pooling用于定位顶点。自然界的大部分目标是没有边界框也不会有矩形的顶点,依top-left corner pooling 为例,对每个channel,分别提取特征图对应位置处的水平和垂直方向的最大值,然后求和。
在这里插入图片描述
3)文中提出的CornerNet模型基于hourglass架构,使用focal loss的变体训练神经网络。

为什么基于角点的检测要比基于anchor boxes的检测效果更好,这里假设了两个原因:
1)anchor boxes的中心是依赖于目标的四条边,但是角点却只需要两个边,而且还是使用了corner pooling,因而表现比anchor好。
2)采用了更加高效的空间检测框机制,这里只使用O(w∗h)O(w*h)O(wh)个角点就代表了O(W2∗h2)O(W^2*h^2)O(W2h2)的可能检测框。

2. CornerNet

CornerNet的整体结构:
在这里插入图片描述
上面的图中给出的是CornerNet的网络结构图,可以看出CornerNet模型架构包含三部分,Hourglass Network,Bottom-right corners&Top-left Corners Heatmaps和Prediction Module。
其中Hourglass Network是人体姿态估计的典型架构,论文堆叠两个Hourglass Network生成Top-left和Bottom-right corners,每一个corners都包括corners Pooling,以及对应的Heatmaps, Embeddings vector和offsets(为了提升框的精度)。embedding vector使相同目标的两个顶点(左上角和右下角)距离最短, offsets用于调整生成更加紧密的边界定位框。最后预测框也是在这三个生成的结果的基础上使用后处理算法进行实现的。

2.1 Detecting Corners

Paper模型生成的heatmaps包含C channels(C是目标的类别,没有background channel),每个channel是二进制掩膜,表示相应类别的顶点位置。
在这里插入图片描述
对于每个顶点,只有一个ground-truth,其他位置都是负样本。但是网络的输出并不会从开始就与上图标注的绿色虚线重合,因而是按照了一定的策略来进行组合的。具体来讲是这样的:在训练过程,模型减少负样本,在每个ground-truth顶点设定半径r区域内都是正样本,这是因为落在半径r区域内的顶点依然可以生成有效的边界定位框,论文中设置IoU=0.7IoU=0.7IoU=0.7。那么对于与实际的定位有偏移的网络输出论文使用了惩罚,是按照没有归一化的而为高斯函数e−x2+y22σ2e^{-\frac{x^2+y^2}{2\sigma^2}}e2σ2x2+y2设置的,其中σ=13\sigma=\frac{1}{3}σ=31,中心坐标是标注的角点定位。
pcijp_{cij}pcij表示类别为c,坐标是(i,j)(i,j)(i,j)的预测热点图,ycijy_{cij}ycij表示相应位置的ground-truth,其指融合了前面的提到的高斯半径。论文提出变体Focal loss表示检测目标的损失函数:
在这里插入图片描述
其中参数NNN是图片中目标的总数,参数α=2\alpha=2α=2β=4\beta=4β=4适用于控制每个部分的贡献程度。
在卷积神经网络中存在着下采样层,这样从原始的图像输入到最后的heatmap产生的这个过程会累计误差,特别是在对一些小目标的物体进行检测的时候,这样的误差就无法接受了,因而文章引入了偏移修正来修正它:
在这里插入图片描述
然后使用L1损失与原图标注的位置对其进行修正:
在这里插入图片描述
最后的网络损失函数是上面的几个相加的形式:
在这里插入图片描述
其中,α=β=0.1,γ=1\alpha=\beta=0.1,\gamma=1α=β=0.1,γ=1

2.2 Grouping Corners

输入图像会有多个目标,相应生成多个目标的左上角和右下角顶点。对顶点进行分组,论文引入Associative Embedding的思想,模型在训练阶段为每个corner预测相应的embedding vector,通过embedding vector使同一目标的顶点对距离最短,即是模型可以通过embedding vector为每个顶点分组。
模型训练Lpull损失函数L_{pull}损失函数Lpull使同一目标的顶点进行分组, Lpush损失函数L_{push}损失函数Lpush用于分离不同目标的顶点。etke_{tk}etk是左下角的顶点,ebke_{bk}ebk是右下角的顶点。
在这里插入图片描述

2.3 Corner Pooling


2.3.1 top-left corner

一般来说在heatmap上并不存在直观的选择依据,因而文章中采用了corner pooling的方法。对于在左上角的角点(顶点)使用其在水平与垂直方向上分分别使用max pooling,然后对其结果合并来实现角点的定位,其运算流程可以通过下面这幅图来进行说明
在这里插入图片描述
对于要判定点(x,y)(x,y)(x,y)是不是左上角的角点, 这里使用ftf_tftflf_lfl去代表这个左上角点pooling layer的特征图,使用fti,jf_{t_{i,j}}fti,jfli,jf_{l_{i,j}}fli,j来代表在位置(i,j)(i,j)(i,j)ftf_tftflf_lfl的特征向量。对于输入大小为W∗HW*HWH大小的特征图,计算位置(i,j)(i,j)(i,j)处到(i,H)(i,H)(i,H)ftf_tft的向量ti,jt_{i,j}ti,j,计算位置(i,j)(i,j)(i,j)处到(j,W)(j,W)(j,W)flf_lfl的向量li,jl_{i,j}li,j,最后再将两个加起来作为最后的输出。
在这里插入图片描述

2.3.2 bottom-right corner

bottom-right corner的计算与上面top-left的计算是类似的。它在(0,j)(0,j)(0,j)(i,j)(i,j)(i,j)的特征图与(i,0)(i,0)(i,0)(i,j)(i,j)(i,j)的特征图上进行最大池化操作之后再将两者得到的结果相加得到最后的结果。

2.3.3 预测模块

预测模块使用的结构使用ResNet与卷积组合的形式,其结构(top-left corner部分)如下。最后预测生成Heatmap、Embeddings、Offsset。
在这里插入图片描述

2.4 Hourglass Network

Hourglass Network同时包含了bottom-up(from high resolutions to low resolutions)和top-down (from low resolutions to high resolutions)。而且,整个网络有多个bottom-up和top-down过程。这样设计的目的是在各个尺度下抓取信息。针对目标检测任务,论文调整了Hourglass一些策略。

3. 论文效果

在这里插入图片描述
**PS:**在这篇文章涉及到了SHM(Stack Hourglass Model),不了解的小伙伴可以参考这篇文章快速了解:Stacked Hourglass Networks - 堆叠沙漏网络结构详解


推荐阅读
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 2018年人工智能大数据的爆发,学Java还是Python?
    本文介绍了2018年人工智能大数据的爆发以及学习Java和Python的相关知识。在人工智能和大数据时代,Java和Python这两门编程语言都很优秀且火爆。选择学习哪门语言要根据个人兴趣爱好来决定。Python是一门拥有简洁语法的高级编程语言,容易上手。其特色之一是强制使用空白符作为语句缩进,使得新手可以快速上手。目前,Python在人工智能领域有着广泛的应用。如果对Java、Python或大数据感兴趣,欢迎加入qq群458345782。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 本文介绍了[从头学数学]中第101节关于比例的相关问题的研究和修炼过程。主要内容包括[机器小伟]和[工程师阿伟]一起研究比例的相关问题,并给出了一个求比例的函数scale的实现。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 统一知识图谱学习和建议:更好地理解用户偏好
    本文介绍了一种将知识图谱纳入推荐系统的方法,以提高推荐的准确性和可解释性。与现有方法不同的是,本方法考虑了知识图谱的不完整性,并在知识图谱中传输关系信息,以更好地理解用户的偏好。通过大量实验,验证了本方法在推荐任务和知识图谱完成任务上的优势。 ... [详细]
  • 基于移动平台的会展导游系统APP设计与实现的技术介绍与需求分析
    本文介绍了基于移动平台的会展导游系统APP的设计与实现过程。首先,对会展经济和移动互联网的概念进行了简要介绍,并阐述了将会展引入移动互联网的意义。接着,对基础技术进行了介绍,包括百度云开发环境、安卓系统和近场通讯技术。然后,进行了用户需求分析和系统需求分析,并提出了系统界面运行流畅和第三方授权等需求。最后,对系统的概要设计进行了详细阐述,包括系统前端设计和交互与原型设计。本文对基于移动平台的会展导游系统APP的设计与实现提供了技术支持和需求分析。 ... [详细]
  • cs231n Lecture 3 线性分类笔记(一)
    内容列表线性分类器简介线性评分函数阐明线性分类器损失函数多类SVMSoftmax分类器SVM和Softmax的比较基于Web的可交互线性分类器原型小结注:中文翻译 ... [详细]
  • 【论文】ICLR 2020 九篇满分论文!!!
    点击上方,选择星标或置顶,每天给你送干货!阅读大概需要11分钟跟随小博主,每天进步一丢丢来自:深度学习技术前沿 ... [详细]
  • ICRA2019最佳论文  Making Sense of Vision and Touch: SelfSupervised Learning of Multimodal Representatio
    文章目录摘要模型架构模态编码器自监督预测控制器设计策略学习控制器设计实验结论和展望会议:ICRA2019标题:《MakingSenseofVision ... [详细]
  • 移动传感器扫描覆盖摘要:关于传感器网络中的地址覆盖问题,已经做过很多尝试。他们通常归为两类,全覆盖和栅栏覆盖,统称为静态覆盖 ... [详细]
  • 都会|可能会_###haohaohao###图神经网络之神器——PyTorch Geometric 上手 & 实战
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了###haohaohao###图神经网络之神器——PyTorchGeometric上手&实战相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 程度|也就是_论文精读:Neural Architecture Search without Training
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了论文精读:NeuralArchitectureSearchwithoutTraining相关的知识,希望对你有一定的参考价值。 ... [详细]
  • Word2vec,Fasttext,Glove,Elmo,Bert,Flairpre-trainWordEmbedding源码数据Github网址:词向量预训练实现Githubf ... [详细]
  • 论文阅读:《Bag of Tricks for LongTailed Visual Recognition with Deep Convolutional Neural Networks》
    基于深度卷积神经网络的长尾视觉识别技巧包摘要近年来,挑战性长尾分布上的视觉识别技术取得了很大的进展,主要基于各种复杂的范式(如元学习)。除了这些复杂 ... [详细]
author-avatar
歪歪Doris
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有