14
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

[Pytorch] QATM:Quality-Aware Template Matching For Deep Learningを実装し直してみた

Last updated at Posted at 2019-04-05

論文の概要

QATMは、2019年3月18日発表の、新しいDeep learningを用いたtemplate matchingの手法です。
従来の方法では難しかった、サンプル画像N枚とテンプレート画像M枚でのマッチングを可能にし、さらに微分可能な操作のみで記述することで学習することも可能になっています。
もともとtensorflow+kerasのコードは実装されていたのですが、それが若干中途半端なこともあって、使い慣れたPytorchで実装し直してみました。
ただし、今回の実装では空間計算量の点からサンプル画像1枚とテンプレート画像M枚での実装のみにとどめています。

論文紹介

論文arxiv: https://arxiv.org/abs/1903.07254
元のコード (tensorflow+keras): https://github.com/cplusx/QATM
今回実装したコード(pytorch): https://github.com/kamata1729/QATM_pytorch

問題設定

ざっくりとした動作原理としては、まずサンプル画像のある領域$s$とテンプレート画像$t$の間に、「どれだけマッチしてるか」の指標$Quality(s,t)$が定義されているとして、

\begin{equation}
  R^* = argmax_R \left\{ \sum_{r\in R}max\left\{Quality(r,t)\mid t \in \bf{T}\right\} \right\}
\end{equation}

となる$R^*$を求めていく。ここで$\bf{T}$は複数のテンプレート画像である。

Quality関数の決定

$s$をサンプル画像中の、テンプレート$t$と同じ大きさのパッチとする。
$f_s$, $f_t$を、$s$, $t$を学習済みモデルに入れて取り出した特徴量マップとし、$\rho(\cdot)$をこの二つの間の距離を測る関数とする(ここではコサイン類似度を使う)
あるパッチ$s$に対して、テンプレート$t$がマッチする確率の尤度関数を以下のように定義する。

\begin{equation}
  L(t\mid s) = \frac{\exp\{\alpha\cdot\rho(f_t, f_s)\}}{\sum_{t'\in \bf{T}} \exp\{\alpha\cdot\rho(f_{t'}, f_s)\}}
\end{equation}

$\alpha$は正の定数である。
これは$\alpha$を学習するパラメータとした、softmax層として考えることもできる。
これを用いて、

\begin{equation}
  QATM(s,t) = L(t\mid s)\cdot L(s\mid t)
\end{equation}

として、この$QATM(s,t)$を$Quality(s,t)$として用いる。

実装

動作原理としては実際これくらいなので、あとは論文中で実装してあったコード(https://github.com/cplusx/QATM )をみながら何をやっているか追っていけばよいです。
これをPytorchで実装し直す際に、もともとコード自体はサンプル画像1枚に対しテンプレート画像1枚の場合しか対応していなかったものを、サンプル画像1枚に対しテンプレート画像複数枚でのマッチングを可能にしました。
また、元々の実装では、テンプレート画像がサンプル画像内にない場合が考慮(できると論文に書いてあるのに)されていなかったため、これも考慮に入れて、確率値が低いものをはじくようにしました。

今回実装したコード(pytorch): https://github.com/kamata1729/QATM_pytorch

実行結果

用意しておいたデモ画像で実行してみます
template1_1.pngからtemplate1_4.pngはサンプル画像に存在しているものの、template1_dummy.pngは存在していません。
この状況でも、正しく検出できていることがわかります

python qatm.py -s sample/sample1.jpg -t template --cuda
template1_1.png template1_2.png template1_3.png template1_4.png template1_dummy.png
image.png image.png

image.png

14
15
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?