[论文理解] How much position information do convolutional neural network encode?

How much position information do convolutional neural network encode?

Intro

文章是ICML2020的一个工作,探究了CNN到底有没有编码位置信息,这些位置信息在哪些神经元中被编码、这些位置信息又是如何被暴露给神经网络学习的。文章通过大量实验表明,CNN不仅可以编码位置信息,而且越深的层所包含的位置信息越多(而往往越深的层解释性越差,浅层学习到的形状、边缘等比较容易解释),而位置信息是通过zero-padding透露的,显然,图像边缘的zero-padding暗示了图像的边界,这就让具有平移不变性的神经网络不仅能利用不变性对一张图中不同位置的物体进行分类,还能利用zero-padding带来的位置信息,编码物体所在图像中的位置,而这一点在显著性目标检测和语义分割等任务中是非常有用的。

Position information in CNNs

首先通过下面一张图说明问题是怎么来的:

上图是三组显显著性区域的heatmap可视化结果,在每一组实验中,如果给定左边的图,显著性区域是偏中间的,而把图片右边crop掉(每组的右边的图),发现显著性区域有了变换,shift到了对应crop图的中心。

显著性区域一般都是在图像中间的,所以可以简单得出一个结论,CNN学习到了哪里是输入图像的中间,所以将显著性区域的预测结果向中间shift。

那么问题来了,CNN是如何学习到位置信息的呢?

Position Encoding Module

为了探究CNN对位置信息的编码,文章将backbone提取的特征输入到一个结构中,利用这个结构来预测位置信息。

以VGG为例,作者分别提取VGG的五层特征,插值到同一size后concat起来,然后接几层卷积结构,映射到一张能表示位置信息的gt,gt一会说。整个网络结构称为PosENet,其中backbone可以为任意特征提取的网络,甚至可以没有。大致的结构如图所示:

对于gt,是作者生成的gradient-like mask。注意这个like,就是梯度形状的图片,这里不是指back propagation回传的梯度,就理解为图像梯度就行。

具体定义了水平方向梯度形状、竖直方向梯度形状、高斯形状、水平方向两条杠形状的和竖直方向两条杠形状的。

具体的直接看下图:

这些图像作为gt是因为他们是和输入图像同size的,所以每个map值都对应了一个位置,为了方便可视化才这样的。因此,这些图可以作为随机label,如果CNN并没有编码位置信息,那么想要映射到这样的图是不可能的,因为输入的图片和label是完全不相关的(除非输入的图像包含了位置信息)。这里虽然和后面padding的实验无关,但是可以想象,如果没有zero-padding,就没有边界暗示,相当于不知道坐标原点,因此想要映射到这样图是不可能的。

此外,作为输入的图像不仅有一般数据集中的自然图像,还有纯黑图像、纯白图像、噪声图像等等。

对此,作者做了如图所示的实验:

其中最左边一列是输入,第二列是GT,第三列是直接没有backbone接position encoding module,第四列用VGG backbone,第五列resnet backbone。其中backbone的参数都冻结,position encoding module都不padding。

第三列表明没有backbone的pretrain权重,网络无法通过输入直接映射到gt(这是显然,之后作者还做了给padding的,给了padding就可以接近gt了),第四、五列说明了pretrain的网络输出的特征中编码了位置信息,这帮助了后面接的position encoding module预测到gt。

随后作者探究了position encoding module层数对结果影响的实验,结论是:层数越多结果越好,因为感受野更大了,利用到了更多位置信息编码后的神经元。

接着探究了position encoding module的kernel size对结果影响,结论是:kernel size越大结果越好,原因同上,感受野更大了。

Where is the position information stored?

还有一个问题当看到那个网络结构的时候我就在想,作者有没有探究到底是哪些层的feature包含位置信息,如果都包含,哪些包含的更多呢?看到后面看到作者也对此做了实验。

实验过程就是对VGG网络,如果只拿第一层特征映射到gt会怎样,只拿第二层会怎样,以此类推,然后评估mae和斯皮尔曼相关系数即可。

结论是,越深层的特征,其包含的位置信息更多,为了防止是神经元数量对结果造成的影响,作者把f4和f5的神经元数量设置成一样的,然后实验结果仍然是越深的位置信息越多。(由于网路越深,感受野越大,再次印证上面两个实验的结论)。

Where does position information come from

最后一个问题就是这些位置信息是从哪里学习到的呢?很容易就能想到是zero-padding为图像提供了一层暗示,暗示了图像的边界。

于是可以做个简单的实验验证。

每张图对应描述如图所示,可以看出来不给随着pad数增加,可视化结果越接近gt。

在更多的实验中,作者验证了显著性检测和语义分割使用zero-padding和不适用zero-padding,结果表明用了zero-padding的在结果上更加优秀。

在不需要图像位置的任务中作者并没有做相关实验,位置信息对于一个输入只喊目标的分类问题也许没有太大的帮助,知识添加了额外的无关信息,相当于添加噪声,因此我感觉,如果是需要用到位置信息的任务,最好使用zero-padding,这显然会使结果更好。

原文地址:https://www.cnblogs.com/aoru45/p/12258217.html

时间: 2024-10-12 16:09:06

[论文理解] How much position information do convolutional neural network encode?的相关文章

