Visual Instance Retrieval with Deep Convolutional Networks

原文地址:Visual Instance Retrieval with Deep Convolutional Networks

摘要

This paper provides an extensive study on the availability of image representations based on convolutional networks (ConvNets) for the task of visual instance retrieval. Besides the choice of convolutional layers, we present an efficient pipeline exploiting multi-scale schemes to extract local features, in particular, by taking geometric invariance into explicit account, i.e. positions, scales and spatial consistency. In our experiments using five standard image retrieval datasets, we demonstrate that generic ConvNet image representations can outperform other state-of-the-art methods if they are extracted appropriately.

本文对基于卷积网络(ConvNets)的图像表示在视觉实例检索中的可用性进行了广泛的研究。除了卷积层的选择外,我们还提出了一种利用多尺度方案提取局部特征的高效流程,特别是通过明确考虑几何不变性,即位置、尺度和空间一致性。在五个图像检索基准数据集上进行了实验,证明了适当的进行特征提取,通用的卷积网络图像表示可以优于其他最先进的方法。

引言

可视化实例检索:给定一个图像数据集,其中每张图像均配对一个标签,用于表示图像中某个特定目标或场景;给出一张新的未标记的图像,实例检索的任务就是在数据集中发现和查询拥有相同目标或者场景的图像。

关键挑战:

  1. 查询准确率;
  2. 查询效率(速度和内存占用)。

解决核心:

  1. 图像表示(image representations);
  2. 相似性度量(similarity measures,或者称之为距离度量,distance metrics)。

本文的重点关注在如何利用卷积网络从图像中提取出紧凑的、高效的特征向量。有两种实现路径,一个是将整个图像映射到单个特征向量(单尺度模式),另外一个是在不同尺度下提取多个局部特征(多尺度模式)。论文在多尺度模式下进行了创新,期望得到的图像表示能够对尺度和位置拥有足够的鲁棒性(几何不变性,geometric invariance),并且结合相似性度量设计了一整个实现流程。

基于运行效率,论文将图像表示划分为两种级别:

  1. 轻量级(the small footprint representations):图像表示的空间占用小于1k比特,适用于查询库数量巨大并且内存是瓶颈的情况;
  2. 中量级(the medium footprint representations):图像表示的维度在10k100k之间,适用于查询库数目少于50k的情况。

结合上述因素(几何不变性、层选择以及搜索效率),论文的工作重点在于探索卷积网络对于实例检索任务的潜力。主要工作可划分为三方面:

  1. 5个基准数据集上证明了卷积网络图像表示可以实现最先进的性能,这些数据集涵盖了从无纹理到重复图案的所有场景;
  2. 结合相似性度量策略构造了一整套适用于检索任务的实现流程;
  3. 证明了空间池化(spatial pooling)的有效性,经过维度衰减(dimensionality reduction)依旧能够保持空间一致性(spatial consistency)。

论文实现的流程中并没有包括任何搜索微调操作(search refinement procedures),比如查询扩展(query expansion)和空间重排序(spatial re-ranking)。

图像表示

卷积层选择

AlexNet为示例,它包含了多个卷积层\(Layer^{j}(I)(j=1, ..., c)\)和最后三个全连接层。论文Visualizing and understanding convolutional networks通过反卷积可视化方式对于每个卷积层的功能进行了某种解释:

  1. 第一层卷积神经元会对边缘或纹理等简单图案做出响应;
  2. 第二层卷积神经元会将这些响应聚合为更复杂的模式;
  3. 随着卷积层计算的深入,神经元在各自感受野中能够响应更加复杂的模式;
  4. 第一个全连接层将所有模式汇聚在一起;
  5. 后面两个全连接层负责学习一个非线性分类器,并且评估每个类别的分类概率。

基于上述解释,论文认为最后一个卷积层输出应该是最好的特征表示,因为每个神经元都对原图某个区域进行了特征提取,负责响应某种特定的图像模式。论文的一个假设是最后卷积层的输出还保留着不适用于图像分类,但是适用于实例检索的相关信息。并且使用最后一个卷积层\(Layer^{c}(I)\)的好处在于能够在特征图上直接提取某个局部区域所属的特征向量,而使用全连接层特征则需要专门进行图像子区域裁剪,然后重新进行计算,这会造成一些信息损害并且破坏了子区域的长宽比(这是我以为的一个优势,类似于Faster R-CNN,但是看论文后面没有用到啊,提取了子图像之后还是需要缩放然后重新输入卷积网络计算的???)。

is that it enables us to extract local features for rectangular patches which is an important advantage for retrieval. This is in contrast to the case of using a fully connected layer where one would need to either crop a part of the image; this will cause some loss of information or break the aspect ratio, which is harmful to the task of visual retrieval.

空间最大池化

最后卷积层的输出通常会有非常大的维度(比如AlexNet,近似\(40\times 40\times 512\)),不适用于后续的相似度计算,所以需要进行维度衰减操作。论文对常用的最大池化(max-pooling)操作进行了扩展,固定空间维度上的网格数量(a fixed number of cells in spatial grid),这样保证不论卷积层输出有多大,经过空间最大池化(spatial max-pooling)操作后都能得到同样大小的特征向量(类似于SPPNet)。

论文设计了\(2\times 2\)大小的网格,经过空间最大池化操作后能够得到\(2\times 2\times 512=2048\)维特征向量,相比于\(1\times 1\)网格能够保留更多的空间信息。如下图2所示。

图像尺寸

卷积层的神经元会响应对应感受野的图像表示,所以缩放输入图像的大小会改变神经元的输出。如图3所示。

在图3中,变化两个数据集的输入图像大小会带来不一样的性能变化。论文给出一种解释:对于Oxford5k数据集,在原始图像中相对小的子区域包含了关键特征,所以放大图像后提取的子图像更加准确的包含了关键特征(去除噪声信息),可以提取得到更高效的特征向量;相反, Sculpture6k数据集的全局特征具有拥有判别力,所以放大图像反而退化性能。论文最后统一将所有数据集的输入大小设置为\(600\times 600\)

将输入图像缩放至固定大小,某种程度上也是保证了神经元感受野的一致性,这样更有利于卷积网络学习得到有效的特征表示

操作流程

论文设计了多分辨率搜索策略,主要包括:

  1. 多分辨率搜索(multi-resolution search):从图像中不同位置提取不同大小的子图像(sub-patches);
  2. 相似性度量:先计算查询图像的子图像对于参考图像的最小相似度距离,然后计算查询图像\(I^{(q)}\)和参考图像\(I^{(r)}\)之间的距离;

提取局部特征

子图像设置

子图像的尺度可分为\(L\)个级别,具体的边长计算如下:

\[ s=max(w_{l}=\frac{2w}{l+1}, h_{l}=\frac{2h}{l+1}), for\ l=1, .., L \]

  • \(w\)表示图像宽;
  • \(h\)表示图像高。

每个级别分别提取\(l^{2}\)个子图像,其中心位于:

\[ (\frac{w_{l}}{2}+(i-1)b_{w}, \frac{h_{l}}{2}+(j-1)b_{h}) \]

  • \(b_{w}=\frac{w-w_{l}}{l-1}, l\neq 1\)
  • \(b_{h}=\frac{h-h_{l}}{l-1}, l\neq 1\)
  • \(i = 1, ..., l\)
  • \(j=1, ..., l\)

如果子图的边界超出了图像范围,则进行截断操作。完成子图采集之后,将其缩放到同样大小,然后输入到卷积网络提取图像表示。论文设置了\(L=4\),共采集\(30(\sum_{l=1}^{4}l^{2})\)个子图像。

尺度抖动

论文还提及了尺度抖动的优势,可以帮助提高图像表示的鲁棒性。

PCA白化

另外,论文在提取子图像特征,进行空间最大池化操作之后,再执行若干后处理操作。首先对特征进行L2归一化,然后执行PCA白化操作,

  1. 从训练集中提取一组数据集\(X\)
  2. 计算协方差矩阵\(C=\frac{(X-\mu_{X})^{T}(X-\mu_{X})}{n}\)

论文最终将图像表示下降一半维度。

相似性度量

计算查询图像\(I^{(q)}\)和参考图像\(I^{(r)}\)的距离。参考图像\(I^{(r)}\)生成了一组特征向量\(\{f_{i,j,L}^{(r)}\}\),首先计算从查询图像\(I^{(q)}\)中提取的某个特征向量\(I_{*}^{(q)}\)与参考图像\(I^{(r)}\)之间的距离:

\[ d^{*}(I_{*}^{(q)}, I^{(r)})=min_{ \begin{matrix} 1\leq m \leq L \\ 1\leq r,s \leq m \\ \end{matrix} } d(f_{*}^{(q)}, f_{r,s,m}^{(r)}) \]

\(d(\cdot, \cdot)\)指的是两个特征向量之间的距离,论文使用L2归一化距离。完成每个子图像的相似度计算后,进行求和就是\(I^{(q)}\)\(I^{(r)}\)之间的距离:

\[ D(I^{(q)}, I^{(r)})=\sum_{l=1}^{L}\sum_{i=1}^{l}\sum_{j=1}^{l}d^{*}(I_{i,j,l}^{(q)}, I^{(r)}) \]

实验

论文使用了VGGNet(包含16个卷积层和3个全连接层)进行特征提取,并且限定了子图像的大小(最大边长为图像一半)???

We should notethat we extended the bounding box of query images by half the size of the receptive fields so that the center of receptive fields for all the units remains inside the bounding box.

中量级特征表示

  • Baseline表示使用了单个图像特征(使用\(1\times 1\)空间池化);
  • MR表示多分辨率搜索;
  • Jtr表示尺度抖动;
  • PCAw表示PCA白化。

当目标在参考图像中出现在更小尺度情况下(查询图像通常包含了完整大小的地表建筑),使用MR有助于图像检索,在Oxford5kParis6k数据集上体现更明显。相反,在UKB数据集上MR操作反而退化了性能。JtrPCAw总是能够提升性能。当空间特征是关键信息时,SP也能够有效提升性能,比如Sculpture6k,雕塑的边缘信息是关键特征。

下图6展示了困难正样本,下图7展示了困难负样本。

轻量级特征表示

效果没有中量级特征那么好~~~

内存和计算开销

根据论文自己的描述,效率并不高,没有实用性。

小结

论文基于一个假设性前提,就是空间特征对于图像检索非常重要,由此进行了一系列探索,包括

  1. 为了提取更有效的图像表示,设计了多分辨率搜索;
  2. 为了保持空间一致性,设计了空间最大池化操作;

再加上尺度抖动、PCA白化以及设计的相似性度量策略,最终集合成多尺度图像检索算法。从结果来看,检索准确率有了很大提高(虽然论文设置了输入图像大小为\(600\times 600\),而且并没有说明整个训练流程),但是检索效率并不突出,不具备实用性。