3. 用于细粒度分类的判别三元组
此部分主要介绍如何利用几何约束自动挖掘判别三元组,以及如何生成用于挖掘三元组分类的中层表示。我们在图1中展示了我们的框架的概述。在初始化阶段,我们根据细粒度对象的实例具有类似的总体外观这一事实,使用最近邻的方法找出潜在的三元组。然后,我们使用整个训练集或大部分训练集来验证候选三元组的区分性,并根据基于熵选择具有区分性的三元组。在分类时,我们选择具有最大响应度的三元组构建中层图像表示。此方法的关键是在全局范围内寻找候选三元组,并在全局范围内选择具有鉴别意义的三元组,避免了其他基于最近邻的细粒度分类方法的数据不足的问题。
图1
3.1 三元组初始化
为了减少三重计算的计算负担,我们用潜在的具有鉴别意义的patch来初始化候选三元组。这个过程的概述显示在图中5中。
图4 一组相邻图像的例子。红框突出显示要查询的图像。由于细粒度对象具有相似的整体外观,邻域由具有相同姿态的不同类的样本组成。
构建邻域
对于第C0类的第I0张训练样本,我们提取整幅图片的特征X0并用他从训练集中检索最近邻。由于细粒度对象具有总体相似的外观,因此所得到的图像集由来自几乎相同姿态的不同类的训练图像组成(图4)。第一步产生一组粗略对齐的图像,从而通过比较图像上的对应区域可以找到潜在的区分区域。我们指的是由初始训练图像和它的最近邻居组成的集合。
寻找候选区域
我们认为每一个邻域都是一组与他们的类标签对应的图像,并定位潜在的鉴别性区域。考虑在每个图像的相同位置上的一组patch。对于每个位置(x,y),让Fi(x,y)是从第i个图像中的补丁中提取的特征,ci为标签。将观察到的一组类标记表示为C。在(x,y)处的判别分数简单地定义为类间差异和类内差异的比率,即:
是(x,y)位置上所有patch的平均特征,
是c类patch的平局特征。我们以滑动窗口方式计算patch位置的区分分数d(x,y),patch大小为64×64,步长为8,并选择得分最高的patch位置。为了确保区域的多样性,使用非最大抑制只允许少量的重叠。
图5 三元组初始化的可视化。(a)使用C0类种子图像构造自身的最近邻集 (b)从最近邻图片栈中声称得分图 (c)通过非极大抑制选择具有最高判别分数的patch位置 (d)选择来自正类(C0类)的图像来生成三元组 (e)三元组从正样本的相应位置中产生,在这是C类。
提取候选三元组
对于C0类种子图像生成的邻域,提取候选三元组的步骤如下: 首先选择邻域内所有标签为C0类的正样本。对于每个正样本,我们从最后一步中提取鉴别性patch的特征。然后对第i个patch,通过对所有正样本特征进行平均来获得其patch模板Ti。通过选择所有可能的三联patch的组合来选择候选三元组。为了避免重复,我们队三个patch的区别性得分进行排名。得分的定义见上一篇。
在实际应用中,对于每个邻域,我们去前6个鉴别性区域,并依此确定候选三元组。再把每个类的的所有邻域组合起来,得到了三元组的侯选池。
3.2 基于熵的三元组挖掘
表示前K个检测器中,检测器T来自C来的概率,熵的计算公式如下: