主に論文中のアーキテクチャおよび学習に関して、自分の理解をまとめたものです
アーキテクチャ
入力
- ある期間に同じ地点を写した画像 (128x128px, 10m解像度) の系列。画像はソース (衛星) ごとに複数個 (N_i) あってよく、ソースも複数あってよい (M_E)。各画像のチャネル数 (C_i) はソースごとに異なりうる
- 入力画像ごとのタイムスタンプ (t_j)
- 出力する埋め込みベクトルが表現する期間 [t_s, t_e)
出力
- 入力された地点と期間 [t_s, t_e) に対応する、サイズ 128x128x64 のテンソル (μ)
入力データの前処理
- すべての衛星画像はUTM座標系に変換され、解像度は10mに統一される
- 各画像を平均0, 分散1に標準化する。光学画像では反射率の分布を均一にするため対数変換も適用する
用語
- 動画: 入力画像の系列
- フレーム: 動画中の各画像
- support period: 動画に含まれるフレームの期間
- L: 画像の幅 ( = 128 )
- 図中のT: 入力系列長 (画像の数。図中では縦)
SOURCES → IN FEATURES
ソースごとに固有のネットワークで、どのフレームも共通のチャネル数を持つような潜在表現に変換する。
STP Blocks
各STP Blockは、Precision (=P), Time (=T), Space (=S)のネットワークからなる。これらP, T, Sは各ブロックで並列に動く。
Pは3x3のCNNベースで、各画像ごとに適用。Tはtime-axial self-attentionベースで、各フレームにはt_jが正弦波タイムコードで条件付けられ、全フレームにまたがって適用。SはViTライクなself-attentionベースで、各画像ごとに適用。
Pに入力されるテンソル(の画像に相当する部分)の幅はL/2 、TはL/8、SはL/16。P, T, Sの出力は、どれも次のSTPブロックのP, T, Sの入力になる。その際の幅のアップスケール、ダウンスケールには、学習可能なラプラシアンピラミッドを用いる。
OUT FEATURES → EMBEDDING
t_s, t_eは正弦波タイムコードに変換されたうえで、ひとつのクエリベクトルに変換される。そのクエリベクトルをクエリとしたtime-axial attentionをSTP Blocksから出力されたテンソルに対して適用して、地点ごとの時間的要約 (temporal summary) を得る。この要約は(L/2から)Lに学習可能なカーネルでアップサンプルされる。この要約を各ピクセルにつき64次元の単位ベクトルに変換したものをμとする。(推定ではこのμが出力となる)
学習
学習では、平均方向をμ, 集中度は固定値としたvon Mises-Fisher (vMF) 分布から要約ベクトルをサンプルする、変分ボトルネックを用いる。
最小化したい損失関数は4つの要素からなる:
- Reconstruction objective
- Batch uniformity objective
- Consistency objective
- Text-contrastive objective
Reconstruction objective
動画からは抜いておいたフレームを再現することを目的とする。簡単なデコーダを用意して、要約ベクトル, メタデータ, タイムコードを簡単なデコーダに入力してフレームを復元したときの、正しいフレームと復元されたフレームとの間の損失。ソースによって、用いる損失関数は異なりうる。a = 1.0。
Batch uniformity objective
要約ベクトルが単位球面に一様に分布するようにすることを目的とする。バッチの中で、ある要約ベクトルと、別の要約ベクトルとの間の内積 (の平均) を損失とする。b = 0.05。
Consistency objective
動画からフレームやソースを欠損させた入力から得られた要約ベクトル (生徒) と、欠損がない入力から得られた要約ベクトル (教師) との間の損失。c = 0.02。
Text-contrastive objective
各動画にはテキストが紐づけられている。凍結した言語モデルから作ったテキスト埋め込みと、動画から得られた要約ベクトルとの、CLIPの対比学習における損失。d = 0.001。

