來(lái)源: arXiv:2103.14829v1

這篇文章的目標(biāo)是利用transformer實(shí)現(xiàn)真正的端到端多目標(biāo)跟蹤器的訓(xùn)練,這里的端到端是指給定一段圖像序列,網(wǎng)絡(luò)能夠自動(dòng)的處理軌跡的產(chǎn)生和終止以及生長(zhǎng)。具體而言,提出的MO3TR模型使用temporal transformer實(shí)現(xiàn)每個(gè)軌跡歷史特征的融合并預(yù)測(cè)當(dāng)前時(shí)刻該軌跡的特征,另外使用spatial transformer刻畫(huà)object之間的位置關(guān)系以及object與image之間的關(guān)系。 object之間的關(guān)系能夠刻畫(huà)目標(biāo)之間可能存在的交互,而object與image的交互能夠?qū)崿F(xiàn)潛在的關(guān)聯(lián),從而完成軌跡生長(zhǎng)。
注意: 其實(shí)該方法思路很簡(jiǎn)單,是在TrackerFormer上的擴(kuò)展,其難點(diǎn)在于模型的訓(xùn)練,如何有效的提供訓(xùn)練數(shù)據(jù)。
MO3TR: Multi-Object TRacking using spatial TRansformers and temporal TRansformers.
MO3TR的框架圖如下:

Temporal Transformer
首先來(lái)介紹下Temporal Transformers,這個(gè)模塊并行作用在每個(gè)track上,目的是有效的利用每條軌跡的歷史狀態(tài)預(yù)測(cè)當(dāng)前時(shí)刻用于檢測(cè)和關(guān)聯(lián)的隱狀態(tài)。給定某條軌跡, 其中
表示軌跡的起始時(shí)刻,
表示軌跡m在某一歷史時(shí)刻的歷史狀態(tài),那么使用transformer時(shí)需要提供每個(gè)embedding的pos編碼,而query是當(dāng)前幀,即
狀態(tài)下的位置編碼
, 于是軌跡m在當(dāng)前幀中的預(yù)測(cè)狀態(tài)為:

