(LLC)Locality-constrained Linear Coding for Image Classification

        传统的基于特征袋(bag-of-features, BoF)的SPM方法需要非线性分类器来实现良好的图像分类性能。LLC论文提出了一种简单而有效的编码方案,称为位置约束线性编码(LLC),以取代传统SPM中的VQ编码。LLC利用局域约束将每个描述符投影到其局部坐标系中,投影坐标通过最大池化进行集成以生成最终表示。使用线性分类器,所提出的方法的性能明显优于传统的非线性SPM,在几个基准测试中取得了最先进的性能。
        与稀疏编码策略相比,LLC所使用的目标函数具有解析解。此外,论文提出了一种快速逼近LLC方法,首先执行k-最近邻搜索,然后求解约束最小二乘拟合问题,计算复杂度为O(M + K²)。因此,即使使用非常大的码本,我们的系统仍然可以每秒处理多帧。这种效率大大增加了LLC在实际应用中的实用价值。

一.简介

        目前最先进的图像分类系统包括两个主要部分:特征袋(bag-of-feature, BoF)和空间金字塔匹配(spatialpyramid matching, SPM)。
        BoF方法将图像表示为其局部特征的直方图。它对特征的空间平移具有特别的鲁棒性,并且在全图像分类任务中表现出不错的性能。然而,BoF方法忽略了特征的空间布局信息,因此无法捕获形状或定位物体。
        SPM方法将图像划分为越来越精细的空间子区域,并从每个子区域计算局部特征的直方图。通常,使用 ^{2^l}×^{2^l} 子区域,l = 0,1,2。所得到的“空间金字塔”是对有序BoF表示的高效扩展,在许多图像分类任务中表现出了很好的性能。

        基于BoF的SPM方法的典型流程图下图左侧所示。

        首先,在输入图像上检测或密集定位特征点,并从每个特征点中提取“SIFT”或“颜色矩”等描述子(图中蓝色圆圈突出显示),从而获得“Descriptor”层。
        然后,应用一个包含M个条目的码本对每个描述子进行量化进而生成“Code”层,其中每个描述符被转换为_{R^M}代码(绿色圈中突出显示)。
        如果使用硬矢量量化(hard vector quantization,VQ),则每个代码只有一个非零元素,而对于软矢量量化,则可以有一小组元素是非零的。接下来,在“SPM”层中,每个子区域内的多个代码通过平均和归一化为直方图汇集在一起。最后,将所有子区域的直方图连接在一起,生成用于分类的图像的最终表示。

        虽然传统的SPM方法对图像分类效果很好,但必须使用非线性核的分类器,例如卡方核。因
此,非线性分类器必须承担额外的计算复杂度,在训练中承担O(^{_{n^3}}),在SVM中承担O(n)的测试,其中n是支持向量的数量。这意味着SPM方法对于实际应用程序的可伸缩性很差。

        为了提高可扩展性,研究人员的目标是获得与线性分类器一起更好地工作的非线性特征示。Yang等人提出了ScSPM方法,该方法使用稀疏编码(SC)代替VQ来获得非线性编码。该方法在几个基准测试上取得了最先进的性能。Yu等人通过经验观察到,SC结果往往是局部的——非零系数通常分配给编码数据附近的基。他们提出了对SC的一种修改,称为局部坐标编码(LCC),它明确地鼓励编码是局部的,并在理论上指出,在某些假设下,对于使用获得的编码成功学习非线性函数,局部性比稀疏性更重要。与SC相似,LCC需要解决L1范数优化问题,但计算成本较高。

        LLC论文提出了一种新颖实用的编码方案,称为位置约束线性编码(LLC),它可以看作是LCC的一种快速实现,它利用局域约束将每个描述符投影到其局部坐标系中。实验结果表明,即使使用线性SVM分类器,使用LLC代码生成的最终表示(图1)也能获得令人印象深刻的图像分类精度。此外,LLC使用的最优优化问题具有解析解,其中每个描述符的计算复杂度仅为O(M + M)。

        进一步提出了一种近似的LLC方法,通过执行k-最近邻(K-NN)搜索,然后求解约束最小二乘拟合问题。这进一步将计算复杂度降低到O(M +K),其中K是最近邻的个数,通常K < 0.1 × M。从我们的实验中观察到,使用具有2048个条目的码本,300 × 300图像平均只需要0.24秒的处理时间。这种效率大大增加了LLC在许多实际应用中的实用价值。

