人物追跡ベンチマーク MOTChallenge の評価指標を徹底理解したい

:::note warn
 この記事は作成途中です。（定義は全て書きましたが追跡成功推移例が５つ中１つしか示せていません）LGTMが10以上集まるのであれば作成を再開するつもりです。
:::
# はじめに
人物追跡でよく耳にする MOT (Multi-object Tracking)。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269839/79c99fcb-1ee3-f8b8-0c09-89bd576f1ac5.png)

[MOT challenge](https://motchallenge.net/data/MOT20/)と調べるとデータセットは簡単に手に入りますが、[結果](https://motchallenge.net/results/MOT20/)の見方がよくわからない…。いかんせん初めて見る評価指標ばかりで何を重視して見ればいいのかわからない…。ということでこの記事では **MOT評価指標の説明** を例を用いながら解説します。

独自解釈も含まれるため、間違っている点等ございましたら指摘頂けると幸いです。
なお、MOT評価指標指標の実装は[こちら](https://github.com/cheind/py-motmetrics)のGitHubで簡単にできます。

## 早見表
[公式結果一覧](https://motchallenge.net/results/MOT20/)の一番右列「Hz」(処理速度）を除くと、精度を表す評価指標は19個存在します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269839/67dd1190-ff73-f2da-7fb3-6d98c8e0e2bd.png)
上表の右２列の○,△,×は以下に基づいて選定しました。

- 検知 
 - ○ : BBox位置精度とBBox存在判定精度の両方を比較できる
 - △ : 上記のどちらか一方しか比較できない
 -  ×  : 上記のどちらも比較不可能
- 追跡
    - ○ : 追跡精度を網羅的に比較可
    - △ : 追跡精度を一部比較可だが数値に反映されない追跡失敗例が存在する
    -  ×  : 追跡精度を比較できない


[1] Bernardin, K. & Stiefelhagen, R. Evaluating Multiple Object Tracking Performance: The CLEAR MOT Metrics. Image and Video Processing, 2008(1):1-10, 2008.
[2] Ristani, E., Solera, F., Zou, R., Cucchiara, R. & Tomasi, C. Performance Measures and a Data Set for Multi-Target, Multi-Camera Tracking. In ECCV workshop on Benchmarking Multi-Target Tracking, 2016.
[3] Jonathon Luiten, A.O. & Leibe, B. HOTA: A Higher Order Metric for Evaluating Multi-Object Tracking. International Journal of Computer Vision, 2020.
[4] Li, Y., Huang, C. & Nevatia, R. Learning to associate: HybridBoosted multi-target tracker for crowded scene. In Proceedings of the IEEE Computer Society Conference on Computer Vision and Pattern Recognition, 2009.

## 追跡失敗例
この記事では、定義だけでなく具体的な追跡失敗例を用いて説明します。これらの失敗例が成功したときに各評価指標がどう変動するのかを **直感的に確認** していきます。

私が思い付いた追跡失敗例は下図の緑領域５つです。

:::note warn
現在ID移行の推移例を示すだけで力尽きています。
:::

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269839/63edd8d7-0877-932b-afd5-b6a4ec546262.png)


- **FP** (False Positive) : 予測した追跡が存在しない。検知におけるBBox存在判定精度が悪い。
- **FN** (False Negative) : 正解の追跡を予測できない。検知におけるBBox存在判定精度が悪い。
- **検知ズレ** : 予測した検知枠がずれている。検知におけるBBox位置精度が悪い。
- **ID再初期化** : 追跡IDが途中から新しいIDに入れ替わる。追跡精度が悪い。
- **ID移行** : 追跡IDが別の追跡IDに入れ替わる。追跡精度が悪い。

一般的にID再初期化とID移行は**ID入れ替わり**として統一的に扱われます。２つとも下記論文の「ID Re-Initialization」「ID Transfer・ID Drift」を参考に独自で命名したものです。他に良い呼び分けがあったら教えてくださるとありがたいです。

※1: Luiten, Jonathon, et al. "Hota: A higher order metric for evaluating multi-object tracking." 	International journal of computer vision 129.2 (2021): 548-578.
※2: Feng, Weitao, et al. "Multi-object tracking with multiple cues and switcher-aware classification." 	arXiv preprint arXiv:1901.06129 (2019).



# 1. MOTA (Multi-Object Tracking Accuracy)
IDF1と並び最もよく使われる評価指標です。

### 定義

```math
{\rm MOTA}=1-\frac{\sum_{t}\left(m_{t}+F P_{t}+s w_{t}\right)}{\sum_{t} g_{t}} \\
𝑔_𝑡 : 𝑡フレーム目の正解データ数 \\
𝑚_𝑡 : 𝑡フレーム目の{\rm miss}数 \\
{\rm FP}_𝑡 : 𝑡フレーム目の{\rm FP}数 \\
𝑠𝑤_𝑡: 𝑡フレーム目のID入れ替わり数 \\

```
### FP成功における評価値推移⭕️
coming soon
### FN成功における評価値推移⭕️
coming soon
### 検知ズレ成功における評価値推移❌
coming soon
### ID再初期化成功における評価値推移⭕️
coming soon
### ID移行成功における評価値推移❌
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269839/5e8813ba-e9aa-74e7-58f2-50facf24772d.png)


# 2. IDF1
MOTAと並び最もよく使われる評価指標です。MOTAでは対応していなかったID移行にも対応しています。
[こちら](https://www.ariseanalytics.com/activities/report/20201016/)を参考に作りました。（この参考記事をきっかけにメールのやりとりをさせていただいた担当者様、激励の言葉をありがとうございます。）

### 定義
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269839/c1bf828d-3a08-9555-a956-944ae02308c2.png)

```math
𝜏∈𝐴𝑇 : 正解トラック \\
𝛾∈𝐴𝐶 : 予測データトラック \\
𝛾_𝑚 (𝜏) : 正解トラック𝜏にマッチした出力トラック𝜏_𝑚 (𝛾) : 出力トラック𝛾にマッチした正解トラック \\
𝑇_𝜏, 𝑇_𝛾 : 正解トラック,予測データトラックに含まれるフレーム番号の集合 \\
𝑚(𝑥, 𝑦, 𝑡)  : 2つのトラック𝑥,𝑦を𝑡番目のフレームで比較した場合に2つの{\rm Bounding Box}の{\rm IoU}が閾値以上であれば0を、そうでなければ1を返す関数 \\
𝑙𝑒𝑛(𝜏)，𝑙𝑒𝑛(𝛾) : トラック𝜏，トラック𝛾の長さ
```

### FP成功における評価値推移⭕️
coming soon
### FN成功における評価値推移⭕️
coming soon
### 検知ズレ成功における評価値推移❌
coming soon
### ID再初期化成功における評価値推移⭕️
coming soon
### ID移行成功における評価値推移⭕️
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269839/c305b5e4-d5bf-c031-9f49-09ecd591b557.png)


