【論文読解】A Simple Baseline for Multi-Object Tracking

# 概要
複数物体のトラッキング（Multiple Object Tracking: MOT）の勉強のために、なにか良い論文はないかと思って探していたら見つけた論文です。
タイトルが示すとおりシンプルなベースラインを提供します、という論文なのですが、さまざまなデータセットでSotA(2020年4月時点)を達成していることも示されています。

MOTでは、物体の検出と、検出した物体が動画フレーム間でどのように対応しているのかを解決するRe-IDというタスクの2つを行う必要がありますが、大きく1-Shotと2-Stepという2つの流儀があります。

2-StepのMOT手法では、検出とRe-IDを別々のネットワークで行います。それぞれのタスクで最適な手法を洗練させることができる一方で、全体としての処理時間がかかってしまうという欠点があります。

一方で、1-ShotのMOT手法では、検出とRe-IDで多くのネットワークを共有しており、全体の処理時間を短縮できます。

本論文では、既存の1-Shot手法の問題点を示し、これを克服するためのシンプルなモデルを提案しています。
既存の1-Shot手法で提案されていたであろう細かい改善手法はバッサリ省略し、あくまでもシンプルなベースラインとして提案されています。

なお、本手法は[実装](https://github.com/ifzhang/FairMOT)もすでに公開されており、READMEにしたがって準備すれば、割と簡単に動かすことができます。
我が家のGTX 1080Tiでは、デモ動画に対して16fps程度で動いてくれました。

![01425.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4010/1cac4e67-2ab7-7ce0-0986-ed38ca85a9ff.jpeg)

# 書誌情報

- https://arxiv.org/abs/2004.01888
- https://github.com/ifzhang/FairMOT

# 1-Shot MOT手法の問題点

本論文では、既存の1-Shot MOT手法の問題点を以下のように3点にまとめています。

- アンカーベースの手法はRe-IDに向いていない
- 物体スケールの変化に弱い
- Re-IDに使用する特徴量の次元数が大きすぎる

以下、それぞれ説明していきます。

## アンカーベースの手法はRe-IDに向いていない
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4010/361a350a-2135-e7a7-085d-25998ade6d6c.png)

MOTの物体検出部分にはアンカーベースの手法がよく使用されますが、これについて2つの問題点を指摘しています。

まず、1つの物体に複数の特徴マップのセルに設定されているアンカーが対応付可能であるということが挙げられています。たとえば、上図の左の画像では、青いユニフォームの選手に異なるセル（★）の2つのアンカーが対応付け可能です。Re-IDで各物体に割り当てられる特徴量はこれらのセルから得られるので、特徴マップ上の異なるセルが似たような特徴量を持っていなければいけない、という問題が生じます。

また、物体検出では精度と速度のバランスをとるために、アンカーは最低でも8倍程度ダウンサンプルされた解像度の特徴マップに対して定義されます。これは、Re-IDに使用するには粗すぎる解像度です。

こういった問題点を解決するために、本手法ではアンカーフリーな物体検出手法を使用しています。これによって、Re-IDに使用する検出候補の特徴は、明確に1つのセルに対応します。また、特徴マップが高解像度になるようにしています。上図の左と右を比較すると、特徴マップが高解像度であること、各物体のRe-ID特徴が1つのセルに対応付けられることが見て取れます。

## 物体スケールの変化に弱い
1-ShotのMOT手法で生じやすい問題として、物体のスケールによってRe-IDが失敗する（identity switches）ということを示しています。たとえば、手前に歩いてくる人が大きく見える事によって、それまでRe-IDに使用していた特徴量と今の特徴量が大きく異なってしまうということによって生じます。
2-Stepの手法では、各フレームで検出した結果を一律の解像度に揃えたうえでRe-IDの特徴抽出を行うので、この問題は生じませんが、1-Shotでは大きな問題になります。

そこで、本手法では、物体のスケールが変化したとしてもRe-IDに使用する特徴ができるだけおなじになるように、複数の解像度の特徴マップを適切に集約するモデルにしています。

## Re-IDに使用する特徴量の次元数が大きすぎる
2-Stepの手法ではRe-ID用の大規模なデータセットを使うことができるため、Re-IDに使用する特徴量を高次元にしても問題がありませんが、1-Shotの手法では教師データが少ないので、あまりRe-IDに使用する特徴量次元数を大きくしてしまうとオーバーフィットしてしまうそうです。

本手法では、Re-IDに使用する特徴量の次元数を減らしています。

# ネットワーク構造と訓練処理
本手法では、以下のようなネットワーク構造を提案しています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4010/e17a934f-c179-4d08-3bda-9eb189d03025.png)

高解像度の特徴マップを作成するためにEncoder-Decoder構造を持ったネットワークで特徴抽出を行い、DetectionブランチとRe-IDブランチに流し込む、という構造になっています。

## Encoder-decoder network
ベースとしてResNet34を用いて、処理の段階で得られる複数の特徴マップを組み合わせ、大域的な特徴と局所的な特徴を組み合わせた特徴マップを得ます。

図中のUpsample部分では、Deformable Convolutionを用いており、空間的に散らばった特徴を効率的に集約しています。

入力画像は1088x608で、得られる特徴マップは272x152となります。

## Detection Branch

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4010/fa3295da-31eb-9e56-a9f3-fae27f56a01c.png)

Detection Branchは、3つのヘッドを持っています。

- heatmap: 矩形領域の中心点を表すヒートマップを出力する
- box size: 矩形領域の高さと幅を出力する
- center offset: 矩形領域の中心点のサブピクセルレベルでの補正値を出力する

heatmapに対しては、物体領域の中心に対応するセルが1、その他が0というマップにガウスぼかしをかける感じでターゲットを作っています。また、損失としてFocalLossを適用しています。box sizeとcenter offsetに対しては、L1損失が適用されています。

## Re-ID Branch

Re-IDは、クラス分類問題として取り扱われています。つまり、データセット中に出現する人物一人ひとりが1クラスに対応しています。

ちなみに、本手法では一般的なMOTの手法と同様に、複数のMOT用データセットを組み合わせて使っています。出現する人物ごとに1クラス割り当てられるので、全体のクラス数はまあまあ大きく、14,455にも及ぶようです。

# 推論時の処理

推論処理は、ごく普通のMOT手法で行われることが行われているようです。流れとしては、各フレームに対して物体領域を検出しつつ、前フレームでの検出結果と紐付けるRe-ID処理を行います。

検出処理はheatmapヘッドの出力に対してNMSを適用し、得られたbox size, center offsetヘッドの出力を組み合わせることで行います。

Re-ID処理は、前フレームの検出結果と今のフレームの検出結果のIoUとRe-ID特徴の距離とを組み合わせて対応のコストを算出します。また、カルマンフィルターによって検出位置を推定し、そこから大きく離れている対応のコストは無限大にします。得られたコスト行列をもとに、ハンガリアンアルゴリズムで対応付けを行います。なお、Re-ID特徴は、各フレームで更新するそうです。

# まとめ

簡単にですが、シンプルなMOT手法を提案している論文"A Simple Baseline for Multi-Object Tracking"を紹介しました。実験部分は省略しましたが、Re-IDの失敗がアンカーベースの手法を使ったケースから大きく減らせていることが確認できていたり、Re-ID特徴の次元数は512のような大きな値より128, 256あたりが適切であったということが示されています。

訓練は2枚のRTX 2080で30時間と、割と短い訓練で済み、ネットワークの構造も比較的単純なので、公式実装を参考に再実装するのも楽しそうだなと思いました。