二.LLC编码的基本思想

        设X为从图像中提取的一组d维局部描述符,即 X = [\mathrm{X}_{1}, \mathrm{X}_{2}, \cdots, \mathrm{X}_{N}]\in\mathrm{R}^{D\times N}。给定一个有M个条目的码本, \mathrm{B}=[\mathrm{B}_{1}, \mathrm{B}_{2}, \cdots\mathrm{B}_{M}]\in\mathrm{R}^{D\times M},不同的编码方案将每个描述符转换为m维码,以生成最终的图像表示。

(1)VQ编码

        传统的SPM采用VQ编码,解决了以下约束最小二乘拟合问题:

\arg\operatorname*{min}_{\mathbf{C}}\sum_{i=1}^{N}||\mathbf{x}_{i}-\mathbf{B}\mathbf{c}_{i}||^{2}\text{(1)}\\s.t.\|\mathbf{c}_{i}\|_{\ell^{0}}=1,\|\mathbf{c}_{i}\|_{\ell^{1}}=1,\mathbf{c}_{i}\succeq0,\forall i

其中 \mathbf{C}=[\mathbf{C}_{1}, \mathbf{C}_{2}, \cdots, \mathbf{C}_{N}]是X的代码集。基数约束\|\mathbf{c}_{i}\|_{\ell^{0}}=1意味着每个代码\mathbf{C}_{i}中只会有一个非零元素,对应于xi的量化id。\|\mathbf{c}_{i}\|_{\ell^{1}}=1,\mathbf{c}_{i}\succeq0,\forall i 意味着x的编码权值为1。在实践中,单个非零元素是通过搜索最近邻来找到的。

(2)ScSPM编码

        为了改善VQ的量化损失,可以通过使用稀疏性正则化项来放宽Eq.(1)中的限制性基数约束\|\mathbf{c}_{i}\|_{\ell^{0}}=1。在ScSPM中,选择这样一个稀疏正则化项作为\mathbf{C}_{i}的L1范数,对每个局部描述符\mathbf{X}_{i}进行编码就成为一个标准的稀疏编码(SC):

\arg\min_{\mathbf{C}}\sum_{i=1}^{N}\|\mathbf{x}_{i}-\mathbf{B}\mathbf{c}_{i}\|^{2}+\lambda\|\mathbf{c}_{i}\|_{\ell^{1}}\quad(2)

        稀疏性正则化项起着几个重要的作用:首先,码本B通常是过完备的,即M > D,因此L1正则化是必要的,以确保欠定系统具有唯一解;其次,稀疏性先验允许学习到的表征捕获局部描述符的显著模式;第三,稀疏编码可以实现比VQ更小的量化误差。因此,即使使用线性SVM分类器ScSPM在Caltech-101等基准测试中也可以大大优于非线性SPM方法。

(3)LLC编码

        提出了一种新的编码算法,称为位置约束线性编码(LLC)。正如LCC所建议的那样,局部性比稀疏性更重要,因为局部性必须导致稀疏性,反之亦然。LLC采用局部性约束而不是Eq.(2)中的稀疏性约束。具体来说,LLC代码使用了以下标准:

\begin{aligned}&\min_{\mathbf{C}}\sum_{i=1}^{N}\|\mathbf{x}_{i}-\mathbf{B}\mathbf{c}_{i}\|^{2}+\lambda\|\mathbf{d}_{i}\odot\mathbf{c}_{i}\|^{2}&\text{(3)}\\&s.t. \mathbf{1}^{\top}\mathbf{c}_{i}=1, \forall i\end{aligned}

其中\odot表示元素的乘法,\mathbf{d}_{i}_{_{R^m}}是局部性适配器,它为每个基向量提供与输入描述符\mathbf{X}_{i}的相似度成比例的不同自由度。具体地说,

\mathbf{d}_i=\exp\left(\frac{\mathrm{dist}(\mathbf{x}_i,\mathbf{B})}{\sigma}\right).\quad(4)

其中\mathrm{dist}(\mathbf{x}_i,\mathbf{B}) = [\mathrm{dist}(\mathbf{x}_i,\mathbf{b}_1),...,\mathrm{dist}(\mathbf{x}_i,\mathbf{b}_M)]^T,和\mathrm{dist}(\mathbf{x}_i,\mathbf{b}_j)\mathbf{x}_i\mathbf{b}_j之间的欧氏距离。σ用于调整局部性适配器的权重衰减速度。通常通过从\mathrm{dist}(\mathbf{x}_i,\mathbf{b}_j)中减去max \mathrm{dist}(\mathbf{x}_i,\mathbf{b}_j)来得到(0,1]之间的值,约束\begin{vmatrix}\mathrm{s.}t.\mathbf{1}^\top\mathbf{c}_i=1,\forall i\end{vmatrix}遵循LLC代码的移位不变量要求。请注意,Eqn. 3中的LLC代码在L0范数意义上不是稀疏的,而是在解只有几个显著值的意义上是稀疏的。在实践中,我们简单地将这些小系数的阈值设为零。

