CNN Image Retrieval Learns from BoW: Unsupervised Fine-Tuning with Hard Examples

原文地址:CNN Image Retrieval Learns from BoW: Unsupervised Fine-Tuning with Hard Examples

官方实现:filipradenovic/cnnimageretrieval-pytorch

摘要

Convolutional Neural Networks (CNNs) achieve state-of-the-art performance in many computer vision tasks. However, this achievement is preceded by extreme manual annotation in order to perform either training from scratch or fine-tuning for the target task. In this work, we propose to fine-tune CNN for image retrieval from a large collection of unordered images in a fully automated manner. We employ state-of-the-art retrieval and Structure-from-Motion (SfM) methods to obtain 3D models, which are used to guide the selection of the training data for CNN fine-tuning. We show that both hard positive and hard negative examples enhance the final performance in particular object retrieval with compact codes.

卷积神经网络(CNN)在许多计算机视觉任务中实现了最先进的性能。然而,无论是从头开始训练还是对目标任务进行微调都需要进行大量的人工标注。在本文我们实现了以完全自动化的方式通过大量无序图像对图像检索任务进行微调训练。我们采用最先进的检索和运动结构(SfM)方法来获取3D模型,它被用于指导训练数据的选择。通过实验证明了使用困难正样本和困难负样本参与训练能够帮助特定目标检索任务的最终性能(仅需使用短向量)。

引言

本文主要工作:

  1. 利用SfM(Structure-from-Motion)清洗数据,并在CNN训练过程中部署困难正样本和困难负样本进行学习;
  2. 传统的白化处理方式在某些情况下并不稳定,论文提出在相同训练数据上进行白化参数学习,它能够和微调训练互补,同步提升性能;
  3. Oxford5kParis6k数据集上能够匹配最先进的检索性能(短向量)。

暹罗学习

论文使用MAC(*最大池化*)作为特征向量,并且在后面加上了L2归一化操作,因为上面这些操作都是可微分的,所以论文集合了卷积网络+MAC层+L2归一化层一起训练。其损失函数(the contrastive loss)如下:

\[ L(i,j)=\frac{1}{2}(Y(i,j)\left\| \bar{f}(i) - \bar{f}(j) \right\|^{2} + (1-Y(i,j)) (max\{0, \tau - \left\| \bar{f}(i) - \bar{f}(j) \right\|\})^{2}) \]

  • \(Y(i,j)\in \{0, 1\}\),声明了训练对之间是否属于同一标签(\(0\)表示不同,\(1\)表示相同);
  • \(\bar{f}(i)\)表示图像\(i\)L2归一化后的MAC特征向量;
  • \(\tau\)是一个超参数,定义了当查询图像和困难负样本之间存在足够大的距离时不参与训练。

可学习白化

之前的算法通过从另一个数据集中解析所有描述符的协方差矩阵来学习PCA,用于白化和维度衰减操作。本文提出利用清洗出来的数据集以及线性判别投影(linear discriminant projections)来执行白化和投影操作。投影操作可解构为两部分内容:白化(whitening)和旋转(rotation)。

白化部分为类内协方差矩阵的平方根的倒数:\(C_{S}^{-\frac{1}{2}}\),其中

\[ C_{S}=\sum_{Y(i,j)=1}(\bar{f}(i)-\bar{f}(j))(\bar{f}(i)-\bar{f}(j))^{T} \]

旋转部分为在白化空间中类间协方差矩阵的PCA计算:\(eig(C_{S}^{-\frac{1}{2}}C_{D}C_{S}^{-\frac{1}{2}})\),其中

\[ C_{D}=\sum_{Y(i,j)=0}(\bar{f}(i)-\bar{f}(j))(\bar{f}(i)-\bar{f}(j))^{T} \]

计算投影\(P=C_{S}^{-\frac{1}{2}}eig(C_{S}^{-\frac{1}{2}}C_{D}C_{S}^{-\frac{1}{2}})\),完成后执行\(P^{T}(\bar{f}(i)-\mu)\),其中\(\mu\)表示均值MAC特征向量。完成上述操作后,可以得到\(D\)维度特征向量,最后再次执行L2归一化。

没具体看懂线性判别投影的实现,还需要看代码具体实现

训练数据集

。。。

小结

论文提出了一种新颖的无监督数据清洗方案,通过构建SfM流程,可以自动清洗无标记数据集。个人对这个实现不太感兴趣,毕竟人工清洗的效果是最有效的。另外阅读这篇文章的目的在于作者提供了相应的工程实现,期望通过阅读这篇文章能够进一步了解工程具体实现内容。

相关阅读