16

基本原理 | 图片中的绝对位置信息,CNN能搞定吗?

 4 years ago
source link: http://mp.weixin.qq.com/s?__biz=MzAxMjMwODMyMQ%3D%3D&%3Bmid=2456348005&%3Bidx=1&%3Bsn=c04a70607ae30d17dda11e576736222c
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

mqYBjur.jpg!web

  磐创AI分享   

来源 | AI算法修炼营

作者 | SFXiang

论文概述

论文题目:《 How much Position Information Do Convolutional Neural Networks Encode? 

论文地址:https://openreview.net/forum?id=rJeB36NKvB

这个文章解释了CNN是怎么学到图片内的绝对位置信息的。文章 来自于加拿大学者,收录在ICLR2020。论文中主要说明了两件事:

  • 卷积神经网络能够引入 绝对位置信息 ,且不同的网络引入的程度不同。

  • 绝对位置信息是 通过zero-padding引入 的,并且 在深层的表征效果更好。

什么是图像中的绝对位置?

之前,CNN和绝对位置,这两个概念很少被一起讨论。

我觉得有两个原因:一是,大家普遍认为:CNN是平移不变的(对分类任务),或者说平移等变的(对分割和检测任务);二是, 没有具体任务上的需求 。比如对计算机视觉的三大物体感知任务,分类,分割和检测。物体分类跟位置没关系;语义分割作为像素级语义分类,也不依赖于位置;最有可能和绝对位置有关系的物体检测任务,被主流方法 解耦了绝对位置,变成相对于锚框或者锚点进行局部相对位置的回归。 这样,网络本身不需要知道物体的绝对位置,位置信息作为人为先验被用在前后处理进行坐标换算。 但是在很多任务上绝对位置信息很有价值,比如实例分割等问题中,对象+绝对位置就能唯一确定实例了。

一个很显而易见的观察是, 人的视觉系统是可以轻松知道绝对位置的, 比如: “左上角有一只鸟,它又飞到右边了” 。并且,对图像里的物体来说,本质上是 通过位置和形状来区分不同实例的。

CNN怎么学到绝对位置?

这篇文章先做了假设:

首先,我们知道,卷积网络学习到的原图特征 可用CAM进行显著性区域可视化 。文中进行了一个简单的试验,对一张图片进行裁剪,测试 裁剪前后的显著性区域的变化

理论上,裁剪前后图片中,因为特征都相同,共同对象的显著性区域应该是不变的,但实际中发现 裁剪后显著性区域也发生了偏移 ,这用卷积神经网络的平移不变性难以解释,怀疑是 位置信息 导致的。

于是, 作者 通过试验来进行分析 是否卷积神经网络能够学习到位置信息。

实验具体网络设计:

6zui6je.jpg!web

可以看到,网络分为两部分:

  • Encoder :是经过预训练的ResNet或者VGG等的backbone,参数不参与训练,只作为一个前馈网络提取特征;

  • Position Encoding Module :由卷积组成,参数可训练,实验中只用了一个卷积。

输入任意图片(图像是有内容的), 训练网络输出位置相关的图片。 比如,输入噪声图片,希望网络 输出水平坐标图(位置信息)。 同时 将图像归一化的梯度结果设置了5个目标mask:

H:水平方向  V: 竖直方向上  G: 高斯分布  

HS: 水平方向上的重复  VS: 垂直方向上的重

上述的标签可以认为是一个随机标签,因为与图像的内容没有相关性,只和一些像素在图像中的位置有关系。

评估指标: SPC: spearman相关系数,衡量两个变量依赖性的非参数指标,用于评价两个统计变量的相关性。 MAE: 预测位置图和真实梯度位置图之间的平均像素差异。

n67vYrj.jpg!web

其中VGG/ResNet表示利用预训练的权重提取特征图作为Position Encoding Module的输入。而 PosENet的输入直接是原图

从实验结果表格中可以看出, 通过两者的对比发现,从原图中提取位置信息是非常困难的。 但是经过神经网络的编码,提取到了一致的位置信息。 而测试集结果的高性能表达,表明了 模型并非是盲目地拟合噪声,而是提取了真实的位置信息。

