# 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結果就全部掰掰了。這些掰掰的人可是占了最後結果好壞的一大部分呢~ 所以作者這邊舉了個例子 ![image](https://hackmd.io/_uploads/ByOimYyGA.png) 看圖片上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.循環