[CS131] Lecture 14 Visual Bag of Words

根据 Stanford CS131 课程写的笔记(大部分为 note 翻译),英语水平一般,如有错误请评论指正

Lecture 14 Visual Bag of Words

Introduction

首先我们要将图像表现为特征向量形式。接下来创建图像图像的空间形式,观察在低维的图像值。然后将每个图像转换成一组系数,并投影到 PCA 空间。转换后的数据用分类器分类,例如:K-means、HAC。

Idea of Bag of Words

词袋模型是一个简化目标表示的方式,将其作为它们子部分的集合,以便于分类之类的操作。例如:一个段落里的单词列表和单词的频率就可以构成一个词袋,我们用词袋来表现段落以便于后续分析。

在计算机视觉领域,我们将图像考虑为图像特征的集合。同样,结合特征的频率,我们也可以运用词袋模型来进行预测任务,例如:分类、脸部检测。

词袋模型主要分为两步:

  1. 从多张图片上构造特征 “字典” 或者 “单词表”——图像中存在什么通用特征?例如:房间的色系、脸的部分。

    • 提取特征

    • 学习视觉词典

    • 用视觉词典量化特征

  2. 给定一张新图像,将它们转换为我们收集过的特征直方图——我们在 1 中构建的特征频率。

Origins

词袋可以看作一个体现在一系列图像或者文档上建立的字典的频率——新数据可以建立这个模型并用于后续预测任务。

Algorithm Summary

Extracting Interesting Features

我们可以选择我们想要的任何特征。例如:简单的将图片分割,用子图片作为特征(如下图)。后者我们可以用 SIFT 特征的角检测。

Learning Visual Vocabulary

一旦我们找到特征,我们必须将大特征集转换为一套小 “主题”。“主题” 等于在自然语言分析中的 “单词”,也等于计算机视觉中的纹理基元 (texton)。

我们可以用任何聚类技术(通常为 K-means,Mean Shift 或者 HAC 也可用)来聚类特征。接下来用每个集群的中心作为纹理基元。纹理集被称作视觉词典,如下图。

Quantize Features

码矢量 (codevector) 是纹理基元在这种情况下的同义词,码矢量集构成码本 (codebook)。我们用码本量化特征:用相同的方法从新图像中提取特征,接下来用码本将特征向量映射到相近的码矢量标签。

码本的大小(等于集群的个数)是很重要的超参数。太小会导致码矢量没有代表性;太大会导致码本过拟合。

Represent Images by Frequencies

首先,我们可以将数据集中的每张图表现为码矢量频率的直方图(如下图),我们通过特征量化完成。接着,我们有两个选择,取决于问题类型。如果是监督学习,可以基于直方图训练一个分类器。因为这个分类器是在纹理基元上训练的,所以对类之间的区分是很稳定的。如果是非监督学习,我们可以对直方图进一步聚类来找到数据集中的视觉集合。

词袋模型在大规模图像检索上十分有效。词袋模型可以帮助构造一个有效检索的数据集。首先,从数据中提取特征。接着用 k-means(通常 k=100000)构造一个词典。接下来我们为每个词计算一个权重。赋予权重可以帮助我们降低特定词的重要性。例如:把”is”, “are” 之类的词降低权重。在图像中就是把无用特征赋予低权重。

词频逆文档频率 (Term Frequency Inverse Document Frequency, TF-IDF) 通过单词在文件中的频率赋予权重。

一个单词 j 的逆文档频率 (IDF) 为:

I D F = l o g ( N u m   D o c s N u m   D o c s j   a p p e a r s )

图像中 bin j 的值表示为:
B i n j = f r e q u e n c y j   i n   I I D F

我们可以对文档构造一个词映射的逆文档,以便于快速寻找新图像和数据集中所有图像的相似性。我们只考虑 bins 和新图像重叠的图像。

大规模数据检索的缺点在于算法的表现随着数据集的增大而削弱。因为量化误差和不完美的特征检测,词袋模型有时会产生噪声图像相似度。

Spatial Pyramid Matching

Motivation

空间金字塔匹配 (Spatial Pyramid Matching) 可以将空间信息结合到模型中。

Pyramids

一个金字塔通过多张源图像的拷贝构建。每层金字塔大小是上一层的 1 / 4 。层数越低,分辨率越高。从几何角度看,整个多尺度表现看起来像一个金字塔, 原始图像位于最底部,每个周期导致更小的图像叠加在另外一个图像上。

Bags of Words(BoW) + Pyramids

空间金字塔匹配将图像分割为越来越细的子区域 (sub-region),并允许我们计算每个子区域的局部特征直方图 (BoW)。

如下图,如果金字塔上方的 BoW 包含天空特征,中部包含植被和山特征,底层包含山特征,那么整张图很可能被分类为山。

Some results

Naïve Bayes

Basic Idea

一旦我们产生了一个视觉词直方图,我们可以用朴素贝叶斯 (Naïve Bayes) 来对直方图进行分类。我们简单的衡量一个给定的视觉词是否存在,然后假定一个视觉词的存在 / 缺失和给定类的每个视觉词条件独立。

如上图,考虑一些视觉词直方图 X x i 是视觉词 i 在直方图中的总和。我们只在意视觉词 i 是否存在,即 x i { 0 , 1 }

Prior

P ( c ) 是在所有类中出现类 c 的概率。所以对总共 m 个物体类,我们有

i = 1 m P ( c ) = 1

对于一个用直方图 x 表现的图像和一些物体类 c ,我们可以计算
P ( x | c ) = i = 1 m P ( x i | c )

Posterior

现在我们可以用贝叶斯理论 (Bayes Theorem) 来计算图像 x 属于类 c j 的概率:

P ( c | x ) = P ( c ) P ( x | c ) c P ( c ) P ( x | c )

c 表示所有类。拓展分子和分母,我们可以重写方程:
P ( c | x ) = P ( c ) i = 1 m P ( x i | c ) c P ( c ) i = 1 m P ( x i | c )

Classification

为了将用直方图 x 表现的图像分类,我们简单的找到能够最大化方程 (6) 的类 c

c = arg max c P ( c | x )

因为公式中含有大量的小概率累乘,所以可能会产生一个接近于 0 的不稳定值。因此,我们改用 logs 计算概率:
c = arg max c l o g P ( c | x )

现在我们考虑两个类 c 1 c 2
P ( c 1 | x ) = P ( c 1 ) i = 1 m P ( x i | c 1 ) c P ( c ) i = 1 m P ( x i | c )


P ( c 2 | x ) = P ( c 2 ) i = 1 m P ( x i | c 2 ) c P ( c ) i = 1 m P ( x i | c )

因为分母是固定的,所以我们计算最大值时可以忽视分母。即 ( 是正比于的意思)
P ( c 1 | x ) P ( c 1 ) i = 1 m P ( x i | c 1 )


P ( c 2 | x ) P ( c 2 ) i = 1 m P ( x i | c 2 )

对于类 c
P ( c | x ) P ( c ) i = 1 m P ( x i | c )

用上 logs:
l o g P ( c | x ) l o g P ( c ) + i = 1 m l o g P ( x i | c )

现在,分类任务变成
c = arg max c P ( c | x ) = arg max c l o g P ( c | x ) = arg max c l o g P ( c ) + i = 1 m l o g P ( x i | c )

猜你喜欢

转载自blog.csdn.net/bear507/article/details/82316052
今日推荐