具体来说,在有 zero-padding的情况下 ,基于VGG和ResNet的模型 都可以 预测比较合理的位置相关的输出,比如横坐标或者纵坐标。

没有padding的情况下,输出只会直接响应在输入的内容上,不能预测和内容无关的位置信息。

VbUZnyi.jpg!web

上图对结果进行了可视化,对应着ground truth ,可以看到预测位置图与真实位置图之间的相关性,进一步揭示了这些网络中位置信息的存在。 位置信息在分类的卷积神经网络结构中都隐式编码,无需进行任何明确的监督。

哪些因素影响绝对位置信息?

前面的实验验证实了 卷积神经网络在分类任务中的预训练权重,能够编码绝对位置信息 ,然而这些编码受哪些因素影响呢?

因为绝对位置信息是通过Encoder模块得到的特征图,经过Position Encoding Module提取位置,而在提取过程中只有卷积操作。因此考虑 卷积操作和特征图

VJZRZbI.jpg!web

  • 卷积核堆叠层数: 如上面(a)结果所示, 堆叠多层卷积 可以提高网络的位置信息读取。 原因可能是多个卷积层堆叠,增加了感受野。

  • 扩大卷积核尺寸: 从结果(b)可知 更大的核尺寸可能会捕获更多的位置信息 ,这也和上面堆叠卷积层数相呼应,都是增加了感受野。

aauay2Z.png!web

  • 特征层的影响: 与浅层的特征相比, 深层的特征可获得更高的性能 但这里还有一个变量是各个层的空间通道数不一样,因此控制变量,使得具有相同的特征来对比明确了 位置信息在网络深层有更强的编码。

绝对位置信息来自于哪里?

从前面两个实验了解到 卷积神经网络具有编码位置信息的能力,且原图不具有引入位置信息。 那么这个位置信息不是来自于原图,那么是来自于哪里呢? 答案是 Zero-Padding。

作者通过实验分析,对Position Encoding Module网络中的padding数进行控制变量测试, 发现padding增加,位置信息更加显著。 同时,利用VGG网络的试验也更加证实了 padding引入位置信息

U3uUjuq.png!web

YFZjqq2.jpg!web

从上图中可视化也可以看出 padding引入位置信息的效果,特别是最后VGG,有无padding影响非常的大

同样的,对于物体检测和语义分割任务,实验发现 去除了padding操作之后性能下降很多

文中是通过实验的方式说明是zero-padding的作用,但是 zero-padding具体如何引入位置信息的,作用原理 的原理可能还可以未来继续研究来解释。

虽然目前的CNN模型可以隐式的学到一定程度的位置信息,但是显然是不充分的。 怎样更充分的利用绝对位置信息,非常值得进一步挖掘,CoordConv和semi-conv是很好的探索。

最直接的做法当然就是把每个像素的坐标concat到输入或者中间特征上,这种简单直接做法可以在SOLO的实例分割结果上带来3.6 AP的提升。

总体来讲,对位置信息的理解,或者说对zero-padding的理解,未来可以更好的设计一些网络和任务。 比如需要位置信息的实例分割,对象检测等多引入zero-padding,而对于比如图像风格化中的style分支,由于不需要位置信息,减少使用可能会带来一些效果。

- End -

PyTorch  自然语言处理实战课程开课啦。

课程内容包括: 聊天机器人,文本分类,文本生成,机器翻译。

手把手 带你实现课程中的项目,赠送 完整课程讲义 项目代码

An6NzmA.jpg!web

扫码立即领取磐创AIer50元优惠券

:point_down::point_down::point_down:

niAZbq6.png!web

✄------------------------------------------------

看到这里,说明你喜欢这篇文章,请点击「 在看 」或顺手「 转发 」「 点赞 」。

欢迎微信搜索「 panchuangxx 」,添加小编 磐小小仙 微信,每日朋友圈更新一篇高质量推文(无广告),为您提供更多精彩内容。

▼       扫描二维码添加小编   ▼    ▼  

FRb6fmv.jpg!web


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK