Skip to main content
Deep Metric Learningの定番
Triplet Loss 徹底解説
2019/03/20
西野剛平
システム本部AIシステム部AI研究開発第一グループ
株式会社ディー・エヌ・エー
アジェンダ
• ClassificationからMetric Learningへ
• Contrastive Loss と Triplet Loss
• Triplet Lossの変遷
• Triplet Lossの改良
2
Triplet Lossって何? という人でも、お気持ちを 理解してもらえる事をGoalとする。
ClassificationからMetric Learningへ
3
MetricLearning使ったApplication
MetricLearningがよく使われるCVタスク
• 人物同定
• 顔認識
• 画像検索
• 物体追跡
4
Metric Learningを使わなければいけない理由が、そこにはあるはず・・
=> 人物同定(Person Re-Identification)をClassificationタスクとして考えてみる
Classificationを使ったRe-Identification
一般的なClassificationタスク
5
Classificationを使ったRe-Identification
人物画像でClassification
6
Classificationを使ったRe-Identification
同じ人物の別画像を入力
7
Classificationを使ったRe-Identification
違う人物の画像を入力
8
Classificationタスクでは知っているモノしか識別できない
Classificationを使ったRe-Identification
課題
• 知っているものしか識別できない。
• 知らない人物も判別する必要のあるPerson Re-Identificationにおいては、そも
そもこの構造だとまずい。
• 1Classあたりのデータ数が少ないとoverfittingしてしまう可能性が高い。
• 汎化性能を高めるためには、学習時は大量のデータが必要。
=> ちなみに、DeNAの連結社員数は、2,475人。Classificationやるとすると、一人
当り1,000枚ぐらいは欲しいが、現実的ではない。
9
Classification+ で Re-Identification
Classificationの分類機から抽出した特徴量をMetricLearning
10
Embedding Space
MetricLearning
・マハラノビス距離学習
・KISSME
・XQDA
Classification+ で Re-Identification
ClassificationとMetricLearningを一緒にやる
11
・距離
・類似度
・2値分類(同じ or 違う)
Classificationタスクとして学習され
たモデルから、2つの画像の中間特
徴量を取得。その類似度や距離など
を損失として学習
Classification+ で Re-Identification
課題
• 画像分類は2つ以上の画像の類似性を直接説明しているわけではない。したがって、
画像分類とMetric Learningで、相乗的もしくは相補的な効果が得られているのかは
不明
• 画像分類器の学習データに存在していないクラスは、そもそも特徴が学習されていな
い。そのため、後続のMetric Learning部分で、もともと学習データに存在したもの
と、そうでないものを、同等の条件で識別できるかは不明である。
12
画像分類の延長線上ではなく、Metric Learningに特化した損失関数を
使った学習が、主流となっている
Classification+ で Re-Identification(追加)
と思っていたが、最近 SphereFaceや CosFaceやArcFaceといった手法がある事を知った。
見事にClassificationを学習しながらMetricLearningも行っていて、目からウロコだった。
詳細な説明は割愛しますが、簡単に言うと、
ClassificationのSoftmax1つ手前の層の重みベクトルが、そのクラスを表す特徴ベクトル
として、超球面上にembeddingされていく。sotfmax手前のベクトルにマージンを設ける
事で、クラス間の距離が離れるうように、MetricLearningも行われている。
といったような内容です。
詳細を知りたい場合は下記の記事を読んでみてください。
https://qiita.com/yu4u/items/078054dfb5592cbb80cc
13
Contrastive Loss と Triplet Loss
14
Contrastive Loss
• ContrastiveLossはSiameseNetで使われる事がほとんど
• SiameseNetはパラメータ共有の同じ構造のモデルを利用
S. J. Rao, Y. Wang, G. W. Cottrell. “A deep Siamese neural network learns the human-perceived similarity structure of facial expressions without explicit categories.” in CogSci, 2016.
15
Contrastive Loss
16
Triplet Loss
17
Triplet Loss
18
下のような状態になるようにCNNの
最適化が行われる
Triplet Lossの変遷
19
Triplet Lossの登場(CVPR2014)
Triplet Lossは、2014年4月にarxivで発表された論文で、画像検索における順位付けを学
習するために提案されたのが最初
3枚の画像を1セットにし、その中の一つの画像(Query)と似ている方をPositive、似
ていない方をNegative、という風に3枚毎にラベル付けを行っていけばミスもかなり減る。
20J. Wang, Y. Song, T. Leung, C. Rosenberg, J. Wang, J. Philbin, B. Chen, and Y. Wu. "Learning Fine-grained Image Similarity with Deep Ranking." In CVPR, 2014.
Triplet Network(ICLR 2015 workshop)
2014年12月にarxivに上げられた論文で、画像検索における順位付けといった限られた用
途だけではなく、Triplet LossはMetric Learningを必要とするタスクに対して広く有効な
手法であると紹介。損失関数は、PositiveとNegativeのユークリッド距離をSoftmaxして
いる点が前例と異なっている。
21E. Hoffer, and N. Ailon. "DEEP METRIC LEARNING USING TRIPLET NETWORK." In ICLR workshop, 2015.
Triplet Network(ICLR 2015 workshop)
Triplet NetworkはSamesNetの欠点を改善した手法であると言及
SamesNetでの学習は、2つの画像を近づけたいのか、遠ざけたいのかはコンテキストを
考慮する必要がある。
例えば、性別と名前といったマルチクラスのラベル付きデータセットをMetric Learningす
る場合、
22
Triplet Network(ICLR 2015 workshop)
TripletLossの場合は、基準となる画像に対して、類似度が低い方を、もう一方よりも相対
的に遠ざける形となるため、コンテキストの考慮は必要ない。
23
FaceNet(CVPR2015)
2015年3月に顔認識のSOTAを記録した手法としてGoogle Inc.から発表
• 全体の構造はCVPR2014で提案されたものとほとんど同じ
オリジナル要素は、
• 顔の情報(Embedding空間でのベクトルの次元数)を128次元までに圧縮
• Tripletのマイニング方法の工夫により、学習効率を大幅に上げた
24F. Schroff, D. Kalenichenko, and J. Philbin. "Facenet: A Unified Embedding for Face Recognition and Clustering." In CVPR, 2015.
FaceNet(CVPR2015)
Triplet Selectionの方法
データセット(k 個のClassと、1Classあたり c個の画像がある場合)
Anchorの選び方は kc個、Positiveの選び方は c−1 個、Negativeの選び方は c(k−1) 個
=> Tripletの組合せは膨大になり、全てを学習に利用していくのは非効率
mini-batchの中だけでTripletを構築して、Semi-hard Negativeの条件
を満たすもののみをランダムに利用していく戦略を取る
25
FaceNet(CVPR2015)
Triplet Selectionの方法
Negativeには以下の3種類がある
26
FaceNet(CVPR2015)
Triplet Selectionの方法
FaceNetの実験で利用されたTriplet Selectionの具体的な流れ
27
FaceNet(CVPR2015)
Hard Negativeを利用しない理由を考えてみる・・・
28
FaceNet(CVPR2015)
Hard Negativeを利用しない理由を考えてみる・・・
Hard NegativeのLoss値を減らす最適化は、どちらも短くなるという選択肢がある。
Loss値がマージンよりも大きいため。これは、最終的に dp=0、dn=0、Loss値がα となる
局所解を目指しながら、最適化されてしまう可能性を示唆している。
29
Triplet Lossの改良
30
Triplet Lossの問題点
TripletLossは、Positiveを短くするのか、Negativeを長くするのかに関する条件はない。
あくまで、相対的な関係値のみを規定している。
Lossが0となった後はそれ以上の最適化は行われない!! 31
Triplet Lossの改善(CVPR2016)
この問題を解決するTripletLossが提案された。従来のTriplet Lossの項に加えて、
Positiveを一定の大きさ β よりも小さくする項を追加。
相対的な位置関係とは別に、クラス内の距離が βより小さくなるように働く。
32D. Cheng, Y. Gong, S. Zhou, J. Wang, and N. Zheng. "Person Re-Identification by Multi-Channel Parts-Based CNN with Improved Triplet Loss Function." In CVPR, 2016.
Triplet LossのDeep Metric Learning(CVPR2016)
PositiveやNegativeの長さはユークリッド距離を使うのが一般的ですが、この距離算出自
体もDeepLearningでやってしまうような手法を提案
Shared sub-network と single-image representation(SIR)とcross-image
representation (CIR)という3つの要素でネットワークを構成
33
F. Wang, W. Zuo, L. Lin, D. Zhang, and L. Zhang. "Joint Learning of Single-image and Cross-image Representations for Person Re-identification." In CVPR, 2016.
Triplet LossのDeep Metric Learning(CVPR2016)
図の青色の部分がShared sub-networkで、緑色の部分がsingle-image representation
(SIR)で、赤色の部分がcross-image representation (CIR)
34
F. Wang, W. Zuo, L. Lin, D. Zhang, and L. Zhang. "Joint Learning of Single-image and Cross-image Representations for Person Re-identification." In CVPR, 2016.
Triplet Lossの問題点2
Triplet Lossによって繰り返し学習される事により、可能な全てのTripletの組みに対し、
以下の条件が満たされるように最適化される。
35
Triplet Lossの問題点2
例えば、下記はEmbedding空間の様子を表した例で、A, B, C 3つのClassが存在。
AnchorをA3、PositiveをA1、NegativeをC1とした場合、前述の条件は満たしている。
36
Triplet Lossの問題点2
AnchorをC1、PositiveをC2、NegativeをB1とした場合も条件は満たしている
37
Triplet Lossの問題点2
しかし、Aのクラス内距離がBCのクラス間距離よりも大きいといった状況が起きてる。
38
Triplet Lossはクラス内距離がクラス間距離よりも小さくなる事は保証しな
い
Quadruplet Loss(CVPR2017)
3つではなく4つの要素からなる損失関数
最初の項はTriplet Lossと同じ。
2つめの項も似ているが、別のAnchorを持つNegativeを指定。
=> 任意のクラス間距離は、任意のクラス内距離よりも大きくなる
39
Quadruplet Loss(CVPR2017)
最初のConvolution1,2によりEmbedding
Embedding空間内の距離はDeep Metric Learningを使用
最終層でSoftmaxし、2つの画像が違う確率の値をそのまま距離の値として利用
40W. Chen, X. Chen, J. Zhang, and K. Huang. "Beyond triplet loss: a deep quadruplet network for person re-identification." In CVPR, 2017.
Adapted Triplet Loss(ECCV2018)
Triplet Lossの性能は、学習時のTripletの選択方法に強く依存
• 学習データを選ぶ必要
• データの偏りによるバイアスが生じる危険性
Domain Adaptationの一種
• ソースドメインの分布をターゲットドメインに近づけながら学習
41
B. Yu, T. Liu, M. Gong, C. Ding, and D. Tao. "Correcting the Triplet Selection Bias for Triplet Loss." In ECCV, 2018.
Adapted Triplet Loss(ECCV2018)
Xは入力データ、Yはラベル
を、Source DomainとTarget Domainそれぞれの確率密度関数
を、Embedding空間への変換とすると下記の状態が理想的
42B. Yu, T. Liu, M. Gong, C. Ding, and D. Tao. "Correcting the Triplet Selection Bias for Triplet Loss." In ECCV, 2018.
Adapted Triplet Loss(ECCV2018)
Triplet Lossを次のように変更
Embedding空間での各クラス毎のベクトルの期待値(平均値)の差が小さくなるような
Lossを追加
43
Adapted Triplet Loss(ECCV2018)
クラス毎のベクトル期待値(平均値)の差が小さくなるLoss
Embegging空間にクラスA、Bが配置されている例
44
References
• https://qiita.com/yu4u/items/078054dfb5592cbb80cc
• S. J. Rao, Y. Wang, G. W. Cottrell. “A deep Siamese neural network learns the
human-perceived similarity structure of facial expressions without explicit
categories.” in CogSci, 2016.
• J. Wang, Y. Song, T. Leung, C. Rosenberg, J. Wang, J. Philbin, B. Chen, and Y.
Wu. "Learning Fine-grained Image Similarity with Deep Ranking." In CVPR, 2014.
• E. Hoffer, and N. Ailon. "DEEP METRIC LEARNING USING TRIPLET NETWORK."
In ICLR workshop, 2015.
• F. Schroff, D. Kalenichenko, and J. Philbin. "Facenet: A Unified Embedding for
Face Recognition and Clustering." In CVPR, 2015.
• D. Cheng, Y. Gong, S. Zhou, J. Wang, and N. Zheng. "Person Re-Identification
by Multi-Channel Parts-Based CNN with Improved Triplet Loss Function." In
CVPR, 2016.
45
References
• F. Wang, W. Zuo, L. Lin, D. Zhang, and L. Zhang. "Joint Learning of Single-
image and Cross-image Representations for Person Re-identification." In CVPR,
2016.
• W. Chen, X. Chen, J. Zhang, and K. Huang. "Beyond triplet loss: a deep
quadruplet network for person re-identification." In CVPR, 2017.
• B. Yu, T. Liu, M. Gong, C. Ding, and D. Tao. "Correcting the Triplet Selection
Bias for Triplet Loss." In ECCV, 2018.
46