Learning Fine-grained Image Similarity with Deep Ranking
Deep Metric Learning系の論文を読んでいこうかなと思います。
Learning Fine-grained Image Similarity with Deep Ranking [1]
この論文は有名なTriplet Lossが提案された論文です。CVPR2014で発表されました。
時の流れを感じる(´;ω;`)
0. ざっくり説明
全部読むの面倒くさい人用
1. 導入
embeddingした画像同士の距離(非類似度)は以下のように定義できる。
この距離を上手く学習したい。
: embedding spaceのユークリッド距離
: embedding function
: 画像
2. 主な考え
[2] より引用
Negative(Anchorと別カテゴリの画像)よりもPositive(Anchorと同じカテゴリ)よりもξ(マージン分)に遠くにいてねという考え
注: この論文ではAnchor, Positive, Nagetiveという表現ではなくQuery, Positive, Negativeという表現をしています。
具体的例
[1] より引用
3. 定式化
Negative(Anchorと別カテゴリの画像)よりもPositive(Anchorと同じカテゴリ)よりもξ(マージン分)に遠くにいてね
これを定式化
: pairwise relevance score (画像ペアの関連度合いを示す関数)
: クエリ(画像)に対して、距離が小さい(似ていてほしい画像)と距離が遠い(似てほしくない画像)の組み合わせ
ここでトリプレットという考え出てきたんですね。
各トリプレットに対して、損失は以下のように定義できる。
: との距離を調整する正則化パラメータ
: と同じ
: 過学習を防ぐ正則化パラメータ(論文ではを採用)
: 学習されるパラメータ
[1] より引用
4. Network Architecture
式(4)で定義した損失関数を以下のアーキテクチャで学習
[1] より引用
5. OptimizationとSamplinng
5.1 Optimization
- ドロップアウト率: 0.6
- Random pixel shift
5.2 Triplet Sampling
基本的な考え: 検索結果上位に興味があるので、 対象となる画像の近くだけ上手く学習できていればいい
: 画像が属するカテゴリ
: 画像と同カテゴリの画像とのpairwise relevance scoreの総和
5.2.1 画像の選び方
- の割合によってサンプリングされる。
- の値が大きければ大きいほど、画像がクエリとしてサンプリングされやすくなる。
5.2.2 Positiveの選び方
に対して高いpairwise relevance scoreを持つ画像をPositiveとしてサンプリングしたい
: 閾値
: the normalization constant, と同じ
5.2.3 Nagetiveの選び方
2種類ある。
1つ目: 画像とは異なるカテゴリから選ぶ方法 (Out of class negative sample)
別カテゴリに属する画像から一様にサンプリングされる。
2つ目: 画像とは同じカテゴリから選ぶ方法(In-class negative samples)
画像と同じカテゴリだが、画像とのpairwise relevance scoreが低い画像
トリプレットが満たすべき条件
全てのトリプレットは式(6)を満たすようにする。
どうやっているか
流れとしては画像選んで、positiveを選び、negativeを選ぶ。
Positiveサンプル
学習データを全てメモリにのせて計算することは不可能なのでBuffersを使う。
- 各Bufferは一定の容量を待つ(下の図だと画像6枚分)。同じカテゴリの画像を保持する。
- Bufferに空きがあるなら画像をBufferに入れる。
- Bufferが埋まっているならBuffer内の最小のの値を守る画像と画像を入れ替える。
: 画像をBufferに入れるかどうかを決めるスコア。が大きければ大きい値を持つように設計されている。
: 画像と同カテゴリの画像とのpairwise relevance scoreの総和
: からサンプリングされた値
Negativeサンプル 画像とは異なるカテゴリから選ぶ方法では 他のBufferから一様にサンプリング。
画像とは同じカテゴリから選ぶ方法
式(6)を満たすやつをサンプリングする。
どっちのNegativeサンプリングを行うかはパラメータを与えて制御する。
[1] より引用
6. 実験
6.1. データ
ImageNet ILSVRC-2012データセット
ConvNetのpre-trainに使用
- 1000カテゴリ
- 各カテゴリ約1000枚
- training images 約120万枚
- validation images 5万枚
Relevance training data
筆者が作ったデータセット。
fine-tuningに使用。
- Google画像検索から10万件の検索クエリより作成
- 各クエリから上位140件の画像結果を取得
- 画像数は約1400万枚
- 同じ検索クエリからの画像に対してを計算
- 異なるクエリからの画像はとする
Triplet Evaluation Data
トリプレットデータセット。モデルの評価に使用。
- 1000のクエリ用意し、Google画像検索エンジンから各クエリの検索結果上位50件からトリプレット(Q、A、B)をサンプリング
- 人間の評価者を用いて、トリプレット(Q、A、B)を評価
- 人間の評価者は以下の4種類の評価を各トリプレットに与える
(1) 画像AとBの両方がクエリ画像Qに類似する
(2) 画像AとBの両方がクエリ画像Qに類似しない
(3) 画像AはBよりもQに類似する
(4) 画像BはAよりもQに類似する
- 各トリプレットは3人の評価者によって評価される
- 3人の評価者の評価が一致したトリプレットのみが最終的なデータセットとして採用
- (1)と(2)の評価を与えられたトリプレットは画像の類似度順序を反映していないため、今回のデータセットしては採用しない
- 約14,000個のトリプレットが用意された
6.2. 評価指標
similarity precision
score-at-top-K (K=30)
実験1: representationの比較
比較手法
Hand-crafted Features
- Wavelet
- Color (LAB histoghram)
- SIFT-like features
- SIFT-like Fisher vectors
- HOG
- SPMK Taxton features with max pooling
モデル
上の特徴量を全て使って以下のモデルを適用
- L1HashKCPA
- OASIS
実験結果
提案手法: Deep Ranking(画像とは異なるカテゴリから選ぶ方法の割合を20%)
- 学習させてない(Wavelet, Color, SIFT-like features, SIFT-like Fisher vectors, HOG, SPMK Taxton features with max pooling)やつの性能は微妙
- L1HashKCPAは1000次元という次元の割にはいい性能だが、DeepRankingには負ける
- OASISはRelevance training dataを情報を用いているが、DeepRankingには負ける。「特徴抽出」-「モデル学習」の二段階のアプローチよりも画像に対してランキングモデルを直接学習することがいい
Table 1. Similarity precision (Precision) and score-at-top-30 (Score-30) for different features.
[1] より引用
実験2: アーキテクチャーの比較
比較手法
- ConvNet
- Single-scale deep neural network for ranking
- Single-scale deep neural network for rankingの出力に対して、OASIS学習させたもの
- Single-scale deep neural network for rankingの出力とHand-crafted Featuresを組み合わせたもの
実験結果
- Deep Ranking (提案手法)が強い
Table 2. Similarity precision (Precision) and score at top 30 (Score-30) for different neural network architectures.
[1] より引用
実験3: サンプリングの比較
画像とは異なるカテゴリから選ぶ方法の割合変えたらどうなるの?
実験結果
- 一様サンプリングよりもいい
- Out of class negative sampleの割合を大きくするとscore-at-top30は下がる
- Out of class negative sampleの割合を20%を超えるとsimilarity precisionが上がる
Figure 6. The relationship between the performance of the proposed method and the fraction of out-of-class negative samples.
[1] より引用
実験4: Ranking Examples
実際Rankingは上手くいっているのか?
実験結果
Figure 7. Comparison of the ranking examples of ConvNet, Oasis Features and Deep Ranking. [1] より引用
References
[1] Wang, Jiang, et al. "Learning fine-grained image similarity with deep ranking." Proceedings of the IEEE conference on computer vision and pattern recognition. 2014.
[2] Schroff, Florian, Dmitry Kalenichenko, and James Philbin. "Facenet: A unified embedding for face recognition and clustering." Proceedings of the IEEE conference on computer vision and pattern recognition. 2015.