本文是 CVPR 2020 年的 Oral talk。来自威斯康星麦迪逊分校的黄子煊和 Yin Li 完成,文章提出了具有可解释性的深度模型,核心是将基于目标物体的组成部分区域的发现和该识别整合到深度神经网络中。通过分割出目标物体的特定组成部分并且得出该组成部分对最终分类的影响大小,从而实现对物体的组成解释。特别的,通过先搜索物体具体部分区域可能出现的简单先验,可以在无监督的情况下得出物体的组成部分区域。文章证明了,将基于区域的部分特征发现和分类成因相结合可以提高模型最终的性能

思路

文章首先是提出了深度学习模型虽然应用的非常广泛,但是作出最终结果的依据是什么,还无法从模型中直接得到直观的解释,作者认为如果能够在得到分类后,再给出分类类别所对应的各个组成部分区域,那么对于使用者而言会更有价值。同时,如果可以将细分得到的组成具体部分给出它最终分类重要性影响,会更有实际价值。这个思路实际上在基于 CAM 的相关方法中已经有了较多的体现,但是基于 CAM 的方法由于使用的是全局特征图,虽然可以给出全局区域对最终分类的影像,但是无法给出具体的区域。这也是这篇论文认为它的主要贡献之一。

而具体执行时,文章将执行步骤分为了两个大的部分:(1)区域发现;(2)重要性分析。

文章的核心部分就在于,作者提出了一个先验知识,即同一个大类的物体往往是共享相似特征的,这也给了作者启示,可以使用卷积网络的特征可以用来将视觉上相干的区域划分到一组中,这样后续重要性分析甚至可以简单到使用二叉树来做。虽然这么讲好像很有道理的样子,但是实际情况是很多的数据只有弱标签,因此文章假设了一个先验知识来作为引导,即认为一个图片中的一个部分会出现大部分的图片中(如,鸟类的头会出现在大部分鸟类图片中),并服从Beta 分布,那么只要在后续证明事实服从 Beta 分布,那么就可以进行下一步重要性分析了。

具体执行时,首先模型需要学习出一组目标字典,作者希望这个字典里里面包含的是一组组成目标物体的“部分”,这个字典是由 2D 的特征图映射得出,并不断比较像素的特征和字典所对应的类别来优化后续的选择。所得到的组成部分字典将在后续注意力机制中依据分类的结果来筛选出来。在训练时,作者认为每个“部分”的出现概率服从 Beta 分布,为了将特征字典再投射到分布中,作者说他们使用了Wasserstein Distance来对齐“部分”出现的先验分布和经验分布来实现,进一步在每个 Mini-batch 中将“部分”转换为二值化表示。

实施方法

在读这篇论文的时候,最困难的部分就是数学部分的表述不理解,这里重点需要关注几个点

  • Beta 分布:可以理解为概率的概率分布,比如说,知晓了一个事情发生的大致概率,对于接下来发生的事件进行概率预测时,就可以基于这个我们已经知道的大概概率进行预估,也就是这篇文章所提出的先验信息。这个方法可以解决因为观测次数不够而导致的可能的预测偏差,也可以随着训练过程提高对参数估计的精度。
  • Wasserstein Distance:可以理解为相同向量空间中,两个不同的分布之间进行转换时需要的“代价”,文中提出的是最小化“部分”寻找到的先验和经验分布的转换代价,文中则是需要估计的经验分布与先验分布的差异。
  • U 形分布:直观上看就是两端多中间少,文中认为图像中的特征分布也会类似的情况,即对于特征来说,会呈现概率上的有和无的状态。文章认为图像中的特征的分布是符合 U 形分布的 Beta 分布的,因此设计了正则化方法将特征字典扔到 Wasserstein Distance 中进行度量,这样即可以随着训练的迭代来不断调整特征对应的概率,从而给出在先验“部分”特征出现概率时进一步预测“部分”的重要性。
文章结构图

文章将从三个步骤来实施:

  • “部分”分割:自特征图中将图像分为多个子“部分”区域(以下简称区域)组,记作\(g(\cdot)\)
  • 区域特征提取和特征归因发现:使用池化方法提取区域特征并通过给每个特征区域添加注意力向量,记作\(f(\cdot)\)
  • 基于注意力的区域分类:对每个向量通过注意力机制计算注意力向量的值,记作\(h(\cdot)\)

