博客專欄

EEPW首頁 > 博客 > 用 YOLO v5+DeepSORT,打造實(shí)時(shí)多目標(biāo)跟蹤模型

用 YOLO v5+DeepSORT,打造實(shí)時(shí)多目標(biāo)跟蹤模型

發(fā)布人:數(shù)據(jù)派THU 時(shí)間:2021-08-20 來源:工程師 發(fā)布文章

來源:HyperAI超神經(jīng)

目標(biāo)跟蹤 (Object Tracking) 是機(jī)器視覺領(lǐng)域的重要課題,根據(jù)跟蹤目標(biāo)的數(shù)量,可分為單目標(biāo)跟蹤 (Single Object Tracking,簡(jiǎn)稱 SOT) 和多目標(biāo)跟蹤 (Multi Object Tracking,簡(jiǎn)稱 MOT)。

多目標(biāo)跟蹤往往因?yàn)楦?ID 眾多、遮擋頻繁等,容易出現(xiàn)目標(biāo)跟丟的現(xiàn)象。借助跟蹤器 DeepSORT 與檢測(cè)器 YOLO v5,可以打造一個(gè)高性能的實(shí)時(shí)多目標(biāo)跟蹤模型。

本文將對(duì)單目標(biāo)跟蹤和多目標(biāo)跟蹤分別進(jìn)行介紹,文末將詳解 YOLO v5+DeepSORT 的實(shí)現(xiàn)過程及具體代碼。

單目標(biāo)跟蹤詳解

定義 

單目標(biāo)跟蹤 SOT 是指在視頻首幀給出目標(biāo),根據(jù)上下文信息,在后續(xù)幀定位出目標(biāo)位置,建立跟蹤模型對(duì)目標(biāo)的運(yùn)動(dòng)狀態(tài)進(jìn)行預(yù)測(cè)。

應(yīng)用場(chǎng)景 

SOT 在智能視頻監(jiān)控、自動(dòng)駕駛、機(jī)器人導(dǎo)航、人機(jī)交互等領(lǐng)域應(yīng)用廣泛。

1.gif

足球比賽中利用 SOT 預(yù)測(cè)足球運(yùn)動(dòng)軌跡

研究難點(diǎn) 

最主要的三個(gè)難點(diǎn):目標(biāo)背景的變化、物體本身的變化、光照強(qiáng)度變化。

主流算法(基于深度學(xué)習(xí)) 

解決 SOT 問題主要有兩種方法:判別式跟蹤及生成式跟蹤,隨著深度學(xué)習(xí)在圖像分類、目標(biāo)檢測(cè)等機(jī)器視覺相關(guān)任務(wù)中的成功應(yīng)用,深度學(xué)習(xí)也開始大量應(yīng)用于目標(biāo)跟蹤算法中。

本文主要圍繞基于深度學(xué)習(xí)的 SOT 算法進(jìn)行介紹。

2.jpg

各時(shí)間節(jié)點(diǎn)的代表性目標(biāo)跟蹤算法

2012 年后以 AlexNet 為代表的深度學(xué)習(xí)方法

被引入到目標(biāo)跟蹤領(lǐng)域中

關(guān)鍵算法:SiamFC

與傳統(tǒng)目標(biāo)跟蹤中所用的在線學(xué)習(xí)方法不同,SiamFC 側(cè)重于在離線階段學(xué)習(xí)強(qiáng)嵌入。

它將一個(gè)基本跟蹤算法,與一個(gè)在 ILSVRC15 數(shù)據(jù)集上進(jìn)行端到端訓(xùn)練的新型全卷積孿生網(wǎng)絡(luò) (fully-convolutional Siamese network) 相結(jié)合,用于視頻中的目標(biāo)檢測(cè)。

3.png

全卷積孿生網(wǎng)絡(luò)架構(gòu)示意圖

實(shí)驗(yàn)證明,在模型測(cè)試和訓(xùn)練期間,孿生全卷積深度網(wǎng)絡(luò)對(duì)已有數(shù)據(jù)的利用更加高效。

SiamFC 開創(chuàng)了將孿生網(wǎng)絡(luò)結(jié)構(gòu)應(yīng)用于目標(biāo)跟蹤領(lǐng)域的先河,顯著提高了深度學(xué)習(xí)方法跟蹤器的跟蹤速度,結(jié)構(gòu)簡(jiǎn)單性能優(yōu)異。

相關(guān)論文:

https://arxiv.org/pdf/1606.09549.pdf

相關(guān)衍生算法 

1、StructSiam

