《deep sort》復現過程

目錄python

1. 準備代碼與數據

deep_sort開源代碼git

克隆到本地服務器github

git clone https://github.com/nwojke/deep_sort.git服務器

下載MOT16數據集(MOT:Multi-Object Tracking, 16的意思是相比MOT15多了更多的細節信息)
MOT16數據集app

預訓練權重下載框架

1.1 數據集介紹

該數據集分爲了test和train,每一個文件夾有7個子文件夾。ide

./MOT16/train
學習

以訓練集中的MOT16-02爲例,探究數據數據集格式
MOT16-02下包含三個四個子文件:det、gt、img一、seqinfo.ini優化

1.1.1 det:

det下只有一個文件,det.txt。每行一個標註,表明一個檢測物體google

格式爲:

, , , , , , , , ,

  • :第幾幀(能夠看到img1中共600幀圖)
  • :目標運動軌跡編號(在目標文件中都爲-1)
  • <bb_* >:bbox的座標尺寸
  • : 分類的置信度分數
  • <x, y, z> :用於3D檢測,2D檢測老是爲1
1.1.2 img1

這個目錄就是把視頻一幀幀抽取出來的圖片,總共600張。文件命名從000001.jpg到000600.jpg。

1.1.3 gt

gt文件夾下只有一個文件,gt.txt

第1個值:視頻幀號
第2個值:目標運動軌跡的ID號
第3-6值:bbox座標(x, y, w, h)
第7個值:目標軌跡是否進入考慮範圍(0:忽略, 1:active)
第8個值:該軌跡對應的目標種類

第9個值:
box的visibility ratio,表示目標運動時被其餘目標box包含/覆蓋或者目標之間box邊緣裁剪狀況。 

1.1.4 seqinfo.ini文件


視頻的基本信息介紹


2. 運行目標跟蹤器

python deep_sort_app.py \
--sequence_dir=./MOT16/test/MOT16-06 \
--detection_file=./resources/detections/MOT16_POI_test/MOT16-06.npy \
--min_confidence=0.3 \
--nn_budget=100 \
--display=True

#在本身生成的feature運行tracker
python deep_sort_app.py \
--sequence_dir=./MOT16/test/MOT16-01 \
--detection_file=./resources/detections/wemo_test/MOT16-01.npy \
--min_confidence=0.3 \
--nn_budget=100 \
--display=True

可選參數解釋:
--sequence_dir:視頻切成圖片序列的文件夾,包含幀序列,每一幀的幀號、目標的bbox、
--detection_file:檢測的權重文件 .npy
--output_file:輸出相似於gt.txt的文件格式,軌跡再也不是默認-1,發生變化
--min_confidence:檢測結果閾值。低於這個閾值的檢測結果將會被忽略
--nms_max_overlap:非極大抑制的閾值
--max_cosine_distance:餘弦距離的控制閾值
--nn_budget:描述的區域的最大值
--display:顯示目標追蹤結果

3. generating detections

generate features for persons re-identification.

python tools/generate_detections.py \
    --model=resources/networks/mars-small128.pb \
    --mot_dir=./MOT16/train \
    --output_dir=./resources/detections/MOT16_train

#自定義生成feature
python tools/generate_detections.py \
    --model=resources/networks/mars-small128.pb \
    --mot_dir=./MOT16/test \
    --output_dir=./resources/detections/wemo_test

--model:是模型框架的權重參數文件
輸入

輸出

4. 如何在本身的數據上運行deep_sort,實現目標追蹤?

4.1 test
  1. 須要視頻文件
  2. 須要目標檢測detection的權重文件(npy 文件)(ps:目標檢測框架和deep_sort框架應該一致)

效果:直觀來看還不錯,固然這是基於目標檢測的檢測的結果,若是檢測不到目標,tracking也沒法作。當人行走過程當中,被遮擋以後再次出現,目標ID仍是維持不變。(思考:這裏人通常是直線前行,若是目標在遮擋以後,掉頭再出現,可能ID就會變化)。

很大的問題:生成的視頻幀率很低,不到30FPS,肉眼能看出明顯卡頓。(網上說經過優化能夠達到高幀率,具體待查)

4.2 train

如何訓練?
餘弦度量學習方法

相關文章
相關標籤/搜索