在进一步阅读之后,我把这部分形式化表示进行了一个总结,以便于后期查找:

  • \(X_{1:N}=\{X_n\}\):表示有 N 个 2D 图片的特征图集合,其中 \(X_{n}\in R^{D\times H\times W}\) ,表示卷积网络从 \(H\times W\) 的二维图像中获得的 D 维的特征,是一个维度为 \(D\times H\times W\) 的矩阵。
  • \(y_{1:n}=\{y_n\}\):表示 N 个图片对应的分类,其中 \(y_n \in [1,...,c]\) ,需要注意的是这部分的标签只是大类别的标签,并没有细的类别。
  • \(D \in R^{D\times K}\):区域组成“部分”的字典,即有 \(K\) 种区域,其中 \(D=[d_1,d_2,...,d_K]\) ,而 \(d_k\) 则是代表了一个区域类别。
  • \(\hat{y}=\phi(X_i,D;\theta)\):用来分类的决策函数,这个函数在分类时,将特征图 \(X_i\) 和全局的字典 \(D\) 都考虑在内, \(\theta\) 代表优化时的参数,从后续文字可以得知,此部分的优化实际上包括部分区域分割 \(Q\) 、区域特征提取和归因 \([Z,a]\) 以及基于注意力的分类 \(\hat{y}\) 的函数及对应参数\(\theta_g,\theta_f,\theta_c\) 。(注:后续对下标\(n\)可能不做具体标注)
  • \(Q=g(X,D,;\theta_g)\): 表示的是区域分配的优化目标,目的是为了通过比对 2D 的特征图 \(X\) 和区域字典 \(D\) 生成一个区域分配图 \(Q \in R^{K\times H\times W}\), 记作 \(g(\cdot)\)
  • \([Z,a]=f(X,Q,D;{\theta}_{f})\):主要负责了区域特征提取和归因分析,在前一步的区域选择中已经通过区域字典 \(D\) 搞定了区域分配图 \(Q\) 之后,这块主要是来得到区域内的特征 \(Z\in R^{D\times K}\) 并设定一个注意力参数 \(a\in R^K\)来控制所对应区域在最终分类中的重要性,以供后续继续优化,记作 \(f(\cdot)\)
  • \(\hat{y}=h(Z,a;\theta_c)\):表示的是基于注意力的分类,通过将注意力参数 \(a\) 和区域特征 \(Z\) 放到线性分类器中,即可通过训练以适应数据,记作 \(h(\cdot)\)

示意图 但是有个很严肃的问题是,文章认为它需要从弱标签里来学习到对应区域,为了确保“部分”目标的字典可以学习得到,作者假设图片上的特征是从属于一个图片特征集合的,而这个集合即服从 U 形分布,那么这一组特征在图片上可能的概率便可以使用 U 形分布,正则化工作也就是在这部分进行。具体而言,对于给定的一个图片特征集合 \(X_{1:N}\) ,假设 \(p(d_k|X_{1:N})\) 是区域 \(d_k\) 出现在这个集合中的条件概率,并假定 \(p(d_k|X_{1:N})\) 概率服从 U 形分布,从而可以控制特征是否存在的概率。1。作者在文中并没有做进一步的解释,而是认为对于部分简单的同类图像会包含很多相同的特征,如在小规模的数据集 Cub-200 birds 中,鸟的各个部分特征都是存在的,因此会将这个“特征是否存在”这个事件置为发生,否则对于复杂的数据集,如 ImageNet 中,则置为未发生。

部分分割与正则化

假设已经完全理解了前述的概念,对于部分分割与正则化则是从区域分配,区域出现和区域出现正则化三个部分来详细说明的。

区域分配

如前述,文章首先使用了该领域常用的投影单元(逐像素将像素关联到区域中)来进行部分分配。具体而言,假定 \(q_{ij}^k\) 是分配矩阵 \(Q\) 的一个元素,其中 \(i,j\) 分别代表第 \(k\) 个区域在 2D 图片中的位置, \(q_{ij}^k\) 代表了在特征图 \(X\)\((i,j)\) 位置的特征向量 \(x_{ij}\in R^D\) 属于区域字典 \(D\) 中第 \(k\) 个区域 \(d_k\) 的概率,其计算方式如下:

\[ q_{ij}^k=\frac{\exp(-\Vert(x_{ij}-d_k)/\sigma_k\Vert_2^2/2)}{\sum_k \exp(-\Vert(x_{ij}-d_k)/\sigma_k\Vert_2^2/2)} \]

对比 Softmax 可知,这部分实际上是计算 2 范数后的 Softmax,其中 \(\sigma \in (0,1)\) 是一个用以平滑部分字典 \(d_k\) 的可训练参数,所有的 \(q_{ij}^k \in R^K\) 组成了 \(Q \in R^{K\times H\times W}\)。直观上理解就是每个像素在每个特征字典上的概率值。

这部分实际上是用基于 Softmax 的函数进行降维。

区域发现

对于一个给定的分配图,下一步是确定该区域是否存在区域类别 \(d_k\) 。最简单的方式是在分配图 \(Q^k = [q_{ij}^k]\) 的第 \(k\) 个分配字图中进行最大池化。作者接着提出,在此之前进行平滑低带宽的高斯核函数操作可以消除特征图异常数据,作者从而将这部分的计算形式化为: \(t_k=\max_{ij}\mathcal{G}\times Q^k\) ,这里的 \(\mathcal{G}\) 即为 2D 的高斯核函数,\(\times\) 是卷积运算。则对于所有特征向量而言,是否从属区域类别 \(d_k\) 的概率可以整合为一个向量 \(\tau = [t_1, t_2, ..., t_K]^T \in (0,1)^K\)

这部分其实就是一个最大池化的变种。

区域分配与发现

