全局特征与局部特征的交响曲—ParseNet

2019 年 10 月 12 日

全局特征与局部特征的交响曲—ParseNet


尽管多尺度融合、空洞卷积都可以增加网络的感受野,但理论感受野与实际感受野仍然存在差异。那么如何真正利用图像的全局信息呢?ParseNet告诉你。


1 理论感受野是真的吗?


相信通过前面几篇介绍上下文信息整合的文章,大家已经能够体会到感受野对于分割网络效果的影响有多么巨大了。简单来说,感受野越大,网络所能“看见”的区域就越大,从而能够用于分析的信息就更多。由此,分割的效果也很有可能更好。


基于这种考虑,许多算法尝试通过改变自身网络结构设计来增大网络的理论感受野,认为这样就能够为网络带来更多的信息。尽管理论感受野的增大的确能够增加网络所获取的上下文信息,但是,理论感受野难道真的就代表了算法实际看见的区域吗?


在实际应用中,许多方法的理论感受野是很大的。比如前面文章中介绍过的带 VGG 的 FCN 网络中的 fc7 层,其理论感受野为 404x404 像素。但是,实验却证明,其并没有办法看到这么大的区域。


比如,ParseNet 的作者做了这样一个实验,即破坏图像中一个随机区域中的信息,以此来观察网络的输出结果是否依赖于这个区域。结果如下图所示:



从左到右分别为:图像、热度图、理论感受野和实际感受野。


由此可以看出,网络实际上能够覆盖的区域也就能达到整图的 1/4 左右,远远没有达到理论感受野的尺寸。那么究竟该如何利用全部的图像上下文信息呢?ParseNet 提出了一种融合全局信息与局部信息的方法,下面来具体介绍一下。


2 全局特征的提取与融合


如下图所示,ParseNet 通过全局池化提取图像的全局特征,并将其与局部特征融合起来。



这种融合在过程中需要考虑两个主要问题:融合的时机与尺度的归一化。


(1) 融合时机


直观上理解,全局特征与局部特征的融合可以发生在两个节点:分别是训练分类器之前(early fusion)和训练分类器之后(late fusion)。其中,前者是将两个特征融合后,作为一个整体共同送入分类网络,训练分类器;后者则是以两个特征为输入,分别训练其对应的分类器,最后再将分类的结果整合。


如果忽略结合特征后的训练过程,那么这两种融合的时机的鲜果是差不多的。但是,在某些情况下,只有全局特征辅助下的局部特征才能够判断出正确的分类结果;此时,如果两个特征分别训练再整合,那么这种情况下的分割损失是不可逆的,也就是说,这些情况下的分类将不正确。


当然,这两种方法在实际应用过程中是可以实现相似的结果的,但是 late fusion 需要进行归一化。


(2) 归一化


如下图所示,不同层之间的特征的尺度是不同的,而且这种不同可能很显著。(不同颜色代表不同层上的特征)



很显然,这些特征的尺度(scale)和范数(norm)是不同的。如果直接将这些特征级联起来会造成大特征控制小特征,使分割效果变差。尽管在训练过程中,网络的权重可能会对这种情况进行调整,但是这要求非常小心的调参和数据库选取。


因此,ParseNet 利用了 L2 范数来归一化特征的融合过程。具体而言,给定 d 维输入 x,算法通过计算其 L2 范数并在整个维度内实现归一化。


此外,如果只是单纯地对所有输入层进行归一化,不仅会减慢网络的训练速度,同时也会改变该层的尺度。因此,还需要对其增加一个尺度参数 gamma,将归一化的结果进行尺度缩放(缩放结果为 y)。


这一过程增加的参数量等于所有的通道数之和,因此在反向传播过程中是可以忽略的。具体的反向传播公式如下:



3 实验结果


下表是 ParseNet 在 PASCAL VOC2012 下的数据结果和与其他算法的比较:



其效果与 DeepLab-LargeFOV 相近。


下图是全局特征有助于分割结果的示例:



从左到右分别为:图像、真值、对比基准和 ParseNet。


尽管总体而言,引入更多的上下文信息有助于分割。但是有时候,引入全局信息也可能给分类造成不好的影响,比如下图所示,从左到右分别是原图,真值,FCN 以及 ParseNet。



总结


本文我们了解了全局信息该如何使用、该注意什么问题。下篇文章我们来看看 RefineNet 中是如何用残差校正进一步提高分割效果的。


作者介绍


孙叔桥,公众号“有三 AI”作者。该公号聚焦于让大家能够系统性地完成 AI 各个领域所需的专业知识的学习。


原文链接


https://mp.weixin.qq.com/s/TNHTvXmefRBlc6zfHW7C8A


2019 年 10 月 12 日 19:011147

评论

发布
暂无评论
发现更多内容

一文了解对称加密与非对称加密

我是程序员小贱

安全

Python中的单下划线和双下划线使用场景

王坤祥

Python Python基础知识 Python基础

图解23种设计模式——前方高能,前端切图仔请务必抓好方向盘

执鸢者

typescript 前端 设计模式

Serverless:为我们到底带来了什么

刘宇

Serverless 云原生

想要成功,你需要的是目标与动机,目标是你的助攻,动机是你的爱人。

叶小鍵

成功学 心理学 海蒂·格兰特·霍尔沃森

2.3.1 理解动态代理 -《SSM深入解析与项目实战》

谙忆

office 365激活,总是自动变成专业版2019

wood

Office Office 365

Windows AD 保姆级配置NTP服务器教程

Young先生

时间 AD ntp Windows Server 2012 R2

为什么修改hosts不立即生效?--浏览器DNS缓存机制分析

陈磊@Criss

MySQL 架构与历史

多选参数

MySQL 数据库 MySQL优化

用故事去理解「文件 I/O」

小林coding

操作系统 异步 文件系统 同步 非阻塞网络I/O

数据治理第一步,摆脱“手工作坊”

KAMI

大数据 数据治理 数据开发 数据平台

2.3.2 JDK动态代理 -《SSM深入解析与项目实战》

谙忆

[修复 Webpack 官方 Bug] 提取CSS时的依赖图修正

分一

前端 webpack 编译优化 源码刨析

微博基于 Flink 的机器学习实践

Apache Flink

flink

中本聪原始比特币论文解读:点对点的电子现金系统

韩超

比特币 区块链

Git设置分支保护实现CodeReview卡点

陈磊@Criss

契约测试:解决微服务测试的问题

陈磊@Criss

记一次腾讯云(西安)后台开发面试经历

z小赵

面试 分布式 高并发

手把手教你从零开始使用python编写大型冒险类游戏01之游戏介绍

Geek_8dbdc1

微服务框架 - 模块功能设计篇

superman

从北京降雨的复盘中,我发现了企业SD-WAN网络的秘密

脑极体

Go: Goroutine, 系统线程和CPU管理

陈思敏捷

go golang mpg

源码分析 | 咋嘞?你的IDEA过期了吧!加个Jar包就破解了,为什么?

小傅哥

Java 字节码插桩 asm bytebuddy

为什么会是Docker?

flyer0126

Docker

芯片破壁者(十二.下):青瓦台魔咒与半导体“死亡谷”

脑极体

非科班学习编程一定得知道这几个网站!

我是程序员小贱

Flink 中的应用部署:当前状态与新应用模式

Apache Flink

flink

手撕二分查找及其变种,就是干!

我是程序员小贱

Django的Models更新时,不触发Signals解决办法

Young先生

django singals 信号机制 update 更新

Dubbo2.7试用

心平气和

dubbo 灰度 hessian

全局特征与局部特征的交响曲—ParseNet-InfoQ