目录
基础概念
-
Feature manifold(特征流形)
流形是一种空间,一个流形好比是一个 m 维的数据在 d 维的空间上被扭曲的结果。其中(m > d)(一般维度压缩的方法中都会提到这个概念)
上图中每张图片为同一张人脸的 64×64 的灰度图,如果按照列(或行)拼起来,就可以得到一个 4096 维的向量,这样一来,每一张图片就可以看成是 4096 维欧氏空间中的一个点。很显然,并不是 4096 维空间中任意一个点都可以对应于一张人脸图片的,这就类似于球面的情形,我们可以假定所有可以是人脸的 4096 维向量实际上分布在一个 d 维 (d < 4096) 的子空间中。而特定到 Isomap 的人脸这个例子,实际上我们知道所有的 698 张图片是拍自同一个人脸(模型),不过是在不同的 pose 和光照下拍摄的,如果把 pose (上下和左右)当作两个自由度(也就是坐标轴),而光照当作一个自由度,那么这些图片实际只有三个自由度,换句话说,存在一个类似于球面一样的参数方程(当然,解析式是没法写出来的),给定一组参数(也就是上下、左右的 pose 和光照这三个值),就可以生成出对应的 4096 维的坐标来。换句话说,这是一个嵌入在 4096 维欧氏空间中的一个 3 维流形。 实际上,上面的那张图就是 Isomap 将这个数据集从 4096 维映射到 3 维空间中,并显示了其中 2 维的结果,图中的小点就是每个人脸在这个二维空间中对应的坐标位置,其中一些标红圈的点被选出来,并在旁边画上了该点对应的原始图片,可以很直观地看出这两个维度正好对应了 pose 的两个自由度平滑变化的结果。 就我目前所知,把流形引入到机器学习领域来主要有两种用途:一是将原来在欧氏空间中适用的算法加以改造,使得它工作在流形上,直接或间接地对流形的结构和性质加以利用;二是直接分析流形的结构,并试图将其映射到一个欧氏空间中,再在得到的结果上运用以前适用于欧氏空间的算法来进行学习。 这里 Isomap 正巧是一个非常典型的例子,因为它实际上是通过“改造一种原本适用于欧氏空间的算法”,达到了“将流形映射到一个欧氏空间”的目的。Isomap 所改造的这个方法叫做 Multidimensional Scaling (MDS) ,MDS 是一种降维方法,它的目的就是使得降维之后的点两两之间的距离尽量不变(也就是和在原是空间中对应的两个点之间的距离要差不多)。只是 MDS 是针对欧氏空间设计的,对于距离的计算也是使用欧氏距离来完成的。如果数据分布在一个流形上的话,欧氏距离就不适用了。
CAM 与 ICD 的不同
-
CAM(Class activation maps)
- 在此过程中,主要标准是类别间的区分。局部区域中较容易识别的前景物体像素主导了激活,例如人的脸部或汽车的车轮。其他前景像素则无法与背景区分开
- 该模型的最终目标是学习类别间识别的边界。但是,要获得WSSS的整体对象蒙版,我们需要精确地区分像素是属于前景对象还是属于背景。因为前景像素和背景像素位于同一图像中,所以这种鉴别主要在同一图像级类别内进行,即,类别内鉴别
- 通常,如图所示,CAM所学习的类间边界不符合我们对前景和背景之间的类内区分的要求。因此,仅通过对CAM分数进行阈值化就很难获得完整的目标蒙版
- CAM做到的核心内容为分离不同类物体,只能给出目标对象的稀疏和不完整的估计,因此难以平衡前景的召回率和背景的假阳性率
-
ICD(Intra-Class Discriminator)
- 为解决上述问题,文章引入了一个类内的分类器,目的是在同类下,能够清楚分出前景以及后景
- 因此ICD相比CAM更适合于WSSS类问题
-
为提升WSSS问题的精度需要对上述模型进行融合使用,通过下图可以清楚的看出两者的关系
-
ICD的贡献
- 文章在将CAM应用于WSSS时发现了边界不匹配问题,即图像级类间识别与所需像素级类内分割之间的差距
- 文章提出了一种有效的端到端类内鉴别器(ICD)方法,通过学习类内边界来分离前景对象和背景来解决此问题
- 文章进行了广泛的实验,以分析文章提出的ICD方法的有效性。 所提出的模型实现了基于图像标签的WSSS的最新性能
ICD
-
模型框架
如图所示,本文提出一个端到端的模型框架,存在两个分支,一个为CAM(CAM只在部分前景区域激活,但突出显示的区域集中在前景上),另一个就是本文提出的ICD模型。框架综合CAM给出的得分以及ICD给出前景和后景的得分,计算出最终的结果
-
ICD分支
ICD分支中存在两条路径:-
Bottom-Up Estimation(自底向上的估计)
ICD的核心思想是基于特征流形将像素分为前景和背景组。我们通过学习每个类 c c c的方向向量 w c w_c wc来解决这个问题。假设 X = { X i } i = 1 N X=\left \{ X_i \right \}^N_{i=1} X={ Xi}i=1N为所有输入图像的合集, f i f_i fi为对应输入图像 X i X_i Xi的特征图,其大小为 H × W H \times W H×W,通过学习得到的方向向量为:
L b u ( X ) = − 1 N H W ∑ i = 1 N ∑ k = 1 H W ∑ c = 1 C y i , c ( w c T f i , k ) 2 (1) L_{bu}(X) = - \frac{1}{NHW}\sum^N_{i=1}\sum^{HW}_{k=1}\sum^C_{c=1}y_{i,c}(w^T_cf_{i,k})^2 \tag{1} Lbu(X)=−NHW1i=1∑Nk=1∑HWc=1∑Cyi,c(wcTfi,k)2(1)
w c = w c ^ ∥ w c ^ ∥ 2 (2) w_c = \frac{\hat{w_c}}{\|\hat{w_c}\|_2} \tag{2} wc=∥wc^∥2wc^(2)
其中 f i , k f_{i,k} fi,k为特征图 f i f_i fi中第 k k k个像素点, y i , c y_{i,c} yi,c是一个二进制标签(当第 c c c个标签存在于图像中时,为1;反之为0)。为了防止琐碎的无穷大解, w c w_c wc受到L2-归一化的约束,如方程式2中所示。优化公式1可以促进 w c w_c wc将像素特征分为两类。这些特征共享相同的图像级类标签,并且属于第c类的前景或背景。因此,ICD不会像CAM那样陷入难以进行类间分区的问题。由于前景(或背景)像素的特征趋于聚集在一起,并且前景和背景的向量通常不重叠,如图1所示,方向矢量学会将其分为两类,分别是前景与背景。因此,很自然地采用在定向向量上特征投影的符号(正负),来区分前景和后景。为此,我们通过以下方式计算每个像素的得分:
S ^ i , k , c = w c T f i , k (3) \hat{S}_{i,k,c} = w_c^Tf_{i,k} \tag{3} S^i,k,c=wcTfi,k(3</
-