[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 j 的逆文档频率 (IDF) 为:

IDF=log(Num DocsNum Docsj appears)

图像中 bin j j 的值表示为:
Binj=frequencyj in IIDF

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

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

Spatial Pyramid Matching

Motivation

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

Pyramids

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

Bags of Words(BoW) + Pyramids

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

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

Some results

Naïve Bayes

Basic Idea

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

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

Prior

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

i=1mP(c)=1 ∑ i = 1 m P ( c ) = 1

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

Posterior

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

P(c|x)=P(c)P(x|c)cP(c)P(x|c) P ( c | x ) = P ( c ) P ( x | c ) ∑ c ′ P ( c ′ ) P ( x | c ′ )

c c ′ 表示所有类。拓展分子和分母,我们可以重写方程:
P(c|x)=P(c)mi=1P(xi|c)cP(c)mi=1P(xi|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 x 表现的图像分类,我们简单的找到能够最大化方程 (6) 的类 c

c=argmaxcP(c|x) c ∗ = arg ⁡ max c P ( c | x )

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

现在我们考虑两个类 c1 c 1 c2 c 2
P(c1|x)=P(c1)mi=1P(xi|c1)cP(c)mi=1P(xi|c) 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(c2|x)=P(c2)mi=1P(xi|c2)cP(c)mi=1P(xi|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(c1|x)P(c1)i=1mP(xi|c1) P ( c 1 | x ) ∝ P ( c 1 ) ∏ i = 1 m P ( x i | c 1 )


P(c2|x)P(c2)i=1mP(xi|c2) P ( c 2 | x ) ∝ P ( c 2 ) ∏ i = 1 m P ( x i | c 2 )

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

用上 logs:
logP(c|x)logP(c)+i=1mlogP(xi|c) l o g P ( c | x ) ∝ l o g P ( c ) + ∑ i = 1 m l o g P ( x i | c )

现在,分类任务变成
c=argmaxcP(c|x)=argmaxclogP(c|x)=argmaxclogP(c)+i=1mlogP(xi|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 )

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值