背景描述
大量的实验证明,深度神经网络擅于找到大型数据集上的分层表示(hierarchical representations),但人类难以理解这些分层表达,于是研究人员针对图像问题,通过可视化方式对网络进行了探究。
最初的最经典的ZFNet发现层数越靠后,其学习到的内容越抽象,然后逐渐引出了两个常见的可视化手段:可视化特征图,可视化滤波器;
本篇内容来自论文 “Understanding the Role of Individual Units in a Deep Neural Network”,论文提出了一种分析卷积神经网络中单元(Unit,即filter)的方法,并在分类任务和对抗生成任务中验证了其效果。
任务一:场景分类任务的分析
数据集与模型
数据集为Place365,这是一个场景分类的数据集,将图像分类为365个场景类别: 模型使用VGG-16,模型结构如下: VGG-16包括13个卷积层,5个pooling层,3个全连接层,由于只有卷积层和全连接层有可学习参数,故得名VGG-16(13+3=16);
网络分析方法
首先,为卷积层中的每个单元
u
u
u定义操作
a
u
(
x
,
p
)
a_{u}(x,p)
au?(x,p),这是一个激活函数,它不同于平时深度学习所见的激活函数,该函数反应了卷积层中某个单元
u
u
u对图像
x
x
x的位置
p
p
p输出的一个信号值。再次说明,单元即卷积网络中的filter,每个卷积层由多个filter构成,每个filter用于检测一种特征;
一个卷积层包含多个filter,每个filter的kernel数量等于输入张量的通道数,输出张量的通道数量就是filter的个数,一个filter中的各个kernel是不同的; 可以理解为不同的filter提取不同的局部特征,filter内的kernel不同是为了获取输入张量上不同通道的局部信息,最后加和得到该filter对应的局部特征相似度;
下一步,我们取对于所有图像的
a
u
(
x
,
p
)
a_{u}(x,p)
au?(x,p)值的前1%,具体如下:定义
P
x
,
p
[
?
]
P_{x,p}[\cdot]
Px,p?[?]表示一个事件遍历所有图像中的所有位置后,其为真的可能性,所以可以得到阈值
t
u
t_{u}
tu?:
t
u
=
m
a
x
t
P
x
,
p
[
a
u
(
x
,
p
)
>
t
]
≥
0.01
t_{u}=max_{t}P_{x,p}[a_{u}(x,p)>t]\geq 0.01
tu?=maxt?Px,p?[au?(x,p)>t]≥0.01注意遍历对象是所有图片的所有位置,根据阈值,我们对所有图像做操作,让大于该阈值的区域高亮,(注意上面的操作只是针对某个卷积中的单元Unit而做的),对于下图,显示了在某一个图像里,对于不同Unit做了高亮操作,可看出各个对象被激活的情况: 然后,论文借助了一个额外的工具,这是一个来自旷视科技的语义分割模型 “Unified Perceptual Parsing for Scene Understanding”,旷视科技提出一种称之为统一感知解析(Unified Perceptual Parsing/UPP)的新任务,要求机器视觉系统从一张图像中识别出尽可能多的视觉概念。同时,多任务框架 UPerNet 被提出,训练策略被开发以学习混杂标注(heterogeneous annotations)。旷视科技在 UPP 上对 UPerNet 做了基准测试,结果表明其可有效分割大量的图像概念。这一已训练网络进一步用于发现自然场景中的视觉知识。
人类视觉系统一眼即可从一张图像中提取大量语义信息。人类不仅可以立即解析其中的物体,还能识别细节属性,比如其部分、纹理和材质。如下图所示,这是一间起居室,有着很多不同物体,比如一张咖啡桌,一幅画,以及墙面。同时,我们还看到,这是一张四腿咖啡桌,桌面之上有一块桌垫,以及桌子是木质的,沙发表层是针织的。可见,从材质、纹理的视觉感知到物体及其部分的语义感知,我们对这一视觉场景的描述是多层次的; 该语义分割模型可以获得目标对象,以及部件,材料,颜色,纹理等视觉概念信息。
语义分割模型记作
s
c
(
x
,
p
)
→
{
0
,
1
}
s_{c}(x,p)\rightarrow\left\{0,1\right\}
sc?(x,p)→{0,1},对视觉概念
c
c
c,模型为图像
x
x
x中的每个位置
p
p
p输出0或1,表示该像素是否属于该视觉概念。
论文使用 “Unified Perceptual Parsing for Scene Understanding” 中的语义分割模型获取到图像中的视觉概念,这些视觉概念可概括为:对象类别(objec),部件类别(part),材料(material),颜色(color);
然后用IoU量化视觉概念
c
c
c与单元
u
u
u之间的一致性:
I
o
U
u
,
c
=
P
x
,
p
(
s
c
(
x
,
p
)
∩
(
a
u
(
x
,
p
)
>
t
u
)
)
P
x
,
p
(
s
c
(
x
,
p
)
∪
(
a
u
(
x
,
p
)
>
t
u
)
)
IoU_{u,c}=\frac{P_{x,p}(s_{c}(x,p)\cap(a_{u}(x,p)>t_{u}))}{P_{x,p}(s_{c}(x,p)\cup(a_{u}(x,p)>t_{u}))}
IoUu,c?=Px,p?(sc?(x,p)∪(au?(x,p)>tu?))Px,p?(sc?(x,p)∩(au?(x,p)>tu?))?这个IoU是在验证集上计算的,每个单元都要与1825个视觉概念进行评分,根据IoU的结果,用得分最高的视觉概念
c
c
c标记单元
u
u
u;
实验结果
实验结果分析
实验结果如下: A图:展示了VGG16的架构;
B图:在输入的某张图像上可视化了conv5_3的单元10的激活(高亮部分为超过其前1%分位数的区域),可以看出该区域对应的人的头部;
C图:显示了几个具有视觉概念检测功能的单元(conv5_3的单元150,208,141),以及它们对应的激活可视化图像,它们分别用于检测飞机,人头,毛发;
D图:显示了conv5_3中的512个filter(单元)匹配到的视觉概念统计情况,一共匹配到51个object,22个part,12个material,8个color,有的视觉概念匹配到多个单元,比如plant匹配到接近8个单元,这说明有些滤波器的工作是重复的,或许可以作为网络化简的依据。
E图:比较了VGG-16中13个卷积层匹配到视觉概念的统计情况,在不同层中,最后一个层检测到的object数量明显更多;
F图:将conv5_3的单元150作为飞机的检测器,用ImageNet中的图像进行实验,F图显示了飞机和非飞机对象的样本通过单元150输出的激活统计,在jitter图上,横轴代表通过单元150后输出的得分(激活程度),jitter图上面的是概率密度图,体现了样本的概率分布;可以看出单元150确实能很清晰地将飞机样本与非飞机样本划分开(单元150对于飞机样本输出地平均激活值为88.1,对于非飞机样本输出地平均激活值为0.8)
jitter图
一维散点图对于小数据集是足够描述的。 然而,当某个对象发生不止一次时,相应的数据点就会在对应位置相互重叠,这使得它们无法区分开来。一种解决办法是将每个点从原始位置向其他维度移动一个小的随机数,这种技术称为抖动,并且所得到的图是抖动图(jitter图)
实验结果验证
通过移除一些单元,从而验证这些单元在场景分类中的作用,我们强制让指定的单元输出0(神经元失活),确保网络其余部分完好,并且没有再训练。得到以下结果: A图:当移除了类别 ski resort 最重要的conv5_3的4个单元:snow,mountain,house,tree top后, ski resort 的分类准确率显著下降;
B图:分别移除对 ski resort 分类的4个最重要的,20个最重要的,492个不重要的unit,查看分类准确率的变化情况;
C图:统计移除不同数量的重要的单元和不重要单元后,对应的准确率分布,发现一个有趣的现象,移除掉一些不重要单元后反而可以提高准确率;
D图:对365个场景类的每一类都分别做重复实验,不移除任何一个单元,去除20个最重要的,去除492个不重要的单元,对分类的影响,横坐标代表单个类别的分类准确率;
E图:表明最可解释的uint是对许多场景类别判断都很重要的单元;
任务二:场景生成任务的分析
在生成网络中,上采样操作包括反卷积,反卷积包括卷积运算,所以用同样的分析方法研究反卷积中的单元,结果如下: 图 A:PGGAN 的模型结构图;
图 B:unit 381 激活区域的可视化;
图 C:对网络中每一层进行了网络解剖;同分类网络不同,生成网络的概念单元都集中在网络的中间,第 5 层出现匹配最多的概念单元;
图D:将 layer5 匹配的概念单元跳出,匹配到 14 个 object、33 个 part、1 个 material、6 个 color,同分类网络不同,匹配的 part 多于 object;
图 E:可以看到高亮区域是针对特定概念的不同外观,如不同风格的烤箱、不同颜色和形状的凳子;
图F:将 314 unit 作为区分生成图像是否有大窗子的图像分类器,从图像可以看出,有大窗子的图像和没有大窗子的图像阈值有很大的差距;
图G:当 314 unit 不激活时,也有大窗子出现,这表明,其他单元也有生成大窗子的作用;
将生成对抗网络中的某些隐藏单元激活或停用,观察生成样式的变化:
图 A 和 B:移除跟生成tree相关的unit,移除 Tree 的 unit 越多,树的数量越少;
图 C:强制让 20 个最相关的 door unit 激活后的效果,会根据位置产生不同的门,或根本没有门;
图 D:测试 10, 000 张图片,在每个 feature map 位置都测试,door 被添加的区域情况,门可以添加到合理的位置,如窗户,但不能添加到异常位置,如树上或天空; 上面是一个应用实例:理解对抗性攻击 (understanding adversarial attacks)
图 A:正确分类的 ski resort (滑雪胜地) 被分类为 bedroom (卧室);
图 B:显示了与 ski resort 和 bedroom 最相关的 4 个重要单元的激活值变化,发现同 ski resort 相关的单元 activation 值下降,同 bedroom 相关的单元 activation 值上升;
图 C:当被攻击时,超过 1000 幅图像被错位分类为不正确的 target 类别,其中,activation 值变化最多的是 source 和 target 最相关的 4 个单元; 另一个应用是语义图像编辑 (semantic image editing),对一些对象概念进行编辑,每个概念与 20 个 unit 相关联,当用户想添加或去除一个概念时,与概念对应的 20个 unit 被激活或被置 0
|