(4)LLC属性

        为了获得良好的分类性能,编码方案应该为相似的描述符生成相似的代码。根据这一要求,Eq.(3)中的局部性正则化项||\mathbf{d}_i\odot\mathbf{c}_i||^2呈现出几个吸引人的性质:

1. 更好的重建。在VQ中,每个描述符由码本中的单个基表示,如图2.a所示。由于较大的量化误差,相似描述符的VQ代码可能非常不同。此外,VQ过程忽略了不同基之间的关系。因此需要非线性核投影来弥补这样的信息损失。另一方面,如图2.c在LLC中所示,每个描述符更准确地由多个基表示,LLC代码通过共享基来捕获相似描述符之间的相关性。

2. 局部平滑稀疏性。与LLC类似,SC通过使用多个碱基实现了更小的重构误差。然而,SC中L1范数的正则化项并不光滑。如图2.b所示,由于码本的过度完备性,SC过程可能会为相似的补丁选择完全不同的基以支持稀疏性,从而失去代码之间的相关性。另一方面,LLC中的显式局部性适配器确保了相似的补丁将具有相似的代码。
3. 解析解。求解SC通常需要计算要求很高的优化过程。例如,Yang等人使用的Feature Sign算法在最优情况下的计算复杂度为O(M ×K),其中K表示非零元素的个数。与SC不同,LLC的解可以解析地推导为:

\tilde{\mathbf{c}}_{i}=\left(\mathbf{C}_{i}+\lambda\mathrm{diag} (\mathbf{d})\right)\setminus\mathbf{1}\text{(5)}\\\mathbf{c}_{i}=\mathbf{\tilde{c}}_{i}/\mathbf{1}^{\top}\mathbf{\tilde{c}}_{i},\text{(6)}

其中\mathbf{C}_i=(\mathbf{B}-\mathbf{1}\mathbf{x}_i^\top)(\mathbf{B}-\mathbf{1}\mathbf{x}_i^\top)^\top表示数据协方差矩阵。在实践中,LLC可以执行得非常快。

三.快速编码的近似LLC

        LLC解只有几个显著值,或者等价地说,求解Eq.(3)实际上执行的是特征选择:它为每个描述符选择局部基,形成一个局部坐标系。这表明我们可以开发一个更快的LLC近似来加速编码过程。代替求解Eq.(3),我们可以简单地使用xi的K (K < D < M)近邻作为局部基Bi,求解一个小得多的线性系统得到码子

\begin{aligned}&\min_{\tilde{\mathbf{c}}}\sum_{i=1}^{N}||\mathbf{x}_{i}-\tilde{\mathbf{c}}_{i}\mathbf{B}_{\mathbf{i}}||^{2}&\text{(7)}\\&st. \mathbf{1}^{\top}\tilde{\mathbf{c}}_{i}=1, \forall i.\end{aligned}

        这将计算复杂度从O(^{_{M^2}})降低到O(M +^{K^2}),其中K<<M。这种近似LLC过程的最终实现如图1所示。虽然这种近似的编码看起来与局部线性嵌入相似,但LLC的整个过程本身与LLE明显不同,因为LLC包含了一个额外的码本学习步骤,其中的推理来自Eq.(3)。码本学习步骤将在下一节中进一步解释。
        由于K通常很小,求解Eq.(7)非常快。对于搜索k个最近邻,我们应用了一种简单但高效的分层K-NN搜索策略,其中每个描述符首先被量化为L个子空间中的一个,然后在每个子空间中应用\mathbb{R}^{M\times D}码本。码本的有效大小变为L ×M。这样,可以使用更大的码本来提高建模能力,而LLC中的计算量与使用单个\mathbb{R}^{M\times D}码本时几乎保持不变。

四.Codebook优化

        在以上所有讨论中,我们都假设给出了码本。生成代码本的一种简单方法是使用基于聚类的方法,如K-Means算法。K-Means生成的码本可以产生令人满意的精度。在这项工作中,我们使用LLC编码准则来训练码本,进一步提高了性能。在本节中,我们为此提出了一种有效的在线学习方法。回顾Eq.(3),现在我们寻求将每个训练描述符分解为LLC代码和码本的乘积。因此,一个最优码本B*可以通过

