细粒度分类-车辆分类

Embedding Label Structures for Fine-Grained Feature Representation
CVPR 2016

首先get到了关于image understanding常见的四个名词,困扰了我好久:

  • classification 分类
  • detection 检测
  • segmentation 分割
  • retrieval 检索

再关于网络模型的有:

  • identification –>分类学习(i.e. Softmax With Loss)
  • verification –>度量(相似度)学习(i.e. Contrastive Loss)

重点

To obtain the fine-grained feature representation, a potential solution is to incorporate similarity constraints (e.g. contrastive information [9] or triplets [26, 7])

为了获得细粒度特征表示,需要加入相似性约束,即需要度量学习。

Although the features learned from triplet constraints are effective at discovering similar instances, its classification accuracy may be inferior to the fine-tuned deep models that emphasize on the classification loss, as demonstrated in our experiments. In addition, the convergence speed using such constraints is usually slow.

这部分说明了度量学习的一些弊端:尽管可以有效发现相似实例,但是相比强调分类损失的模型而言,分类精度较差,再者,收敛速度慢。原因也很显然,因为度量学习给的监督信息少(similar or dissimilar constraints vs a specific label among C classes)。
Comparison of the convergence rate on the Stanford car dataset:
细粒度分类-车辆分类_第1张图片

Different from the pairwise contrastive loss [9] that forces the data of the same class to stay close with a fixed margins, the triplet loss allows certain degrees of intra-class variance.

这里说明了Pairwise Contrastive Loss 与Triplet Loss的区别,都属于度量学习,但Triplet Loss可以允许一定程度的类间差别,这可以从Contrastive Loss的定义得到,如果同一类的两张图片(即标签为相似),则一定有损失,除非二者特征空间的距离为零!

文章的创新点

  1. 多任务学习,具体内容可参考多任务深度学习(MultiTask Learning)
  2. Embed Label Structures,这部分又分为两类:hierarchical labels and shared attributes。这些都是针对多标签的数据而言,理解不同层次的相似。

这里论文扩展了triplet loss(ranking loss 的最简单形式),比如下图:
细粒度分类-车辆分类_第2张图片
三元组变成四元组 (ri;p+i;pi;ni) ,可以简单理解 p+i 为完全相似的样本(粗粒度和细粒度标签都相同), pi 为部分相似(只粗粒度标签相同), ni 为不相似样本(粗粒度标签都不同)。满足:

D(ri;p+i)+m1<D(ri;pi)+m2<D(ri;ni)

m1>m2>0

实际操作还是拆成两个三元组 (ri;p+i;pi) (ri;pi;ni) 。具体见论文。
细粒度分类-车辆分类_第3张图片

第二篇Deep Relative Distance Learning Tell the Difference Between Similar Vehicles
CVPR 2016
这篇文章做的是实例级别的车辆识别/搜索问题,相比于车辆模型(Vehicle Model)的识别更有挑战性。一般的,车辆识别可以通过识别车牌号来实现,不过这里是从是视觉角度来区分车辆的。主要借鉴Person re-Identification,但是不能直接应用到车辆识别中,因为相同模型的车辆外观几乎相同(文中提到通过一些marks来区分这些车辆,比如一些装饰物,总之还是可以区分的…),所以在区别不同模型的同时,还要区分同一模型中不同的车辆。
综上作者提出了Mixed Difference Network Structure这样一个多任务模型:
细粒度分类-车辆分类_第4张图片
上面的分支做车辆模型的分类(Softmax),所以Fc7得到的是车辆模型级别的特征;下面的分支做Deep Relative Distance Learning(相对距离学习,即度量学习),所以Fc7_2得到的是实例级别的特征;最终的Fc8综合了这两个级别的特征。
背后的想法也很直观:判断两张车辆图片是否是同一个车,首先从车辆模型(Fc7)上判断,如果不同,自然不是同一辆车,如果相同,则需使用实例特征(Fc7_2)进一步判断。

文章的创新点

1.发现了传统的Triplet Loss 的缺陷,并进行了改进,提出Coupled Clusters Loss
2.制作了大规模车辆数据库VehicleID

这里记录下,为什么在Triplet Loss之前都会对特征进行L2范数归一化的操作:是为了防止损失函数很容易超过0 。

Triplet Loss 输入有三张图片,其中两张图片属于同一类,另一张属不同类。需要在同一类的两张图片中选择一张作为Anchor,所以同样三张图片会有两种不同的输入方式:
细粒度分类-车辆分类_第5张图片
而Triplet Loss 的作用是maximize the relative distance between the matched pair and the mismatched pair. 所以左边的输入方式会产生损失值,从而得到矫正。而右边满足了损失函数的条件,不会产生损失,也就不会反向传播,对网络没有任何帮助,但是会造成错误。

关于如何改进直接参考论文吧。

你可能感兴趣的:(图像检索,论文阅读)