How much Position Information Do Convolutional Neural Networks Encode?

知乎上看到一篇博客https://zhuanlan.zhihu.com/p/99766566,讨论cnn中位置信息是如何学到的,感觉挺有意思的,就看了一下原文, 简单记录一下几个实验部分. 1.位置信息来自预训练模型 作者分别用预训练权重的vgg,resnet和posenet来对比,发现用了预训练权重的vgg和resnet提取的位置信息更准确.但这个实验我 觉得设计的不合理,真正对比实验应该设计的是,用预训练权重的vgg,resnet对比随机初始化的vgg,resnet,而不是和单层的posne

论文笔记《ImageNet Classification with Deep Convolutional Neural Network》

一.摘要 了解CNN必读的一篇论文,有些东西还是可以了解的. 二.结构 1. Relu的好处: 1.在训练时间上,比tanh和sigmod快,而且BP的时候求导也很容易 2.因为是非饱和函数,所以基本不会出现梯度消失的情况 Relu只要控制好learing rate,可以说是完胜之前的激活函数,也因此可以帮助我们训练更深层次的网络. 现在对Relu的进一步增强还有研究,有兴趣可以了解. 2.GPU并行计算在当时是个很好思路,不过作者的trick就有点...虽然说是通过cross-validati

论文阅读(Weilin Huang——【TIP2016】Text-Attentional Convolutional Neural Network for Scene Text Detection)

Weilin Huang--[TIP2015]Text-Attentional Convolutional Neural Network for Scene Text Detection) 目录 作者和相关链接 方法概括 创新点和贡献 方法细节 实验结果 问题讨论 作者和相关链接 总结与收获点 作者补充信息 参考文献 作者和相关链接 论文下载 作者: tong he, 黄伟林,乔宇,姚剑 方法概括 使用改进版的MSER(CE-MSERs,contrast-enhancement)提取候选字符区域

VarGNet: Variable Group Convolutional Neural Network for Efficient Embedded Computing - 1 -论文学习

VarGNet: Variable Group Convolutional Neural Network for Efficient Embedded Computing Abstract 在本文中,我们提出了一种新的用于高效嵌入式计算的网络设计机制.受到有限的计算模式的启发,我们建议固定分组卷积中的通道数,而不是现有的固定总组数的做法.我们的基于解决方案的网络,称为可变分组卷积网络(VarGNet),可以在硬件方面更容易地优化,因为层之间的计算方案更加统一.在分类.检测.像素解析和人脸识别等各

【论文阅读】A mixed-scale dense convolutional neural network for image analysis

A mixed-scale dense convolutional neural network for image analysis  Published in PNAS on December 26, 2017 Available at PNAS Online: https://doi.org/10.1073/pnas.1715832114 Danie ?l M. Pelt and James A. Sethian 写在前面:本文方法无法使用TensorFlow或Caffe等现有框架实现.

人群计数:Single-Image Crowd Counting via Multi-Column Convolutional Neural Network(CVPR2016)

本博文主要是CVPR2016的<Single-Image Crowd Counting via Multi-Column Convolutional Neural Network>这篇文章的阅读笔记,以及对人群计数领域做一个简要介绍. Abstract 这篇论文开发了一种可以从一个单幅的图像中准确地估计任意人群密度和任意角度的人群数目.文章提出了一种简单有效的的多列卷积神经网络结构(MCNN)将图像映射到其人群密度图上.该方法允许输入任意尺寸或分辨率的图像,每列CNN学习得到的特征可以自适应由

Heterogeneous Multi-task Learning for Human Pose Estimation with Deep Convolutional Neural Network

论文题目Heterogeneous Multi-task Learning for Human Pose Estimation with Deep Convolutional Neural Network, 链接 该篇论文是IJCV 2014的, 文章的核心multi-tasks的joint traning. 直接看图说话, 该论文的核心思想/步骤可以分为两个components: 1对图像里面的person进行detection, 以便裁剪出图像里面的人. 这个显然是必要的, 尤其是图像大而p

Some Improvements on Deep Convolutional Neural Network Based Image Classif ication

本文的大概思想就是: (1)增加训练样本:(2)增加测试样本预测数量:(3)多个CNN模型的融合: 一.增加训练样本的数量 常用的增加样本的方法有:crop.flip及add randomly generated ligthing: 1.传统的crop方法是把图像resize到256*256,然后在进行crop,但是这样会损失掉一部分有用的信息例如下图: 因此本文采用的方法:先将图像的最小的一边放大到256,这样就形成了256*N或者N*256,然后在进行crop: 2.除了随机加入光照噪声以外

读paper:Deep Convolutional Neural Network using Triplets of Faces, Deep Ensemble, andScore-level Fusion for Face Recognition

今天给大家带来一篇来自CVPR 2017关于人脸识别的文章. 文章题目:Deep Convolutional Neural Network using Triplets of Faces, Deep Ensemble, and 摘要: 文章动机:人脸识别在一个没有约束的环境下,在计算机视觉中是一个非常有挑战性的问题.同一个身份的人脸当呈现不同的装饰,不同的姿势和不同的表情都可以使人脸看起来完全不同.这种相同身份的变化可以压倒不同身份的变化,这样给人脸识别带来更大的挑战,特别是在没有约束的环境下.