# 3. HOTA (Higher Order Tracking Accuracy)
検知精度も同時に測ることのできる、他指標よりも高次(higher)な評価指標です。
しかし計算の複雑さからかあまり使われていない印象があります。

### 定義
Jaccardを２回使うことから二重Jaccardとも呼ばれます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269839/a17f2a40-0e43-9f04-3ac8-47d51c34ab47.png)

```math
𝛼 : 正解{\rm BBox}と予測{\rm BBox}を対応させるための閾値 \\
𝑇𝑃𝐴(𝑐) : \{𝑐と同じ正解{\rm ID}と同じ予測{\rm ID}の両方を持つTP\} \\
𝐹𝑁𝐴(𝑐) : \{𝑐と同じ正解{\rm ID}を持つが𝑐とは異なる予測{\rm ID}を持つTP\} ∪ \{𝑐と同じ正解{\rm ID}を持つが予測されなかったFN\} \\
𝐹𝑃𝐴(𝑐) : \{𝑐と同じ予測{\rm ID}を持つが𝑐とは異なる正解{\rm ID}を持つTP\} ∪ \{𝑐と同じ予測{\rm ID}を持つが正解{\rm ID}のないFP\}
```
↑𝑋𝑋𝐴の𝐴はAssociation（結合）を表しています。

### FP成功における評価値推移⭕️
coming soon
### FN成功における評価値推移⭕️
coming soon
### 検知ズレ成功における評価値推移⭕️
coming soon
### ID再初期化成功における評価値推移⭕️
coming soon
### ID移行成功における評価値推移⭕️
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269839/4a43aff9-1431-1d4a-03bd-09f910f5a869.png)



