0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

分类问题训练的GAP-CNN在目标定位方面的能力

zhKF_jqr_AI 来源:未知 作者:李倩 2018-08-20 08:50 次阅读

编者按:Udacity深度强化学习课程负责人Alexis Cook讲解了全局平均池化(GAP)的概念,并演示了为分类问题训练的GAP-CNN在目标定位方面的能力。

图像分类任务中,卷积神经网络(CNN)架构的常见选择是重复的卷积模块(卷积层加池化层),之后是两层以上的密集层(全连接层)。最后密集层使用softmax激活函数,每个节点对应一个类别。

比如,VGG-16的架构:

译者注:上图中,黑色的是卷积层(ReLU激活),红色的是最大池化层,蓝色的是全连接层(ReLU激活),金色的是softmax层。

运行以下代码,可以得到VGG-16模型的网络层清单:(译者注:需要安装Keras)

python -c 'from keras.applications.vgg16 import VGG16; VGG16().summary()'

输出为:

你会注意到有5个卷积模块(两到三个卷积层,之后是一个最大池化层)。接着,扁平化最后一个最大池化层,后面跟着三个密集层。注意模型的大部分参数属于全连接层!

你大概可以想见,这样的架构有过拟合训练数据集的风险。实践中会使用dropout层以避免过拟合。

全局平均池化

最近几年,人们开始使用全局平均池化(global average pooling,GAP)层,通过降低模型的参数数量来最小化过拟合效应。类似最大池化层,GAP层可以用来降低三维张量的空间维度。然而,GAP层的降维更加激进,一个h × w × d的张量会被降维至1 × 1 × d。GAP层通过取平均值映射每个h × w的特征映射至单个数字。

在最早提出GAP层的网中网(Network in Network)架构中,最后的最大池化层的输出传入GAP层,GAP层生成一个向量,向量的每一项表示分类任务中的一个类别。接着应用softmax激活函数生成每个分类的预测概率。如果你打算参考原论文(arXiv:1312.4400),我特别建议你看下3.2节“全局平均池化”。

ResNet-50模型没这么激进;并没有完全移除密集层,而是在GAP层之后加上一个带softmax激活函数的密集层,生成预测分类。

目标定位

2016年年中,MIT的研究人员展示了为分类任务训练的包含GAP层的CNN(GAP-CNN),同样可以用于目标定位。也就是说,GAP-CNN不仅告诉我们图像中包含的目标是什么东西,它还可以告诉我们目标在图像中的什么地方,而且我们不需要额外为此做什么!定位表示为热图(分类激活映射),其中的色彩编码方案标明了GAP-CNN进行目标识别任务相对重要的区域。

我根据Bolei Zhou等的论文(arXiv:1512.04150)探索了预训练的ResNet-50模型的定位能力(代码见GitHub:alexisbcook/ResNetCAM-keras)。主要的思路是GAP层之前的最后一层的每个激活映射起到了解码图像中的不同位置的模式的作用。我们只需将这些检测到的模式转换为检测到的目标,就可以得到每张图像的分类激活映射。

GAP层中的每个节点对应不同的激活映射,连接GAP层和最后的密集层的权重编码了每个激活映射对预测目标分类的贡献。将激活映射中的每个检测到的模式的贡献(对预测目标分类更重要的检测到的模式获得更多权重)累加起来,就得到了分类激活映射。

代码如何运作

运行以下代码检视ResNet-50的架构:

python -c 'from keras.applications.resnet50 import ResNet50; ResNet50().summary()'

输出如下:

注意,和VGG-16模型不同,并非大部分可训练参数都位于网络最顶上的全连接层中。

网络最后的Activation、AveragePooling2D、Dense层是我们最感兴趣的(上图高亮部分)。实际上AveragePooling2D层是一个GAP层!

我们从Activation层开始。这一层包含2048个7 × 7维的激活映射。让我们用fk表示第k个激活映射,其中k ∈{1,…,2048}。

接下来的AceragePooling2D层,也就是GAP层,通过取每个激活映射的平均值,将前一层的输出大小降至(1,1,2048)。接下来的Flatten层只不过是扁平化输入,没有导致之前GAP层中包含信息的任何变动。

ResNet-50预测的每个目标类别对应最终的Dense层的每个节点,并且每个节点都和之前的Flatten层的各个节点相连。让我们用wk表示连接Flatten层的第k个节点和对应预测图像类别的输出节点的权重。

接着,为了得到分类激活映射,我们只需计算:

我们可以将这些分类激活映射绘制在选定的图像上,以探索ResNet-50的定位能力。为了便于和原图比较,我们应用了双线性上采样,将激活映射的大小变为224 × 224.