提出了 local structure learning method,同時(shí)考慮目標(biāo)的 local pattern 和結(jié)構(gòu)關(guān)系。為此,作者設(shè)計(jì)了一個(gè)局部模式檢測(cè)模塊,來自動(dòng)識(shí)別目標(biāo)物體的辨別區(qū)域。

該模型可以以端到端的方式進(jìn)行訓(xùn)練。

相關(guān)論文:

https://openaccess.thecvf.com/content_ECCV_2018/papers/Yunhua_Zhang_Structured_Siamese_Network_ECCV_2018_paper.pdf

2、SiamFC-tri

作者提出了一種全新的 triplet loss,用于提取跟蹤物體的 expressive deep feature。在不增加輸入的情況下,該方法可以利用更多元素進(jìn)行訓(xùn)練,通過組合原始樣本,實(shí)現(xiàn)更強(qiáng)大的特征。

相關(guān)論文:

https://openaccess.thecvf.com/content_ECCV_2018/papers/Xingping_Dong_Triplet_Loss_with_ECCV_2018_paper.pdf

3、DSiam

作者提出了動(dòng)態(tài)孿生網(wǎng)絡(luò),通過一個(gè)快速轉(zhuǎn)換學(xué)習(xí)模型,能夠有效地在線學(xué)習(xí)目標(biāo)的外觀變化和先前幀的背景壓制。同時(shí)作者還提出了元素多層融合,利用多層深度特征自適應(yīng)地整合網(wǎng)絡(luò)輸出。

DSiam 允許使用任何可行的通用或經(jīng)過特殊訓(xùn)練的特征,如 SiamFC 和 VGG,且動(dòng)態(tài)孿生網(wǎng)絡(luò)可以直接在標(biāo)記的視頻序列上進(jìn)行整合訓(xùn)練,充分利用移動(dòng)物體豐富的時(shí)空信息。

相關(guān)論文:

https://openaccess.thecvf.com/content_ICCV_2017/papers/Guo_Learning_Dynamic_Siamese_ICCV_2017_paper.pdf

多目標(biāo)跟蹤詳解

定義 

多目標(biāo)跟蹤(MOT)是指對(duì)視頻中每一幀的物體都賦予一個(gè) ID,并將每個(gè) ID 的行為軌跡畫出來。

4.gif

在街景視頻中進(jìn)行多目標(biāo)跟蹤

應(yīng)用場(chǎng)景 

MOT 在智能安防、自動(dòng)駕駛、醫(yī)學(xué)場(chǎng)景等領(lǐng)域,都有廣泛應(yīng)用。

研究難點(diǎn) 

MOT 目前遇到的最大挑戰(zhàn)就是遮擋 (Occlusion),即目標(biāo)之間的彼此遮擋或環(huán)境對(duì)目標(biāo)產(chǎn)生的遮擋。

主流算法 

1、SORT

Simple Online and Realtime Tracking (SORT) 是一種專注簡(jiǎn)單高效算法的多目標(biāo)跟蹤方法,它非常實(shí)用,可以為在線和實(shí)時(shí)應(yīng)用,有效地關(guān)聯(lián)目標(biāo)。

SORT 只是將常見技術(shù)(如卡爾曼濾波、匈牙利算法)進(jìn)行了簡(jiǎn)單組合,準(zhǔn)確率可與當(dāng)時(shí)最先進(jìn)的在線跟蹤器相提并論。

5.png

SORT 與其他方法的性能比較

橫軸表示準(zhǔn)確率,縱軸表示速度

模型位置越高、越靠右,綜合表現(xiàn)越佳

由于跟蹤方法簡(jiǎn)單易用,跟蹤器的更新速度達(dá)到了 260 Hz,比當(dāng)時(shí)最先進(jìn)的跟蹤器快 20 倍。

相關(guān)論文:

https://arxiv.org/pdf/1602.00763.pdf

2、DeepSORT

DeepSORT 是 SORT 的升級(jí)版,它整合了外觀信息 (appearance information) 從而提高 SORT 的性能,這使得我們?cè)谟龅捷^長(zhǎng)時(shí)間的遮擋時(shí),也能夠正常跟蹤目標(biāo),并有效減少 ID 轉(zhuǎn)換的發(fā)生次數(shù)。

6.png

DeepSORT 在 MOT Challenge 數(shù)據(jù)集上的表現(xiàn)

真實(shí)街景中遮擋情況非常常見

