多攝像頭實時目標跟蹤和計數(shù),使用YOLOv4,Deep SORT和Flask
來源:AI公園
作者:LeonLok
編譯:ronghuaiyang
本文來自github,很實用的一個應用。
git倉庫地址:https://github.com/LeonLok/Multi-Camera-Live-Object-Tracking
這個存儲庫包含了我的目標檢測和跟蹤項目。所有這些都可以托管在云服務器上。
由于有ImageZMQ,你還可以使用自己的異步處理IP相機。
Deep SORT 和 YOLO v4
Check out我的Deep SORT repository:https://github.com/LeonLok/Deep-SORT-YOLOv4,查看我使用的跟蹤算法,其中包括Tensorflow 2.0、異步視頻處理和低置信度跟蹤過濾。
交通流量計數(shù)
這個項目是目標計數(shù)應用的一個擴展。

功能
-
使用DETRAC數(shù)據(jù)集生成的244,617幅圖像進行訓練。可以在這里找到我創(chuàng)建的轉(zhuǎn)換代碼。 -
我把這篇論文:https://ieeexplore.ieee.org/document/8909903作為數(shù)據(jù)準備和訓練的指南。 -
每個跟蹤id只計數(shù)一次。 -
通過查看被跟蹤目標的路徑與計數(shù)線的交叉點對目標進行計數(shù)。 -
因此,那些跟丟了但用相同的ID重新跟蹤的仍然會被計數(shù)。 -
使用低置信度濾波進行跟蹤,來自上面同樣的論文。 -
提供更低的假陽性率。 -
跟蹤目標顯示平均檢測置信度。 -
跟蹤的類別由最常見的檢測類別確定。 -
顯示檢測結(jié)果是可選的(但是隱藏了平均檢測置信度)。 -
可以使用多個IP攝像頭。 -
方向計數(shù)可以配置為基于角度。 -
每一小時的間隔記錄計數(shù)。 -
總的計數(shù) -
基于類別的計數(shù) -
記錄每個計數(shù)目標的交叉詳細信息。 -
交叉時間 -
交叉點坐標 -
交叉角度 -
可以托管在云服務器上。
注意,由于DETRAC不包含任何摩托車,它們是唯一被忽略的車輛。此外,DETRAC數(shù)據(jù)集只包含中國的交通圖像,因此由于缺乏訓練數(shù)據(jù),它很難正確地檢測出其他國家的某些車輛。例如,它經(jīng)常會將掀背車誤歸為suv,或者由于不同的顏色方案而無法識別出租車。
目標計數(shù)
這個項目最初打算成為一個應用程序,用于使用我自己的智能手機計算當前在多個房間的人數(shù),服務器被遠程托管。下面展示了對人和汽車的檢測、跟蹤和計數(shù)。

功能
-
對當前視場中的物體進行計數(shù) -
跟蹤可選 -
支持多個IP相機 -
每間隔一個小時記錄一次當前的計數(shù) -
當前的總數(shù) -
當前每個類別的計數(shù) -
可以托管在云服務器上
使用我自己的智能手機作為IP相機

訓練你自己的機動車跟蹤模型
我使用DETRAC訓練帶有v3標注的數(shù)據(jù)集訓練了YOLOv4和Deep SORT模型。我提供了將DETRAC訓練圖像和v3標注轉(zhuǎn)換為正確格式的腳本,用于訓練YOLOv4模型和Deep SORT跟蹤模型。
Deep SORT 轉(zhuǎn)換參數(shù)
DETRAC圖像轉(zhuǎn)換為Market 1501訓練格式。
-
遮擋閾值 - 忽略遮擋比率過高的車輛序列。 -
截斷閾值 - 忽略截斷率過高的車輛序列。 -
出現(xiàn)的次數(shù) - 車輛序列太短(即沒有足夠的圖像)被丟棄后,考慮遮擋和截斷比率。
YOLO 轉(zhuǎn)換參數(shù)
DETRAC圖像被轉(zhuǎn)換成Darknet YOLO訓練格式。
-
遮擋閾值 - 忽略遮擋比率過高的車輛序列。 -
截斷閾值 - 忽略截斷率過高的車輛序列。
兩種模型都在DETRAC訓練集上進行了訓練和評估,但由于缺少v3標注,測試集還沒有評估,我也沒有MATLAB用于Deep SORT的評估軟件。到目前為止,對于我的用例來說,它已經(jīng)足夠好了。
使用的硬件
-
Nvidia GTX 1070 GPU -
i7-8700K CPU
為了讓大家了解我們的期望,我可以運行兩個流量計數(shù)流,每個流大約10fps(正如你在流量計數(shù)gif中看到的)。當然,這在很大程度上取決于流分辨率以及用于檢測和跟蹤的幀數(shù)。
YOLO v3 vs. YOLO v4
當我第一次開始目標計數(shù)項目時,我使用YOLOv3,跟蹤幀率大約是10FPS,很難一次運行多個流。使用YOLOv4可以更容易地運行具有更高分辨率的兩個流,并提供更好的檢測精度。
依賴
-
Tensorflow-GPU 1.14 -
Keras 2.3.1 -
opencv-python 4.2.0 -
ImageZMQ -
numpy 1.18.2 -
Flask 1.1.1 -
pillow
這個項目是在Python 3.6上構(gòu)建和測試的。
感謝相關(guān)貢獻者
-
https://github.com/miguelgrinberg/flask-video-streaming -
https://github.com/Ma-Dan/keras-yolo4 -
https://github.com/nwojke/deep_sort -
https://github.com/Qidian213/deep_sort_yolov3 -
https://github.com/yehengchen/Object-Detection-and-Tracking
英文原文:https://github.com/LeonLok/Multi-Camera-Live-Object-Tracking
往期推薦