如果你想在你自己的目标定位问题上应用这些代码,可以访问GitHub:https://github.com/alexisbcook/ResNetCAM-keras

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 神经网络
    +关注

    关注

    42

    文章

    4771

    浏览量

    100745
  • 图像分类
    +关注

    关注

    0

    文章

    90

    浏览量

    11916
  • 强化学习
    +关注

    关注

    4

    文章

    266

    浏览量

    11251

原文标题:用于目标定位的全局平均池化

文章出处:【微信号:jqr_AI,微信公众号:论智】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    仿人足球机器人目标定位技术与追踪算法改进

    移动机器人视觉的研究主要集中颜色模型建立、目标识别、定位以及跟踪等方面目标的实时识别与定位
    发表于 09-19 11:18 2693次阅读

    基于Labview的目标定位以及机械控制

    由于实习缘故,第一次接触Labview。想学习基于Labview基础上的目标定位以及机械控制的相关知识。我查了一些资料,但是还是没有很明晰的思路也不知如何下手。想向各位前辈高手咨询求助一下,有没有
    发表于 04-24 05:08

    TensorFlow的CNN文本分类

    TensorFlow中实现CNN进行文本分类(译)
    发表于 10-31 09:27

    NLPIR平台文本分类方面的技术解析

    分类体系进行了综合训练。演示平台目前训练的类别只是新闻的政治、经济、军事等。内置的算法支持类别自定义训练,该算法对常规文本的分类准确率较高
    发表于 11-18 17:46

    stm32上实现svm实时训练分类

    目标stm32上实现svm实时训练分类,特征向量为10维向量,分类结果为多目标
    发表于 08-17 06:24

    基于YOLOX目标检测算法的改进

    。2、本文方法2.1、 解耦 IoU 损失目标检测任务可分为目标分类目标定位两个任务。目标分类
    发表于 03-06 13:55

    基于无线传感器网络的目标定位算法研究

    无线传感器网络是一个多学科交叉的新兴前沿技术研究领域。它在环境检测、遥感、目标定位等领域具有广泛的应用。本文对目前几种主要的目标定位算法进行了分析,并对基于
    发表于 12-16 14:31 18次下载

    无线传感网络目标定位系统建模与仿真

    文章首先提出一种传感器网络目标定位系统的系统模型,然后利用Ptolemy Ⅱ建模仿真平台完成该传感器网络目标定位系统的系统级行为描述,并根据系统级建模方法学对该目标定位
    发表于 01-18 13:41 28次下载

    多点测量提高海底目标定位精度方法

    结合GPS定位和水声定位,给出了一种实用的海底目标定位方法。详细分析了使用水面多点测量方法时的测量误差,提供了具体的测点选择建议。
    发表于 10-08 15:42 20次下载
    多点测量提高海底<b class='flag-5'>目标定位</b>精度方法

    仅依赖连通度的多目标定位方法

    提出仅依赖连通度的多目标定位方法,将多目标定位问题转化为基于压缩感知的稀疏向量重构,解决室内参照物高密度分布的目标定位问题。定位方法仅以连通度为观测值,运用最小化,l-范数法求解
    发表于 02-11 11:13 0次下载

    双雷达地面目标定位算法

    传统的双雷达地面目标定位算法因测量数据本身固有的误差和量测噪声,使得基于非线性估计定位算法的定位精度不高。本文研究了一种新的双雷达地面目标定位算法,该算法将已知雷达探测数据以几何方式加
    发表于 03-13 14:09 3次下载
    双雷达地面<b class='flag-5'>目标定位</b>算法

    一种新的带有不确定性的边界框回归损失,可用于学习更准确的目标定位

    目标检测是一种多任务学习问题,包含目标定位目标分类。当前最佳的目标检测器(比如 Faster RCNN、Cascade R-
    的头像 发表于 04-23 16:38 6457次阅读
    一种新的带有不确定性的边界框回归损失,可用于学习更准确的<b class='flag-5'>目标定位</b>

    CNN和DBN肺结节影像分类识别的对比分析

    不同的深度学习模型肺结节图像分类方面的性能。首先,实验将预处理过的训练集和标签分别输入到CNN模型和υBN模型,达到
    发表于 06-16 16:21 10次下载

    如何区分图像分类目标检测技术

    目标检测的问题定义是确定目标在给定图像中的位置,如目标定位,以及每个目标属于哪个类别,即目标分类
    发表于 07-11 12:50 521次阅读

    python卷积神经网络cnn训练算法

    CNN采用卷积层、池化层、全连接层等组成,可以自动学习输入数据的特征,对于图像分类目标检测等任务具有出色的性能。本文中,我们将介绍CNN
    的头像 发表于 08-21 16:41 1686次阅读