用对抗的方法生成Hard Triplets

论文:An Adversarial Approach to Hard Triplet Generation


1. Triplet Loss


ReID问题中都是根据图像embedding之间的特征距离来判断相似度,但是平常训练都是根据训练集的ID做监督,用softmax进行分类。而Triplet loss能够直接对图像的特征进行监督,更有利于学到好的embedding。

  • 从一个minibatch中获取一个三元组 <a, p, n>
    • a: anchor
    • p: positive, 与 a 是同一类别的样本
    • n: negative, 与 a 是不同类别的样本

损失函数:L=max(d(a,p)−d(a,n)+margin,0)

hard triplets指的是找到minibatch中L最大的一对三元组,即找到d(a,p)最大的和d(a,n)最小的。

但是这样直接的方式不一定能找出具有代表性的三元组,会对网络的收敛(convergence)造成问题。

2. Related Works


三元组损失函数对于三元组的选择非常敏感,经常会有难以收敛和局部最优的问题,为此[1]提出了Coupled Cluster Loss,使得训练阶段更加稳定,网络收敛的更加快。

3. Hard Triplet Generation


现有的mining方法都是基于已存在的sample,本文提出了一种新的方法如下图1。
图1

特征提取网络F的输出F(x)\in\mathbb{R}^L,对于三元组 <a, p, n>,传统方法的损失函数是:L_{F,tri}^{'}=[d(F(a),F(p))−d(F(a),F(n))+margin]_{+} \tag{1},其中dl2距离。

3.1Adversarial Triplet Generator G

给出一个生成器G,通过这个生成器生成一个新的sampleG(F(x))\in\mathbb{R}^L,G的目的是使得正样本之间距离增大,负样本之间距离减小,目的是为了生成更harder的sample.
通过降低以下loss来训练GL_{G,tri}=[d(G(F(a)),G(F(n)))−d(G(F(a)),G(F(p)))+margin]_{+}\tag{2}
随后固定学习过的G,接着训练F
L_{F,tri}=[d(G(F(a)),G(F(p)))−d(G(F(a)),G(F(n)))+margin]_{+}\tag{3}

3.2 Multi-category Discriminator D

但是光靠上面的方法并不够有效,因为没有限制的情况下,G会任意操纵(arbitrarily manipulate)F生成的特征向量。打个比方说,G可能随意输出一个向量,使得L_{G,tri}非常小,但是这个对于训练来说没有意义。为了限制G,需要他输出的向量不改变原本向量的标签。

给出一个判别器D,对于每个特征向量,D能将其分成(K+1)类,K表示真实存在的类别,+1代表fake类别。通过降低以下loss来训练D:
L_{D}=L_{D,real}+\beta L_{D,fake}\tag{4}
其中前半部分让D分辨F生成的特征向量的标签
L_{D,real}=\frac{1}{3}(L_{sm}(D(F(a)),l_{a})+L_{sm}(D(F(p)),l_{p})+L_{sm}(D(F(n)),l_{n}))\tag{5}
L_{sm}表示softmax loss,后半部分让D分辨G生成的特征向量。
L_{D,fake}=\frac{1}{3}(L_{sm}(D(G(F(a))),l_{fake})+L_{sm}(D(G(F(p))),l_{fake})+L_{sm}(D(G(F(n))),l_{fake}))\tag{6}
l_{fake}表示fake类别。
之前提到G应该保留住输入的特征向量的标签。因此文章中提出下面的loss:
L_{G,cls}=\frac{1}{3}(L_{sm}(D(G(F(a))),l_{a})+L_{sm}(D(G(F(p))),l_{p})+L_{sm}(D(G(F(n))),l_{n}))\tag{7}
与之前的公式(2)L_{G,tri}结合,通过降低以下loss来训练G:
L_{G}=L_{G,tri}+\lambda L_{G,cls}\tag{8}

3.3 Summary

  1. F网络通过结合公式triplet(3)和classification(5)训练:

L_{F,tri}+\mu L_{D,real}\tag{9}​

​ 其中classification(5)确保了F​能够正确分类

  1. 公式(4)训练判别器(D)
  2. 公式(8)训练生成器(G)

4 Algorithm Details


首先,basic model同时降低softmax loss和triplet loss。随后G被加入到basic model。

4.1 Basic Model

图3

图三所示的是basic模型。输出的特征层后是一个全连接层(softmax loss)和一个规范化(simmilarity loss)层。

softmax 和similarity loss在之前的研究中有被结合起来,但是他们之间的关系并没有被深入的进行研究。

在特征向量空间(feature embedding space)中,所有相同类别的数据坐标经过l2​规范化后应该是在一个单位超球面(unit hyper sphere)上,图2中的decision boundary将不同类别的数据分成K个类别,这种结构能加速收敛并达到理想化(optimal)的结果。但是传统的softmax loss不能很好兼容基于特征距离(distance-based)的similarity loss。如图3(b)中。由于偏置b的存在,decision boundary不能够通过原点,因此在l2​规范化后,不同类别的点可能会重合。这将导致类间距离(inter-class)的缩小,影响特征向量的效果。因此文章中提出了一个没有偏执b的softmax loss。如图3(b)所示,这种无偏置softmax损失的所有决策边界都通过原点,并且决策区域是锥形的,其顶点位于原点。因此,同一类的样本在单位超球面上具有单独的投影,这确保了来自不同类别的示例之间的长的类间距离(inter-class)。

给定一个训练三元组<a,p,n,l>​其中l​为anchor图片a​的类别。无偏置的softmax定义为:

L_{F,cls}=-log\frac{e^{W_{l}F(a)}}{\sum_{k=1}^{K}e^{W_{k}F(a)}\tag{10}}

其中F(·)表示CNN网络的输出特征向量。随后网络F通过缩小L_{F}=L_{F,cls}+\lambda L_{F,tri}^{'}来训练(SGD)。

4.2 Adversarial Training

图4

在basic model中,通过随机选取triplets来训练,现在我们打算在特征层面训练一个triplet生成器。

图4左边部分所示,G​的输入是L维的特征向量,这个向量是网络F​的输出,同时G​的输出具有相同的维度。G​包含4个全连接层,前两个降维,后两个升维,每一层后面跟了BatchNormalization和ReLU。最后的输出是输入向量和输出向量的对应位置相加。

另外,判别器D接受F产生的L维特征向量,并将其分成K+1类。D也有4个全连接层,前三个后面跟了BatchNormalization和ReLU,最后一个跟的softmax。(怎么感觉D接受的是应该是G产生的?)

文章中使用的优化器是SGD,学习率\alpha,步骤在Section 3中介绍。

  1. 训练特征提取网络F​L_{F}=L_{F,tri}+\mu L_{D,real}​
  2. 训练判别网络D​:L_{D}=L_{D,real}+\beta L_{D,fake}​
  3. 训练生成网络G:L_{G}=L_{G,tri}+\lambda L_{G,cls}​ 目的是为了生成更难判断的triplets,同时也会受到限制。

4.3 Harder Triplet Generation from Local Details

此外,文章中尝试构建一个更强大的提取器F,允许HTG从细粒度的局部细节创建更hard三元组,因此视觉识别模型可以用更难的三元组示例挑战变得更加鲁棒。
实际上,局部特征在许多细粒度的视觉识别任务中起着关键作用。用于图像分类的典型深度神经网络擅长提取高级全局特征,但常常缺少局部细节的特征。这可能会限制HTG探索本地细节以创建更难的triplets。例如,在没有本地细节的情况下,HTG无法生成能够识别不同车辆的大多数有辨别力的部分的三元组,例如徽标,灯光和天窗。

为了解决这个问题,文章中介绍了一种更加关注局部特征的关键点图。例如ResNet-18包含了4个连续的卷积块,在最后一个卷积块后面跟着一个全连接层作为全局特征f_{global}.对于卷积块block-l来说,他的输出特征图可以表示为X^l\in \mathbb{R} ^{C\times W\times H}.随后我们加一个局部分支叫做keypoint bolck,它具有类似于卷积块的结构,用于本地化关键点的分布,这些关键点可以关注最具辨别力的部分以创建更难的三元组。高级语义特征映射是稀疏的(不太明白这里),我们假设关键点层的每个通道对应于特定类型的关键点,因此我们在关键点层的输出特征上应用通道层面(channel-wise)softmax来估计不同图像位置上关键点的密度:M_{cij}^{l}=\frac{e^{P^l_{cij}}}{\sum_{w=1}^{W}\sum_{h=1}^{H}e^{P^l_{cwh}}}\tag{11}

P^l_{cij}是clock-l的输出特征图在通道c及位置(i,j)上的的点。

block-l局部特征f^lf^l_{c}=\sum^W_{i=1}\sum^H_{j=1}X^l_{cij}M^l_{cij}

文章中提取了bolck-3和block-4的特征,和全剧特征concat后作为最后的输出特征。f_{out}=[f_{global};f^3,f^4]

备注:这部分没有看的很明白,我理解的大概意思是在网络的中间层先做一个softmax,最后和全局特征的softmax concat起来。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,657评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,662评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,143评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,732评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,837评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,036评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,126评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,868评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,315评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,641评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,773评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,470评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,126评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,859评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,095评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,584评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,676评论 2 351

推荐阅读更多精彩内容