# 4. MT (Mostly tracked targets)
### 定義

```math
80\%以上の軌跡を予測できた正解軌跡の割合
```
### FP成功における評価値推移❌
coming soon
### FN成功における評価値推移⭕️
coming soon
### 検知ズレ成功における評価値推移❌
coming soon
### ID再初期化成功における評価値推移❌
coming soon
### ID移行成功における評価値推移❌
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269839/39b58530-0937-31b3-86a9-298d4a45e534.png)



# 5. ML (Mostly lost targets)
### 定義

```math
軌跡を予測できた割合が20\%未満の正解軌跡の割合
```
### FP成功における評価値推移⭕️
coming soon
### FN成功における評価値推移❌
coming soon
### 検知ズレ成功における評価値推移❌
coming soon
### ID再初期化成功における評価値推移❌
coming soon
### ID移行成功における評価値推移❌
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269839/03c384e1-2009-c757-1dce-47747e80752b.png)


# 6. FP (False Positive)
### 定義

```math
|{\rm FP}|（誤検知の総数）
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269839/2188ff8d-4255-29c6-6c55-9153fb1b185b.png)

### FP成功における評価値推移⭕️
coming soon
### FN成功における評価値推移❌
coming soon
### 検知ズレ成功における評価値推移❌
coming soon
### ID再初期化成功における評価値推移❌
coming soon
### ID移行成功における評価値推移❌
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269839/d57b012f-dc76-dc53-60a7-d8656f4f55b5.png)


# 7. FN (False Negative)
###　定義

```math
|{\rm FN}|（{\rm miss}総数）
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269839/ad9f3b6b-c604-b59a-04ea-a183b01ff8d9.png)

### FP成功における評価値推移❌
coming soon
### FN成功における評価値推移⭕️
coming soon
### 検知ズレ成功における評価値推移❌
coming soon
### ID再初期化成功における評価値推移❌
coming soon
### ID移行成功における評価値推移❌
→ 6(FP)参照

# 8. Rcll (Recall)
### 定義

```math
\text{ Recall }=\frac{|T P|}{|T P|+|F N|}
```
### FP成功における評価値推移❌
coming soon
### FN成功における評価値推移⭕️
coming soon
### 検知ズレ成功における評価値推移❌
coming soon
### ID再初期化成功における評価値推移❌
coming soon
### ID移行成功における評価値推移❌
→ 6(FP)参照

# 9 . Prcn (Precision)
### 定義

```math
\text{ Precision }=\frac{|T P|}{|T P|+|F P|}
```
### FP成功における評価値推移⭕️
coming soon
### FN成功における評価値推移❌
coming soon
### 検知ズレ成功における評価値推移❌
coming soon
### ID再初期化成功における評価値推移❌
coming soon
### ID移行成功における評価値推移❌
→ 6(FP)参照


# 10. AssA (Association Accuracy)
### 定義

```math
J(c)=\frac{|T P A(c)|}{|T P A(c)|+|F N A(c)|+|F P A(c)|} \\
A s s A_{\alpha}=\frac{1}{|T P|} \sum_{c \in\{T P\}} J(c) \\
A s s A=\frac{\int_{0}^{1} A s s A_{\alpha} d \alpha}{|[0,1] \cap \mathbb{R}|} 
```
```math
𝛼 : 正解{\rm BBox}と予測{\rm BBox}を対応させるための閾値 \\
𝑇𝑃𝐴(𝑐) : \{𝑐と同じ正解{\rm ID}と同じ予測{\rm ID}の両方を持つTP\} \\
𝐹𝑁𝐴(𝑐) : \{𝑐と同じ正解{\rm ID}を持つが𝑐とは異なる予測{\rm ID}を持つTP\} ∪ \{𝑐と同じ正解{\rm ID}を持つが予測されなかったFN\} \\
𝐹𝑃𝐴(𝑐) : \{𝑐と同じ予測{\rm ID}を持つが𝑐とは異なる正解{\rm ID}を持つTP\} ∪ \{𝑐と同じ予測{\rm ID}を持つが正解{\rm ID}のないFP\}
𝒮(𝑐) : 𝑐 の予測{\rm BBox}と正解{\rm BBox}の類似スコア
```

### ID移行成功における評価値推移⭕️
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269839/995abdd2-a5a4-f410-4e10-eb48a171458a.png)