区域发现的正则化

接下来就是文章的重点设计了,作者通过对齐区域出现的经验分布和先验的 U 形 Beta 分布来正则化每个部分发生的概率。数学上有,对于每次从整体数据集中获得的小批量样本(mini-batch)中给定的 \(N\) 个例子,将小样本的区域发现向量 \(\tau_n,n=1,2,...,N\) 整合为一个大的向量 \(T=[\tau_1,\tau_2,...,\tau_N]\) 来估计经验分布 \(p(d_K|X_{1:N})\) ( \(d_k\)\(X_{1:N}\) 中出现的概率),假设先验分布 \(\hat{p}(d_K|X_{1:N})\) 是已知的,如使用 Beta 分布来代替。那接下来就可以使用一维的 Wasserstein Distance 来对对其经验分布 \(p(d_k|X_{1:N})\) 和 先验分布 \(p(d_k|X_{1:N})\), 具体计算如下:

\[ W(p(d_k|X_{1:N}),p(d_k|X_{1:N}))=\int_0^1|F^{-1}(z)-\hat{F}^{-1}(z)|dz \]

其中, \(F(\cdot)\)\(F(\cdot)\) 是经验分布和先验分布的分布函数,\(z\) 取值在 \([0,1]\) 之间。

区域发现正则化

在小批量的训练中,可以以小批量的样本求和的方式替代 Wasserstein Distance 的积分计算,从而可以转化为 \(F^{-1}\)\(\hat{F}^{-1}\) 的 L1 距离,作者这里还提到了对分布函数的逆进行重构来提高训练稳定性2

\[ W(p(d_k|X_{1:N}),p(d_k|X_{1:N}))=\frac{1}{N}\sum_{n=1}^N|\log([\tau_k^*]_i+\epsilon)-\log(\hat{F}^-1(\frac{2n-1}{2N})+\epsilon)| \]

其中,\(\tau_k^*\) 是当前 \(N\) 个小批量样本所对应的所有区域发现向量 \(T\) 按照升序排序后的的第 \(k\) 个特征发现向量。而 \([\tau_k^*]_i\)\(\tau_k^*\) 中的第 \(i\) 个元素。\(\epsilon\) 是一个用以稳定数值的较小值。使用数值缩放可以消除区域发现中使用的 softmax 函数可能导致的梯度消失问题。3,同时作者还说,有很多方法都可以做这个事情,但是 1 维的 Wasserstein Distance 效果更好。

这部分的工作实际上是把之前的分布正则化到先验分布中。

区域特征提取及归因分析

上述得到的正则化的区域分配后,下一步就是从各个区域取出特征进行进一步的分类。这里使用了已有的非线性编码器,函数表示如下:

\[ z_k^{'}=\frac{1}{\sum_{ij} q_{ij}^k}\sum_{ij}q_{ij}^k(x_{ij}-d_k)/\sigma_k, z_k=\frac{z_k^{'}}{\Vert z_k^{'}\Vert_2} \]

其中 \(z_k^{'}\) 是从分配到特定部分 \(d_k\) 的像素中所提取出的特征。从而可以进一步将整体图像的特征整合为一个向量 \(Z=[z_1,z_2,...,z_k]\in \mathbb{R}^{D\times K}\)。进一步的 \(Z\) 会通过一个包含多个残差块的子网络进行变换得到转换后的特征集 \(f_z(Z)\),接着作者还增加了一个注意力模块来控制当前区域对最终分类贡献的重要性,这个模块记作 \(f\) ,从而有 \(a=softmax(f_a(Z^T))\) ,这个 \(a\) 将被继续用作分类。

基于注意力的分类

最后的分类是基于前述得到的注意力特征,分类就相对简单了,文中给出基于 Softmax 的分类:

\[ \hat{y}=softmax(W f_z(Z)a) \]

其中的 \(W \in R^{C\times D}\)\(C\) 个通道线性分类器的权重,而 \(a\) 则代表了该区域的重要性,越大则越重要。基于上述的分类结果,可以很容易的把 \(a\) 叠加到前述的区域分配图 \(\mathcal{Q}\) 中,记作 \(\mathcal{Q}^T a\), 其中 \(\mathcal{Q}\in R^{K\times H\times W}\)是重新调整大小后的分配图

其他实现细节

损失函数

除了分类用的交叉熵,还增加了前述的 Wasserstein Distance 来正则化中间区域发现矩阵。

网络结构

使用了 Resnet101 作为基础骨干网络(Backbone)

训练和接口

对所有数据都是使用了基于小批量的 SGD,模型初始化时使用了 ImageNet 的预训练参数。数据还进一步的用了 Cneter crop 来增强。

实验效果

执行效果

文章预览


  1. 这个部分还有一个疑惑就是这个概率分布的事件是什么,即事件的直方图是什么↩︎

  2. 目前我还比较疑惑,同时在 CVPR 上公开的版本中,下面所述公式有误,此处已经修正。↩︎

  3. 这部分暂时不理解, 但是 \(\epsilon\) 确实可以避免该值为零↩︎