LoginSignup
5
8

More than 3 years have passed since last update.

論文まとめ:A Simple Baseline for Multi-Object Tracking

Posted at

はじめに

以下の論文
[1] Y. Zhang, et. al."A Simple Baseline for Multi-Object Tracking"
のまとめ

Journal等は不明。モデルの略称:FairMOT。

Multi-object trackingの分野ではいい結果を出してる。
https://paperswithcode.com/task/multi-object-tracking

既にざっくりしたまとめ記事が存在する。
https://qiita.com/takoroy/items/db1247727805af1ee92a
ので、ここではモデルのアーキテクチャやロス等のロジックの詳細に焦点をあてる。

ネットワークのアーキテクチャ

1. 全体像

アーキテクチャの全体像は、こんな感じで

FairMOT_img00_1.png

encodeしてdecodeする感じ。decoder部分が若干小さいことからわかるように、出力される画像の解像度は元の Image の 1/4。

また 1-shot 系(Detectionとその領域における特徴量をニューラルネットから同時に出力する)なので、右の出力は Detection と Re-ID。

2. Encoder-Decoderの詳細

encoder-decoderネットワークの詳細は以下。

FairMOT_img00_2.png

まず、backbornはresnet-34。全体構造としてはCenterNet[2]のDLA-34。

図中のUNet構造における青いブロックを赤い矢印に沿ってたどっていくと、down sampling しながら畳み込まれている。

これに対して青い矢印は同じ解像度での畳み込み経路。

黄色はupsamplingの経路だが、ここではdeformable comvolutionを使っているのだそう。CenterNetを踏襲しているということなので、deformable conv -> deconvolution の順と思われる。

(参考)CenterNetのアーキテクチャ
centernet_img00.png
[2]Figure6より

(d)がDLA-34。表現の仕方が違うものの、よくよく見比べると構造は同じ。

さらに、Uの中身が密に詰まったU-Net++と比べた場合、U内の右半分が無く、short-cutも無く簡素な形。

(参考)U-Net++のアーキテクチャ
nested_unet_img00.png
[3] Figure1より

3.出力のDetection Branch

2つあるBranchのうちのDetection BranchもCenterNetを踏襲してこんな感じ。

FairMOT_img00_3.png

細かくは3種類の出力、1)boxの中心を表すheatmap、2)boxのサイズを表す値、3)中心位置のoffsetを表す値、からなる。

3.1 boxの中心を表すheatmap

骨格推定のごとくheatmapで物体の中心位置を推定する。

入力画像のbounding boxを ${\bf{b}}^i = (x_1^i, y_1^i,x_2^i, y_2^i)$ として、入力画像における物体の中心は

\begin{eqnarray*}
c^i_x &=& \frac{x^i_1 + x_2^i}{2} \\
c^i_y &=& \frac{y^i_1 + y_2^i}{2} \\
\end{eqnarray*}

であり、1/4に縮小された出力における位置は

(\tilde{c}_x^i, \tilde{c}_y^i) = (\lfloor \frac{c^i_x}{4} \rfloor , \lfloor \frac{c^i_y}{4} \rfloor)

である。これからガウシアンを用いてheatmap($M_{xy}$)を作成する。

M_{xy} = \Sigma_{i=1}^N \exp^{-\frac{(x-\tilde{c}_x^i)^2 + (y-\tilde{c}_y^i)^2}{2 \sigma_c^2}}

Nは物体の数。

3.2 boxのサイズを表す値

trackingには使わないが、object detectionの評価に用いる。

アノテーションの bounding box情報 ${\bf{b}}^i = (x_1^i, y_1^i,x_2^i, y_2^i)$ から幅と高さを計算してtargetとする。

{\bf{s}}^i = (x^i_2 - x^i_1, y_2^i - y_1^i)

3.3 boxの中心に対するオフセットを表す値

heatmapだけでもそこそこの精度で中心位置が推定できるが、いかんせん出力が元画像の1/4に縮小されてるので、元画像のサイズでいうと数ピクセルずれる。本手法のしくみだと中心位置の特徴量を抜いてくるので、ここがズレると隣の人の特徴量となってしまう可能性がある。よってより正確に中心位置を推定するため、このチャンネルでオフセットを推定する。

このオフセットは縮小分のズレを補正するためのもので、super pixel的なオフセットではなさそう。

出力画像におけるオフセットは

{\bf{o}}^i = (\frac{c^i_x}{4}, \frac{c^i_y}{4}) - (\lfloor \frac{c^i_x}{4} \rfloor , \lfloor \frac{c^i_y}{4} \rfloor)

4. 出力のRe-ID branch

マッチングに使う特徴量を出力する。

FairMOT_img00_4.png

Detection Branchで求めた中心座標 $(\tilde{c}_x^i, \tilde{c}_y^i)$ の位置の特徴量( ${\bf{E}}_{x^i,y^i}$ )を抜く。

なので、こんな感じか。

FairMOT_img12.png

注意点としては、$\bf E$ は物体のインスタンス総数(つまり物体のIDの総数)だけ次元があるone-hotベクトルであること。例えば、ある人はvideo中常に $(0,0,0,1,0,0,0,....,0)$ であり、またある人は $(0,0,0,0,...,0,1,0)$ である。

Loss

上記4種類の出力それぞれに応じてLossがある

heatmapのLoss

focal lossを用いる。heatmapの推定値を $\hat{M}$ として

L_{heatmap} = -\frac{1}{N} \sum_{xy}
  \begin{cases}
    (1- \hat{M}_{xy})^\alpha \log(\hat{M}_{xy}), & if \ M_{xy} = 1; \\
    (1- \hat{M}_{xy})^\beta (\hat{M}_{xy})^\alpha \log(1- \hat{M}_{xy}) & otherwise,
  \end{cases}

boxサイズのlossとオフセットのloss

boxサイズの推論値を $\hat{s}^i$ 、オフセットの推論値を $\hat{o}^i$ として、targetとL1をとる。

L_{box} = \sum^N_{i=1} \| {\bf o}^i - \hat{\bf o}^i \|_1 + \| {\bf s}^i - \hat{\bf s}^i \|_1

Re-IDのloss

出力がone-hotベクトルなので、ソフトマックスで計算する。

L_{identity} = - \sum^N_{i=1} \sum^K_{k=1} {\bf L}^i (k) \log ({\bf p}(k))

その他気になる点

1 trackingのアルゴリズム

本論文では通常のKalman Filterを用いている。

また物体が急激に動く場合を想定して、fram間で対応する物体が遠い場合にはcorresponding costを無限に設定する -> ここよくわからん。第1段階ではkalman filterで予測した位置や特徴量を使い、それでマッチングしないものに対して第2段階で特徴量だけ使うって意味??

Reference

[2] X. Zhou, et. al."Objects as Points"

[3] Z. Zhou, et. al."UNet++: A Nested U-Net Architecture for Medical Image Segmentation"

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