這里每條軌跡的長(zhǎng)度是可變的,同樣通過(guò)迭代可以預(yù)測(cè)多步之后的狀態(tài)。
作者認(rèn)為temporal transformer生成軌跡預(yù)測(cè)的優(yōu)勢(shì):1)利用attention的方式能夠有效的篩選有用的歷史信息,使特征魯棒;2)利用位置編碼能夠?qū)W到有效的運(yùn)動(dòng)信息,而不單單是表觀特征變化。
Spatial Transformers
這一部分和TrackFormer相似,以預(yù)測(cè)的軌跡狀態(tài)和可學(xué)習(xí)的embedding作為queries,以當(dāng)前圖像的特征encoder作為key和value,本質(zhì)就是self-attention + cross-attention. 同樣的decoder包含多個(gè)decoder layer。
其中可學(xué)習(xí)的的embedding主要用來(lái)檢測(cè)新產(chǎn)生的目標(biāo),而預(yù)測(cè)狀態(tài)則表示已經(jīng)存在的軌跡。
對(duì)于每個(gè)query都有一個(gè)輸出特征, 對(duì)該特征進(jìn)行分類和回歸任務(wù)。這部分其實(shí)和TrackFormer類似,不同點(diǎn)在于分類后的query,通過(guò)閾值決定了那些軌跡已經(jīng)終止和哪些檢測(cè)是軌跡的新起點(diǎn),從而把當(dāng)前時(shí)刻的新?tīng)顟B(tài)更新到歷史集合中。
注意:這里提到的right-aligning 嵌入集合,本質(zhì)上是對(duì)當(dāng)前時(shí)刻存在的軌跡在當(dāng)前時(shí)刻對(duì)齊,它影響的其實(shí)是pos編碼。
訓(xùn)練
訓(xùn)練部分值得注意的包含兩點(diǎn);
- 如何構(gòu)建訓(xùn)練數(shù)據(jù)集,因?yàn)槟P鸵\壽E的初始化、軌跡的終止和遮擋等情況,因此該類的數(shù)據(jù)應(yīng)該足夠,只能通過(guò)數(shù)據(jù)增廣的方式實(shí)現(xiàn)。
- 因?yàn)轭A(yù)測(cè)的query既包括已有軌跡的持續(xù)生長(zhǎng),也包括新軌跡的初始化,所以應(yīng)當(dāng)確定如何給不同的query分配標(biāo)簽。
針對(duì)于問(wèn)題1. 的做法:首先訓(xùn)練一個(gè)detr檢測(cè)器,那么檢測(cè)器就能提供第k幀圖像的前K幀圖像中的目標(biāo)的embedding,可以將該embedding作為歷史狀態(tài)。這時(shí)候采用的損失函數(shù)和標(biāo)簽匹配采用的和detr相同。 為了刻畫(huà)軌跡的初始化,軌跡的終止和軌跡的遮擋,使用了三種對(duì)應(yīng)的數(shù)據(jù)增廣:a.隨機(jī)的丟掉部分embedding,使得模型更加魯棒,而丟失的是最近時(shí)刻的embedding時(shí)相當(dāng)于目標(biāo)的重識(shí)別;b. 隨機(jī)的插入一些positive examples, 增加對(duì)遮擋帶來(lái)的模糊的處理能力;c. 隨機(jī)選擇軌跡的長(zhǎng)度,使模型能夠處理不同長(zhǎng)度的預(yù)測(cè)。
在標(biāo)簽分配上,檢測(cè)的標(biāo)簽分配和DETR相同,而對(duì)于tracking部分的query,其label是歷史label相同。沒(méi)有匹配目標(biāo)label的query的標(biāo)簽賦值背景標(biāo)簽。
實(shí)驗(yàn)部分
- 細(xì)節(jié)。
圖像特征抽取的backbone是ImageNet上預(yù)訓(xùn)練的,首先使用CrowdHuman, ETH和CUHJ-SYSU訓(xùn)練一個(gè)行人檢測(cè)器,其次在MOT17上訓(xùn)練temporal transformer和整個(gè)模型。 模型遵循DETR的策略,訓(xùn)練300個(gè)epoch, 初始學(xué)習(xí)率1e-4, 每100個(gè)epoch以0.1衰減一次。歷史狀態(tài)的長(zhǎng)度是1~30. 為了更好的訓(xùn)練temporal transformers, 連續(xù)預(yù)測(cè)未來(lái)10步的狀態(tài),然后計(jì)算均值損失。(這部分細(xì)節(jié)不是很清楚) - 實(shí)驗(yàn)結(jié)果
a. 在public 檢測(cè)條件下,性能相對(duì)于TrackFormer提升了1.4個(gè)點(diǎn)的MOTA,在FP, FN和IDS上都有提升。
b. 分析實(shí)驗(yàn)驗(yàn)證了不同的數(shù)據(jù)增廣的有效性。
c. temporal attention部分的可視化解釋描述的不是很清楚。
總結(jié)
文章的思路挺清晰,主要是temporal transformer模塊對(duì)多幀圖像的處理,其難點(diǎn)在于模型訓(xùn)練部分。
文章對(duì)于temporal transformer模塊的描述不是很清楚,軌跡終止的時(shí)刻不是很清楚,在當(dāng)前幀如果track query沒(méi)有檢測(cè)到是否表示軌跡終止了呢?如果是的話那軌跡重新找回是怎么刻畫(huà)的呢?
該模型的整體速度應(yīng)該還可以,因?yàn)檐壽E歷史狀態(tài)都已經(jīng)是存儲(chǔ)的,只需要當(dāng)前幀圖像的特征抽取,和兩種transformers的處理。