论文阅读学习

来源:互联网 发布:淘宝上论文发表靠谱吗 编辑:程序博客网 时间:2024/05/16 12:50

Hard-Aware Deeply Cascaded(HDC) Embedding

[Paper-version1]

[Paper-version2]

[Code-Caffe]

摘要:

深度度量学习基本目标是,使相同类别的图片间的距离比不同类别的图片间的距离小.

由于优化问题,通常采用 hard example mining 来只对样本的 hard 子集进行处理.

但,hard 是相对于模型而言的,复杂模型将大部分样本作为 easy 的,而简单模型将大部分样本作为 hard 的,二者结合又难以训练.

启发点:

样本是具有不同的 hard 层次的,但难以定义复杂性合适的模型,且能充分的选择 hard 样本.

因此,以级联方式来集合不同复杂度的模型,以充分挖掘 hard 样本;通过复杂度递增的一系列模型来判断样本,且只对被判断为 hard 的样本进行模型更新.

实验是将 GoogleNet 的两个辅助 loss 分支和一个主 loss 作为级联模型,三个分支 loss 的权重都设为1,三个分支的特征组合成最终的样本特征.

1.1 符号说明

  • P={I+i,I+j},训练数据集构建的全部 positive 图片对,I+iI+j 是相同标签(label)或者相似标签的图片;
  • N={Ii,Ij},训练数据集构建的全部 negative 图片对,IiIj 是不同标签(label)或者不相关标签的图片;
  • Gk,第 k 个子网络模块;假设共 K 个网络模块,G1 的网络输入是图片,而Gk,k>1 的其它模块的输入是前一个模块的输出;K 个网络模块级联地组成前馈网络;K 个模型分别对应 K 个不同深度的子网络;
  • {o+i,k,o+j,k}, 网络 Gk 对于 positive 样本对 {I+i,I+j} 计算的输出;
  • {oi,k,oj,k}, 网络 Gk 对于 negative 样本对 {Ii,Ij} 计算的输出;
  • Fk,第 k 个变换函数,将 ok 转换为低维特征向量 fk,以进行距离计算;
  • {f+i,k,+j,k}Fk 对于 positive 样本对 {I+i,I+j} 计算的第 k 个特征向量;
  • {fi,k,j,k}Fk 对于 negative 样本对 {Ii,Ij} 计算的第 k 个特征向量;

1.2 HDC 框架图

Figure 2. HDC Embedding. 对所有的样本对训练模型 G1,基于模型 G1 选择的 semi-hard samples 训练模型 G2,基于模型 G2 选择的剩余的 hard samples 训练模型 G3. F1,F2,F3 分别为 G1,G2,G3 的特征变换.

1.2 计算


前向计算:

第一个网络模块 G1(k=1):

{oi,1,oj,1}=G1{Ii,Ij}

{fi,1,fj,1}=F1{oi,1,oj,1} # 对于样本对 {Ii,Ij} 计算得到的特征

k 个网络模块 Gk(1<k<K):

{oi,k,oj,k}=Gk{oi,k1,oj,k1}

{fi,k,fj,k}=Fk{oi,k,oj,k} # 网络 Gk 计算得到的特征

k 个网络模块的 Loss 函数:

Lk=(i,j)PkL+k(i,j)+(i,j)NkLk(i,j)

  • Pk,被先前模型判定为 hard examples 的所有 positive 样本对;
  • Nk,被先前模型判定为 hard examples 的所有 negative 样本对;

HDC 的最终 Loss 函数:

L=Kk=1λkLk

  • λk - 权重

梯度计算

采用 SGD 优化,

Loss 关于模型 Gk 的梯度计算:

LGk=Kl=kλlLlGk # Gk 的梯度计算需要对所有 Gk 相关的模型

Loss 关于变换 Fk 的梯度计算:

LFk=λkLlFk # Fk 的梯度计算只需对模型 k,因为只对模型 k 进行了特征变换.


loss 函数 —— contrastive loss

Contrastive Loss 是使 positive 样本对和距离小于边缘参数的 negative 样本对间的距离尽可能大.

L+(i,j)=D(f+i,f+j)

L(i,j)=max{0,MD(fi,fj)}

  • D(fi,fj) - 两个 L2-normalized 特征向量 fifj 间的 Euclidean 距离.
  • M - 边缘参数(margin)

因此,基于 Contrastive Loss 的 HDC Loss 函数为:

Lk=(i,j)PkD(f+i,k,f+j,k)+(i,j)Nk)max{0,MD(fi,k,fj,k)}


1.3 Hard Example 的选择

给定 loss 函数,可以根据传统的 hard example mining 方法来定义 loss 值较大的样本作为 hard examples,但多个 loss 值将被用于挖掘每一个样本的 hard examples.

