LoginSignup
8
5

More than 1 year has passed since last update.

Affinity matrixの個人的ノート (具体例で理解するピクセルを対応付ける行列計算)

Last updated at Posted at 2020-04-11

はじめに

Deep論文を読んでたら、式だけだと混乱してくるところがあります。個人的なメモとこれから投稿する論文解説記事の補足として書きます。

時間$T$におけるフレーム$f_1$内のある物体が,時刻$T+1$のフレーム$f_{2}$では別の場所に移動しているとする。このとき$f_1$の各pixelと,$f_2$の各ピクセルの対応関係を考えたいとする。

このとき、論文でよく出てくる式として以下のような式がある。
$y_{j}=\sum_{i} A_{i j} c_{i}$ (1)

ただし、$y_{j}$は$f_{2}$の$j$番目のピクセル値、$c_{i}$は$f_{1}$の$i$番目のピクセル値, $A_{i,j}$は変換行列(affinity matrixともいう)である。

文字だけを読むとややこしくなってくるのでこれを具体的にイメージするというのがこの記事の目的

1 数式の意味と具体例(画素値の対応)

ここでは簡単に画像のサイズが2×2行列だとして考えてみる。また中に入っている画素値は、イメージしやすくするため数値ではなく記号的にB(青),R(赤),G(緑),P(紫)を表す文字が入っているとする。
例えば$f1,f2$の画像は図1に示すような画像、もしくは行列になっている。
図1.png
図1

$y_{j}$,$c_{j}$はフレームのピクセル値(画素値)を表す。画素値を表すときは(グレースケール画像と仮定すると)2次元行列$y_{m,n}$で座標を指定することが多いが、(1)式ではそれらすべて1次元にReshapeして頭からiやjとindexを割り振ることになる。(図2参照)。
図2.png
図2

では$f1,f2$を対応づける変換行列$A_{i,j}$はどういう形をしているだろうか?
これは$f1$,$f2$がそれぞれ$4×1$行列ということを考えると,$4×4$の次のような行列になる。実際に(1)式がなりたっていることが確認できる。

なお,$A_{i,j}$は$f_{1}$の$i番目$のピクセルと$f_{2}$の$j$番目のピクセルの類似度とも解釈できます。

Deepではモデル出力を$A_{i,j}$にして,行方向にsoftmax関数をかけることで,ピクセル対応の確率予測を行うことがあります。

なお、$A_{i,j}$は互いの行列サイズが異なるときにも使用できる。その場合、$A_{i,j}$の行列サイズは($f_{1}$のピクセル数$N_{1}$)×($f_{2}$のピクセル数$N_{2}$)になります。

2 数式の意味と具体例(座標の対応)

これまでは画素値の変換の仕方を見てきたが、座標の対応の仕方も見ておきます。
$l_{j}^{12}=\sum_{i=1}^{N_{1}}A_{i j} l_{k}^{11}$ (2)

$l_{j}^{mn}$は$f_{m}$から$f_{n}$の$j$番目のピクセルに移動する$f_{m}$の座標です。文章だけだと混乱しますね。言っていることは難しくないので具体例で考えればすぐわかります。
図2.png
図2 再掲
$l_{1}^{12}$は$f_{2}$の1番目のピクセル(画素はR)に移動する$f_{1}$の座標です。
$f_{1}$でRが入っている座標は(1,2)ですよね。ということで$l_{1}^{12}=(1,2)$となります。イメージできましたか?
j番目のピクセルと言われたときはReshape後の,座標と言われたときはReshape前で考えなきゃいけないのが混乱pointです。

では数式で理解していきます。
まず式内の$l_{k}^{11}$から考えます。文章で言えば$l_{k}^{11}$は$f_{1}$から$f_{1}$の$j$番目のピクセルに移動する$f_{1}$の座標です。
$f_{1}$と$f_{1}$は同じものなのですから、$f_{1}$の$(x,y)=(1,1)$座標に対応するのは$(1,1)$座標に決まっています。ここで$(1,1)$座標は先ほどの例をみると、1番目のピクセル、$(1,2)$座標は2番目のピクセルというように対応していましたね。よって$l_{1}^{11}=(1,1)$,$l_{2}^{11}=(1,2)$,$l_{3}^{11}=(2,1)$,$l_{4}^{11}=(2,2)$となります。

では、先ほどの$A_{i,j}$を用いて$l_{j}^{12}$を計算するとどうなるでしょう?なお、$x$座標、$y$座標は別々に計算します。


x,y座標の結果をまとめると
$l_{1}^{12}=(1,2)$,$l_{2}^{12}=(1,1)$,$l_{3}^{12}=(2,2)$,$l_{4}^{12}=(2,1)$という結果が得られました。

これを用いて$f_{1},f_{2}$で対応する座標点の変換ができるようになります。

3 Color energyの保存

ここで示したピクセル変換はColor energy(グラム行列)が保存されることがわかります。要するに$f_{1} f_{1}^{\top}=f_{2} f_{2}^{\top}$が成立しています。
実際に
図6.png

となり、一致することが確かめられます.

8
5
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
8
5