\begin{aligned} \arg\min_{\mathbf{C},\mathbf{B}}& \sum_{i=1}^{N}\|\mathbf{x}_{i}-\mathbf{B}\mathbf{c}_{i}\|^{2}+\lambda\|\mathbf{d}_{i}\odot\mathbf{c}_{i}\|^{2} && \text{(8)} \\\text{st.}& \mathbf{1}^{\top}\mathbf{c}_{i}=1, \forall i && \text{(9)} \\ &||\mathbf{b}_{j}||^{2}\leq1, \forall j \end{aligned}

        Eq.(8)可以用坐标下降法求解,在已有B(C)的基础上迭代优化C(B)。然而,在实践中,训练描述符N的数量通常很大(例如,在我们的实验中是2,000,000+),这样在每次迭代中将所有LLC代码放在一起就太消耗内存了。因此,我们采用一种在线方法,每次读取一小批描述符x,并增量更新码本B。

        为了详细说明,我们首先使用K-Means聚类训练的码本初始化B,然后循环遍历所有训练描述符以增量更新B。在每次迭代中,我们取单个样例xi(或一小批样例),并求解Eq.(3),利用当前b得到相应的LLC代码。然后,如上节所述,我们将此步骤视为特征选择器,即我们只保留相应权值大于预定义常数的基集Bi,并在没有局部性约束的情况下对xi进行改装。然后使用得到的代码以梯度下降的方式更新基。最后,我们将单位圆外的那些基投影到单位圆上。上述过程算法4.1所示。

五.实验结果测试

        在本节中,测试了基于三个广泛使用的数据集的结果:Caltech-101 , Caltech-256和Pas-cal VOC2007。在整个实验中,我们只使用了一个描述符,即定向梯度直方图(Histogram of Oriented Gradient, HOG)。在我们的设置中,从图像上每8个像素密集定位的斑块中提取HOG特征,分别在3个尺度下,16 ×16, 25 ×25和31 ×31。每个HOG描述符的维度是128。在LLC处理过程中,只使用近似的LLC,并且在移位不变约束下将邻居数量设置为5。

        在“SPM”层中,对于每个空间子区域,描述符编码(例如,VQ 代码、SC 代码或 LLC 代码)被汇集在一起​​以获得相应的汇集特征。来自每个子区域的这些汇集特征被连接并归一化为最终的图像特征表示。具体来说,使用了两种池化方法

• sum pooling :\mathbf{c}_{out}=\mathbf{c}_{in1}+,...,+\mathbf{c}_{in2}

• max pooling : \mathbf{c}_{out}=\max(\mathbf{c}_{in1},...,\mathbf{c}_{in2})

其中“max”以行方式运行,返回与 cin1 大小相同的向量。然后可以通过以下方式对这些汇集的特征进行归一化:

• 总和归一化:\mathbf{c}_{out}=\mathbf{c}_{in}/\sum_{j}\mathbf{c}_{in}(j)

\ell^{2}归一化:\mathbf{c}_{out}=\mathbf{c}_{in}/\|\mathbf{c}_{in}\|_2

可以探索不同的组合,例如,使用VQ代码进行“和池化”之后的“和规范化”产生直方图。在我们的LLC框架中,我们使用了“最大池化”与中的“\ell^{2}归一化”相结合的方法。所有实验都是在戴尔\mathrm{power-eredge~1950}服务器上进行的,该服务器具有16G内存和2.5Ghz四核CPU。

(1)Caltech-101

Caltech-101数据集包含101个类别的9144张图像,包括动物、车辆、花卉等,形状差异很大。每个类别的图像数量从31到800不等。根据原始数据集以及许多其他研究人员的建议,我们将整个数据集划分为5、10、…,每类30张训练图像,每类不超过50张测试图像,并使用超102个类(即101个类和一个“背景”类)的平均准确率来测量性能。我们训练了一个包含2048个基的密码本,并使用了4×4、2×2和1×1子区域进行SPM。在实验中,将图像的大小调整为不大于300×300像素,并保留了纵横比。

在我们的评估中,总共有13个类达到了100%的分类准确率,每个类有30个训练图像。这13个类中有5个具有超过10个测试图像。我们将我们的结果与几种现有的方法进行了比较。详细的结果下表所示,可以看出,在大多数情况下,我们提出的LLC方法的性能领先。此外,我们的方法在从原始图像输入生成最终表示时的平均处理时间仅为0.24秒。