作者將絕大部分的計(jì)算復(fù)雜度,都放到了離線預(yù)訓(xùn)練階段,在這個(gè)階段會(huì)用一個(gè)大規(guī)模行人重識(shí)別數(shù)據(jù)集,學(xué)習(xí)深度關(guān)聯(lián)度量 (deep association metric)。

在在線應(yīng)用階段,則使用視覺外觀空間 (visual appearance space) 中的近鄰查詢,來建立 measurement-to-track 關(guān)聯(lián)。

實(shí)驗(yàn)表明,DeepSORT 使得 ID 轉(zhuǎn)換的次數(shù)減少了 45%,在高幀率下整體性能優(yōu)秀。

此外 DeepSORT 是一個(gè)非常通用的跟蹤器,可以被接在任何一個(gè)檢測(cè)器上。

相關(guān)論文:

https://arxiv.org/pdf/1703.07402.pdf

3、Towards Real-Time MOT

作者提出了一個(gè) MOT 系統(tǒng),使得目標(biāo)檢測(cè)和外觀嵌入得以在一個(gè)共享模型中學(xué)習(xí)。也就是說把外觀嵌入模型納入一個(gè) single-shot 檢測(cè)器中,使該模型可以同時(shí)輸出檢測(cè)以及對(duì)應(yīng)的嵌入。

作者還進(jìn)一步提出了一個(gè)簡(jiǎn)單快速的關(guān)聯(lián)方法,可以與聯(lián)合模型 (joint model) 一起運(yùn)行。

7.png

Towards Real-Time MOT 與 SDE 模型

Two-stage 模型以及 JDE 模型對(duì)比

與之前的 MOT 系統(tǒng)相比,這兩個(gè)組件的計(jì)算成本都大大降低了,為實(shí)時(shí) MOT 算法設(shè)計(jì)的后續(xù)工作,提供了一個(gè)整潔快速的基線。

這是業(yè)內(nèi)第一個(gè)接近實(shí)時(shí)的 MOT 系統(tǒng),它的運(yùn)行速度更快、精度更高、代碼也已開源,非常值得參考。

相關(guān)論文:

https://arxiv.org/pdf/1909.12605v1.pdf

用YOLOv5和DeepSORT進(jìn)行多目標(biāo)跟蹤

該教程在 OpenBayes.com 運(yùn)行。OpenBayes 是一個(gè)開箱即用的機(jī)器學(xué)習(xí)算力云平臺(tái),提供 PyTorch、TensorFlow 等主流框架,以及 vGPU、T4、V100 等多種類型的算力方案,計(jì)價(jià)模式靈活簡(jiǎn)單,按使用時(shí)長(zhǎng)收費(fèi)。

本教程選用 vGPU 在 PyTorch 1.8.1 環(huán)境中運(yùn)行。

訪問完整教程:

https://openbayes.com/console/open-tutorials/containers/BvxvYMbdefV/overview

8.png

本項(xiàng)目包括兩個(gè)部分,首先是 YOLO v5 檢測(cè)器,用于檢測(cè)出一系列物體;然后用 DeepSORT 進(jìn)行跟蹤。

第一步 代碼環(huán)境準(zhǔn)備

%cd Yolov5_DeepSort_Pytorch
%pip install -qr requirements.txt  # 安裝依賴
import torch
from IPython.display import Image, clear_output  # 顯示結(jié)果
clear_output()
print(f"Setup complete. Using torch {torch.__version__} ({torch.cuda.get_device_properties(0).name if torch.cuda.is_available() else 'CPU'})")

第二步 預(yù)處理待測(cè)視頻

!y | ffmpeg -ss 00:00:00 -i test.avi -t 00:00:03 -c copy out.avi -y

第三步 模型推理

!python track.py --yolo_weights /openbayes/input/input1/crowdhuman_yolov5m.pt --source out.avi --save-vid

第四步 格式轉(zhuǎn)換

!ffmpeg -i /openbayes/home/Yolov5_DeepSort_Pytorch/inference/output/out.avi output.mp4 -y

第五步 顯示結(jié)果

from IPython.display import HTML
from base64 import b64encode
mp4 = open('output.mp4','rb').read()
data_url = "data:video/mp4;base64," + b64encode(mp4).decode()

HTML("""
<video controls>
      <source src="%s" type="video/mp4">
</video>
""" % data_url)

9.gif

輸出多目標(biāo)跟蹤結(jié)果

完整 notebook 請(qǐng)?jiān)L問:

https://openbayes.com/console/open-tutorials/containers/BvxvYMbdefV/overview

*博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請(qǐng)聯(lián)系工作人員刪除。



關(guān)鍵詞: AI

相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