# ByteTrack: Multi-Object Tracking by Associating Every Detection Box
>[方便的原論文連結😎😎](https://arxiv.org/pdf/2110.06864)
## 前言: 聊聊MOT
Multi-Object Tracking主流有1 stage、 2 stage兩派
### 2-Stage是哪兩個Stage?
- Detection: 抓出畫面的Bounding Boxes,常用YOLO完成
- Association: 透過計算與上個frame的Bounding Boxes配對,找到目前frame的BOX該與上個frame的哪個BOX配對
### 怎麼樣算配對?
指的是計算Similarity,越相像的就越可能是同一個,可以透過
- 位置 IoU
- 外觀 Appearnce Similarity
- 移動趨勢 Motion Similarity
## 正文開始
為啥叫ByteTrack?
作者說Byte就是電腦最基本的單位,所以取Byte的意涵。
所有Detectoin的結果,不分貴賤,也就是不分信心分數的高低,我全都要,拿來做Association。
本文主要提供一套簡單、高效的**演算法BYTE**讓過去的方法都能適用,並能提高表現
## 論點
先來觀察一件事,根據以往的做法第一步是**只採用高信心分數的Detection結果**去做關聯,但注意,在這一步驟低信心分數的Detection結果就全部掰掰了。這些掰掰的人可是占了最後結果好壞的一大部分呢~
所以作者這邊舉了個例子

看圖片上1/3的部分,這邊是指Detection的初步結果,包含了所有的Bounding Box + 信心分數。不難觀察到畫面中偏左的後方路人的信心分數,因為遮擋的緣故,一路掉掉掉(0.8 -> 0.4 -> 0.1)。
圖片中間1/3是大多古老的方法們的作法,只採用高信心分數的Bounding Box所以紅色的那個人自然就消失了。
圖片下方1/3,由圖例說明,我們ByteTrack就是犀利
## ByteTrack是什麼
一行來總結:
YOLOX做Detection + BYTE演算法做Association
## BYTE演算法
與過去算法較不同的是將Bounding Box依照信心分數分成兩堆,分別**做兩次關聯**
1. 先記著上個frame的Detection結果,記做T
2. Detect現在frame的結果,記做D
3. D用信心分數高低分成兩堆,D_high、D_low
4. 使用卡爾曼濾波器,更新一下T新的tracklets位置
5. 配對
- 先拿高的這堆D_high跟T做第一次Association
- 拿剩下T跟D_low第二次Association
6. 最後還有剩下的T就刪掉拉
7. 下一次的T就用剩下沒人要的D來使用
8. 回到1.循環