(2)Caltech-256

        Caltech-256数据集包含256个类别的30,607张图像。与Caltech-101相比,它在对象大小、位置、姿势等方面表现出更高的可变性。每个类包含至少80个图像。将图像的大小调整为小300×300像素,并保持长宽比。我们在实验过程中遵循了常见的设置,即,我们分别在每个类的15、30、45和60个训练图像上尝试我们的算法。我们训练了一个包含4096个碱基的码本,并使用了4×4、2×2和1×1子区域进行SPM。从下表中可以看出,结果非常令人印象深刻:在所有情况下,我们的LLC方法比现有技术中的最佳方法高出6%以上。此外,处理每张图像的平均时间为0.3秒。图5.2列出了20个最容易分类的类,每个类使用60张训练图像。

(3)Pascal VOC 2007 

        PASCAL 2007数据集由来自20个类的9963张图像,这些图像包括室内和室外场景,特写和风景,以及奇怪的视点。这个数据集是一个极具挑战性的数据集,因为所有的图像都是从Flicker获取的日常照片,其中物体的大小、视角、照明等外观及其姿势变化很大,并且经常出现遮挡。

        使用平均精度(AP)度量来评估分类性能,这是PASCAL挑战使用的标准度量。它计算precision /Recall曲线下的面积,分数越高,性能越好。在下表中,我们列出了所有20个类别的分数

        对于LLC算法,只使用单一描述符(HoG)和简单线性SVM作为分类器。即使如此,从表中可以看出,LLC方法仍然可以在[6]和[20]中获得与最佳系统相似的性能。事实上,如果只使用密集SIFT(类似于框架中的密集HOG),在[6]中验证集上的最佳结果仅为51.8%,而LLC方法达到了55.1%,赢得了3.3%的显著优势。

(4)讨论

        为了对所提出的LLC方法进行更全面的分析,我们进一步评估了其性能,包括码本训练、用于近似的邻居数量、第二节提到的各种约束,以及“SPM”步骤中不同类型的池化和规范化。LLC主要报道了使用Caltech-101数据集的结果,并且我们的实验表明,结论也可以推广到其他数据集。
        首先,我们比较了K-Means算法和我们提出的Alg.4.1算法训练的码本的分类精度。在应用我们的算法时,Eq.(4)和Eq.(8)中的两个相关参数λ和σ经过精心选择,使得基数(即Alg.4.1第8行id的长度)能够匹配分类过程中使用的邻居数量。最后使用λ= 500和σ=100,训练时的基数范围在4 ~ 34之间。我们为每种方法分别生成了1024和2048个条目的两个码本。然后使用与第5.1节中报告的相同的实验设置,结果绘制在图5中。如图所示,在每个类别的训练样本数量不同的情况下,通过Alg.4.1学习的码本比通过K-Means学习的码本的分类准确率提高了0.3 ~ 1.4%。

        其次,我们研究了用于近似LLC的不同邻居K数量的影响,下图分别列出了使用2、5、10、20和40个邻居的性能。可以看出,一般来说,邻居数量越少,分类准确率越高。这是可取的,因为使用的邻居数量越少,计算速度就越快,消耗的内存也越少。然而,当K小于5时,性能就开始下降了。

        第三,我们在LLC代码上测试了除Eq.(3)中的移位不变约束之外的不同约束下的性能。测试的其他约束条件包括
•不受约束。
•非负性约束。
•非负移不变约束。
Eq.(7)。非负约束使用中的算法求解。在我们的实验中,我们注意到, 由于K很小,求解不同约束条件下的Eq.(7)的计算量差别不大。如图7所示,平移不变约束导致最佳性能。非负约束,无论是单独使用还是与移位不变量约束一起使用,都会显著降低性能。

        最后,我们评估了“SPM”层中使用的池化和规范化类型。从下图中可以观察到,“max pooling”和“\ell^{2} normalization”的组合实现了最佳性能。“max池化”的良好性能与[22]是一致的。对于“\ell^{2}归一
化”,它使任意向量与自身的内积为1,这对于线性核来说是理想的。

六.总结

        LLC应用局域性约束从码本中选择相似的局部图像描述子基,并学习这些基的线性组合权值来重建每个描述子。还引入了一种近似方法来进一步加快LLC的计算速度,并引入了一种优化方法来使用大规模训练描述符增量学习LLC码本。基于多个知名数据集的实验结果验证了LLC的良好性能。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值