# 11. DetA (Detection Accuracy)
### 定義

```math
\operatorname{Det} A_{\alpha}=\frac{|T P|}{|T P|+|F N|+|F P|} \\
\operatorname{Det} A=\frac{\int_{0}^{1} \operatorname{Det} A_{\alpha} d \alpha}{|[0,1] \cap \mathbb{R}|}
```
変数や関数の説明は10(AssA)を参照ください。

### ID移行成功における評価値推移❌
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269839/bb6e940c-95c5-1892-cc4c-67c776e79044.png)



# 12. AssRe (Association Recall)
### 定義

```math
\operatorname{AssRe}_{\alpha}=\frac{1}{|T P|} \sum_{c \in\{T P\}} \frac{|T P A(c)|}{|T P A(c)|+|F N A(c)|} \\
\operatorname{AssRe}=\frac{\int_{0}^{1} \operatorname{AssRe}_{\alpha} d \alpha}{|[0,1] \cap \mathbb{R}|}
```
変数や関数の説明は10(AssA)を参照ください。

### ID移行成功における評価値推移⭕️

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269839/1b2df538-7ed0-1366-e9ac-6b1d575bd129.png)

# 13. AssPr (Association Precision)
### 定義

```math
A s s P r_{\alpha}=\frac{1}{|T P|} \sum_{c \in\{T P\}} \frac{|T P A(c)|}{|T P A(c)|+|F P A(c)|} \\
A s s P r=\frac{\int_{0}^{1} A \operatorname{ssPr}_{\alpha} d \alpha}{|[0,1] \cap \mathbb{R}|}
```
変数や関数の説明は10(AssA)を参照ください。

### ID移行成功における評価値推移⭕️
→ 12(AssA)参照

# 14. DetRe (Detection Recall)
### 定義

```math
\operatorname{DetRe}_{\alpha}=\frac{|T P|}{|T P|+|F N|} \\
\operatorname{DetRe}=\frac{\int_{0}^{1} \operatorname{DetRe}_{\alpha} d \alpha}{|[0,1] \cap \mathbb{R}|}
```
変数や関数の説明は10(AssA)を参照ください。
### ID移行成功における評価値推移❌
→ 11(DetA)参照


# 15. DetPr (Detection Precision)

### 定義

```math
\operatorname{DetPr}_{\alpha}=\frac{|T P|}{|T P|+|F N|} \\
\operatorname{DetPr}=\frac{\int_{0}^{1} \operatorname{DetPr}_{\alpha} d \alpha}{|[0,1] \cap \mathbb{R}|}
```
変数や関数の説明は10(AssA)を参照ください。
### ID移行成功における評価値推移❌
→ 11(DetA)参照

# 16. LocA (Localization Accuracy)
### 定義

```math
\operatorname{LocA}_{\alpha}=\frac{1}{\left|T P_{\alpha}\right|} \sum_{c \in\left\{T P_{\alpha}\right\}} \mathcal{S}(c)　\\
\operatorname{LocA}=\frac{\int_{0}^{1} \operatorname{LocA}_{\alpha} d \alpha}{|[0,1] \cap \mathbb{R}|}
```
変数や関数の説明は10(AssA)を参照ください。
### ID移行成功における評価値推移❌
→ 11(DetA)参照

# 17. FAF (false alarms per frame)
### 定義

```math
フレームごとの|𝐹𝑃|の平均
```

### ID移行成功における評価値推移❌
→ 6(FP)参照

# 18. IDSw. (Identity Switches)
### 定義

```math
予測軌跡中で正解軌跡が入れ替わった総回数
```

### ID移行成功における評価値推移❌
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269839/965d3100-2d77-4681-1ab9-25e7ec792677.png)

# 19. Frag　(fragment)
### 定義

```math
正解軌跡中で予測軌跡が中断された総回数
```

### ID移行成功における評価値推移❌
→ 18(IDSw)参照

# 最後に
ここまで、MOTの精度指標を19個紹介してきました。この記事を参考に、課題や目的に沿って使う評価指標を適宜選別してもらえたら幸いです。

:::note warn
 この記事は作成途中です。（定義は全て書きましたが追跡成功推移例が５つ中１つしか示せていません）LGTMが10以上集まるのであれば作成を再開するつもりです。
:::