stMind

about Tech, Computer vision and Machine learning

論文紹介 : Composing Text and Image for Image Retrieval

CVPR2019で発表された、元画像と元画像をターゲット画像に変換するためのクエリ文を組み合わせた画像検索方式。以下、論文について簡単にまとめてみます。

目的

f:id:satojkovic:20191104162223p:plain

これは図を見ると理解しやすいと思います。エッフェル塔の画像と「人が写ってない、夜間」というクエリ文を組み合わせて検索すると、塔がズームされた夜のエッフェル塔画像が結果として得られるようにする。

こういった検索をしたいケースというのは、結構あるように思います。新しいコートを買おうとして検索、画像検索結果を眺めていると良さそうな物を見つける。色は良いけど丈がもう少し短ければなぁと思って「丈短め」と検索、みたいなことが出来ると望んだ結果を得ることが容易になりそうです。

提案方式

f:id:satojkovic:20191104183546p:plain

これも図を見て全体像を把握するとわかりやすいと思います。まず最初に、ResNet-17を用いてクエリ画像(参照画像)の特徴マップ \phi _ {x} \in \mathbb{R} ^ {W \times H \times C}を得ます。また、クエリ文もLSTMを用いて特徴ベクトル \phi _ {t} \in \mathbb{R} ^ {d}に変換します。そして、この二つを統合した特徴を用いてターゲット画像を検索するのですが、ここでTIRGという新しい統合方式を提案しています。

TIRG(Text Image Residual Gating)

特徴ベクトルの統合は、以下のように計算されます。


\begin{eqnarray}
\phi _ {xt} ^ {rg} = w _ {g} f _ {gate} ( \phi _ {x}, \phi _ {t} ) + w _ {r} f _ {res} ( \phi _ {x}, \phi _ {t} )
\end{eqnarray}

 f _ {gate} f _ {res}は図中のgated featureとresidual featureに対応していて、 w _ {g} w _ {r}は学習により得られるパラメータです。

この数式の直感的な理解には、ResNetのResidual Blockを考えると良いようです。求めたいクエリ画像に対する変換結果(ResBlockで言う H (x)に相当)は、クエリ画像に基づいた特徴マップ f _ {gate}(Identity mappingの xに相当)をReferenceとして、クエリ文に基づいた特徴マップ f _ {res} (残差の F(x) に相当)で補正することで得られるというのが提案方式のアイデアです。

また、 f _ {gate} f _ {res}は次のように計算されます。

 
\begin{aligned}
f _ {gate} ( \phi _ {x}, \phi _ {t} ) &= \sigma (W _ {g2} \ast RELU (W _ {g1} \ast [ \phi _ {x}, \phi _ {t} ]) ) \odot \phi _ {x} \\
f _ {res} ( \phi _ {x}, \phi _ {t} ) &= W _ {r2} \ast RELU ( W _ {r1} \ast ( [ \phi _ {x}, \phi _ {t} ] ) 
\end{aligned}

 \sigmaシグモイド関数 \odotはelement wiseの積、 \astは2d convolutionとbatch normalizationを表し、 W3x3のconv filterです。 f _ {gate}の方は、クエリ画像の特徴マップを変換するのではなく、シグモイド関数のゲートで元画像の情報をどの程度保持するかを制御するようになっています(0に近いと元画像の特徴マップをほとんど残さないが、1だとそのまま)。

学習

TIRGを使って求めた特徴ベクトルとターゲット画像の特徴ベクトルを近づけ、非類似画像の特徴ベクトルから遠ざけるように学習する。学習に用いるのは、Softmax Cross-Entropy Loss。


\begin{eqnarray}
L = \frac{-1}{MB} \sum _ {i=1} ^ {B} \sum _ {m=1} ^ {M} log \{ \frac{exp \{ \kappa (\psi _ {i}, \phi _ {i} ^ {+})  \} }{ \sum _ { \phi _ {j} \in \mathcal{N} _ {i} ^ {m} } exp \{ \kappa (\psi _ {i}, \phi _ {j} ) \} }  \}
\end{eqnarray}

 Bはmini batchのサイズで、 Mは少しわかりにくいですが、mini batchの中で1つのpositiveなサンプル \phi _ {i} ^ {+} K-1個のnegativeなサンプル \phi _ {1} ^ {-}, \cdots , \phi _ {K-1} ^ {-}を持つ集合 \mathcal{N} _ {i}を作成するプロセスの繰り返し回数となっています。あと、類似度カーネル \kappaですが、内積とnegative L2ノルムを使ったそうです。

Experiments

3つのデータセットを使った評価が行われています。メインの評価指標はrecall at rank k(R@K)。R@Kは、こちらのPDFを見るとわかりやすいです。

https://ils.unc.edu/courses/2013_spring/inls509_001/lectures/10-EvaluationMetrics.pdf

数値比較の詳細は論文を参照。

Fashion200k

画像につけられたdescription文が、1語違いになっているペアをクエリ画像とターゲット画像とし、異なる1語をクエリ文とする。

method R@1 R@10 R@50
TIRG 14.1 42.5 63.8

既存手法と比べて、R@1で8pt近く向上。TIRG以外の統合方式に対して比較した場合でもR@1、R@10、R@50のいずれにおいてもBestな結果となった。結果画像の一部は以下の通り。

f:id:satojkovic:20191117195031p:plain

MIT-States

60k枚の画像と、"red tomato"や"new camera"のような物体に対する名詞と形容詞のラベルがついたデータセット。Image retrievalのタスクにおける評価では、同じ物体ラベルで異なる形容詞を持つペアをクエリ画像とターゲット画像とし、ターゲット画像の形容詞をクエリ文として評価。

method R@1 R@10 R@50
TIRG 12.2 31.9 43.1

R@1ではBestではなかったが、R@10とR@50ではTIRG以外の統合方式の中でBestな値となった。

f:id:satojkovic:20191117200710p:plain

CSS

この論文で新しく導入されたデータセット。既存データセットにはない、複雑な修正クエリ文を含む。ちなみに、データセットはコードと併せて公開する予定だそう。

method 3D to 3D 2D to 3D
TIRG 73.7 46.6

f:id:satojkovic:20191117202103p:plain

最後に

実際に検索システムに導入されると、ユーザーが本当に検索したい情報に辿り着く可能性が高まる、面白いアイデアだと思いました。クエリ画像とクエリ文からターゲット画像を検索するというものですが、例えば洋服を探しているときは、最初に「グレーのコート」などと検索して、その結果を見ながら、修正クエリ文を入れるというステップになると思うので、一連の検索のコンテキストや、「ボタンは黒」みたいな空間的な修正対象の位置なども使えるとより良い結果が得られるかもしれません。(空間的な情報の有無は論文内でもAblation studyで論じられてます)