Decorrelating Semantic Visual Attributes by Resisting the Urge to Share 论文笔记

来源:互联网 发布:2.5平衡口耳机 知乎 编辑:程序博客网 时间:2024/05/20 08:27

今天读的是CVPR2014 的“Decorrelating Semantic Visual Attributes by Resisting the Urge toShare”。此文的一大亮点不在于它的方法,而是正视现在热门的Visual Attributes based的方法,并开门见山地说出了“Existingmethods to learn visual attributes are prone to learning the wrong thing”,指出现在我们所说Attribute的学习很可能只是学到一些相关的attribute,而不是要学习的attribute本身。比如对于图1反映的情况,当我们要去学一个“furry”的属性时,搞不好我们其实学的是“brown”这个属性(因为有“brown”这个属性的图恰恰都有“furry”这个属性)

                                                                                            图1

那么应该如何解决这个问题呢?作者的提供的思路是属性分组+局部属性(空间稀疏化)+特征选择的组合(和我自己在做的思路一致啊,再次说明了出文要趁早)。这样做为什么可行呢?原因很直接:首先,对于属性分组,我们可以按语义将属性划分为不同的子集,比如颜色={“黑”,“红”},皮肤纹理={“有毛”,“有斑点”}等等。那么对于不同的分组,我们自然可以为它选择不同的图像特征进行描述,比如颜色用颜色直方图,皮肤纹理用glcm,而不是每个图像都用所有特征的串联,这就可以一定程度上避免刚刚说到学到相似属性的问题。第二,局部属性(文章中叫空间稀疏化),其实就是将原图划分为块,再每块都当作一个实例来处理。那么这样就可以避免一些背景或者是物体本身的干扰,比如当我要学习“游泳”这个属性时避免学到海豚图像中的海的“蓝色”。特征选择(特征空间的稀疏化)和第一个目的一样,只不过是当比如学习颜色特征时,采样一些自动得方法,而不是用户实现定义。

文章中具体的实现用的是Multi-Task Learning。这块我没有研究过因此文中的数值解法是否可行就不得而知了。还是从公式入手看看文章是怎么做的吧:

首先,定义训练的损失函数L:

    (1.1)

其中X 是NXD 训练样本叠成的矩阵(N 个训练样本,每个训练样本抽取D 维特征),Y 是由NXM 的矩阵(假设一共有M 个属性),字母的上标代表列,下标代表行。W(DXM 矩阵)就是我们要学习的模型。然后,特征选择的常用方法就是加入L1 正则化项去逼近L0 正则化项,就得到了下面这个式子:

    (1.2)

式(1.2)右边,也就是对W的行和列同时做稀疏化,那么结果是什么呢?还记得X是由N个训练样本组成的吧?这里的训练样本可是将图像划分为若干块得到的,也就是局部的图像,每个局部图像都抽取D维的特征。对这个NXM的矩阵作稀疏化,不就同时达到了空间稀疏化和特征稀疏化的目的了么?但这种稀疏化有个问题,就是不能保证我们刚刚说同语言组的属性选择同样的特征,它的稀疏化效果如图2的左图所示:图中横坐标为属性,纵坐标表示特征,白色深浅代表有响应程度,垂直于横轴的白色线代表将属性分为不同的组。


图2

然后作者又提到另外一种稀疏化方法(充论文页数):“all-sharing”。表达式如下:

 (1.3)

还是先看式(1.3)的右边,定义一个列向量,其实就是把W的每一行的2范数求和,我们同样稀疏化V,得到的结果就是如图2右边所示的结果,即我们把所有重要的特征都保留了(all-sharing,形象来说就是你把图2右边压成只剩一列的列向量,每行代表一个特征,所以那些对所有attribute都重要的特征都保留下来)。但还是那个问题,我们希望不同的组选择不同的特征,而不是所有的组都用一样的几个特征。

所以这篇文章就提出了式子(1.4)的约束:

 (1.4)

其中S就是分组,文章中一共手动分了L组,按照上面的推理方法,现在V就不是一个列向量,而是一个DXL的矩阵了,,由于我们现在按组来分了,自然稀疏化的结果也是按组得到,也就达到我们的目的了。

具体的数值解法的话就参考MTL的方法了,这里略过不提。blog排版不易,要看pdf请自行下载...
0 0
原创粉丝点击