由于不同模型的 loss 分布是不同的,且在训练过程中一直变化,因此在挖掘 hard examples 时,很难预定义每个模型的阈值.

这里采用一种简单的处理方式:

以降序方式对 mini-batch 内的所有的 positive 样本对的 losses 进行排列;然后取前 hk 比例的样本作为模型 k 的 hard positive set;

类似地,

以降序方式对 mini-batch 内的所有的 negative 样本对的 losses 进行排列;然后取前 hk 比例的样本作为模型 k 的 hard negative set;

被选取的 hard samples 传向后面的级联网络模型.

例示:

Figure 3. 数据分布.

(a) Positive 样本对分布:基于中心的 anchor 点,P0 包含所有的点,P1 包含红色、紫色的点,P2 只包含红色的点.

(b) Negative 样本对分布: N0 包含所有的点,N1 包含红色、紫色的点;N2 只包含红色的点.

绿色箭头表示 Cascade-Model-1 的 loss,红色箭头表示 Cascade-Model-2 的 loss,黄色箭头表示 Cascade-Model-3 的 loss.

Cascade-Model-1 对 P0N0 的所有样本对进行 forward,并尝试将所有的 positive 点 push 靠近到 anchor 点,同时将所有的 negative 点 push 远离 anchor 点; 根据 loss 值选择 hard samples,形成 P1N1(即,第2个和第3个虚线圆内的点). 类似地, Cascade-Model-2 得到 P2N2(即,第3个虚线圆内的点).

1.4 HDC 实现细节

类似于 lifted structured feature embedding ,构建图像 mini-batch 作为输入,例如,一个 mini-batch 内的 100 张图片是均匀地从 10 个不同的类别中随机采样得到的.

为了利用更多训练样本,采用[Learning a metric embedding for face recognition using the multibatch method] 的 mini-batch 方法,构建 min-batch 内的所有图像对,以计算训练 loss;例如,一个 mini-batch 内有 100 张图片,可以构建 1002100=9900 个图像对.

基于 HDC 级联模型,一张图片是由全部模型的链接特征来表示的.

算法:


  1. 输入: 训练数据集 {Ii}Ni=1
  2. for t=1;t<N;t++ do
  3.      根据类似于 lifted structured feature embedding 的方法,采样 mini-batch 的训练图片;并根据 [Learning a metric embedding for face recognition using the multibatch method] 的方法对 mini-batch 内的训练图片初始化 P0N0.
  4.      for k=1;kK;k++ do
  5.          对样本集 Pk1Nk1 内的所有图片进行 forward 到 kth 模型,以根据下面公式计算特征:
    {oi,k,oj,k}=Gk{oi,k1,oj,k1}

    {fi,k,fj,k}=Fk{oi,k,oj,k} # 网络 Gk 计算得到的特征

  6.         根据下面的公式,计算 mini-batch 内全部样本对的losses:
    L+(i,j)=D(f+i,f+j)

    L(i,j)=max{0,MD(fi,fj)}

  7.          根据 1.3 中 hard examples 选择方法,选择 hard 样本对,得到 PkNk.
  8.          根据梯度计算公式,对 PkNk 内的所有样本对进行 backward 和更新:

    LGk=Kl=kλlLlGk

    LFk=λkLlFk

  9.     end for

  10. end for

2. Experiments

HDC - image-retrieval tasks.

  • CARS196 dataset
    196 类 cars,16185 张图片,前 98 类(8054张图片)作训练,其余 98 类(8131张图片) 作测试.
  • CUB-200-2011 dataset
    200 类 birds,11788 张图片,前 100 类(5864 张图片)作训练,其余的(5924 张图片) 作测试.
  • Stanford Online Products dataset
    22634 类 products,120053 张图片,11318 类(59551 张图片) 作训练,其余的 11316 类(共 60502 张图片)作测试.
  • In-shop Clothes Retrieval dataset
    DeepFashion,11735 类 clothes,54642 张图片,从中筛选 7982 类(52712 张图片) 作训练和测试. 3997 类(25882 张图片)作训练,3985类(28760 张图片)作测试.
    测试集分为 query set 和 database set. query set 共 3985 类(14218 张图片);database set 共 3985 类(12612 张图片).
  • VehicleID dataset
    26267 类 vehicles,221763 张图片,13134 类(110178 张图片)作训练,13133 类(111585 张图片)作测试.

2.1 SetUp

基于 GoogleNet. K=3λ1=λ2=λ3=1{h1,h2,h3}={100,50,20},mini-batch=100,边缘参数 M=1,初始 learning rate = 0.01,每 3-5 epoches ×10,网络训练 15 epoches. HDC 的各级联模型的 embedding dimensions = 128,最终的 feature dimension = 384.

2.2 Results

原创粉丝点击