起飛 | 應用YOLOV4 - DeepSort 實現目標跟蹤

點擊上方AI算法與圖像處理」,選擇加"星標"或「置頂」html

重磅乾貨,第一時間送達python

本文分享利用yolov4+deepsort實現目標跟蹤,主要是講解如何使用,具體原理能夠根據文中的參考資料更加深刻學習。目前主流的趨勢是將算法更加易用,讓更多人感覺到視覺的魅力,也能讓更多有意向從事這個領域的人才進入。但受限於某些客觀的限制,好比github下載容易失敗,谷歌網盤沒法下載等,讓部分人不得不退卻。 git


所以,我想個人分享的價值就在於感覺視覺魅力的「最後一千米」。github

完整的權重文件和項目都放在後臺了,回覆「yolov4」 便可獲取。web


歡迎分享,幫助更多的小夥伴!
算法


使用YOLOv四、DeepSort和TensorFlow實現的目標跟蹤。YOLOv4是一種很是優秀的算法,它使用深卷積神經網絡來執行目標檢測。更詳細的介紹能夠參考以前文章。swift

吊打一切的YOLOv4的tricks彙總!附參考論文下載微信

今天分享的內容是將YOLOv4的輸出輸入到Deep-SORT(Simple Online and Realtime Tracking with a Deep Association Metric),以建立一個高精度的目標跟蹤器。網絡

demo效果展現:app


開始實操

一、克隆項目

git clone https://github.com/theAIGuysCode/yolov4-deepsort.git

二、環境配置

從github項目的requirements-gpu.txt 文件咱們能夠知道所須要的依賴文件內容(這裏以GPU版本爲例,也能夠選擇安裝requirements.txt ):

tensorflow-gpu==2.3.0rc0
opencv-python==4.1.1.26
lxml
tqdm
absl-py
matplotlib
easydict
pillow

強烈建議使用conda 建立虛擬環境避免污染其餘環境

# 建立虛擬環境
conda create xxx
# 激活虛擬環境

# 安裝依賴,這裏使用的TensorFlow 2 
pip install -r requirements-gpu.txt

PS:建議使用的 cuda 版本是 10.1

可能存在的問題,tensorflow和opencv下載太慢

# 經過指定源來下載https://www.cnblogs.com/whw1314/p/11748096.html
# 以pip 安裝 tensorflow-gpu==2.3.0rc0 爲例:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ --upgrade tensorflow-gpu==2.3.0rc0

三、預訓練模型下載

咱們的目標跟蹤器使用 YOLOv4 進行目標檢測,而後使用 deep sort 進行跟蹤。這裏提供官方的 YOLOv4 目標檢測模型 做爲預訓練模型,該模型可以檢測 80 類物體。

爲了便於演示,咱們將使用預訓練的權重做爲咱們的跟蹤器。下載預訓練的yolov4.weights文件:

https://drive.google.com/open?id=1cewMfusmPjYWbrnuJRuKhPMwRe_b9PaT

將下載好的權重文件複製到 data 文件夾下。

PS:若是你向使用 yolov4-tiny.weights,一個更小的模型,運行更快但精度略低一些,能夠在這裏下載

https://github.com/AlexeyAB/darknet/releases/download/darknet_yolo_v4_pre/yolov4-tiny.weights

使用 YOLOv4 運行跟蹤器

爲了將 YOLOv4 應用到目標跟蹤上,首先咱們須要將權重文件轉換 成對應的TensorFlow 模型,並將保存到 checkpoints 文件夾中。而後咱們須要運行 object_tracker.py 來實現目標跟蹤。

# Convert darknet weights to tensorflow model
python save_model.py --model yolov4 

# Run yolov4 deep sort object tracker on video
python object_tracker.py --video ./data/video/test.mp4 --output ./outputs/demo.avi --model yolov4

# Run yolov4 deep sort object tracker on webcam (set video flag to 0)
python object_tracker.py --video 0 --output ./outputs/webcam.avi --model yolov4

--output 後面接的是目標跟蹤輸出結果視頻文件的存儲路徑。

固然若是你但願使用YOLOv4-Tiny 能夠參考下面的操做

使用 YOLOv4-Tiny 運行跟蹤器

下面的命令將能夠運行yolov4-tiny模型。Yolov4-tiny容許你得到一個更高的速度(FPS)的跟蹤器,但可能在精度上有一點損失。確保你已經下載了權重文件,並將其添加到「data」文件夾中。

# save yolov4-tiny model
python save_model.py --weights ./data/yolov4-tiny.weights --output ./checkpoints/yolov4-tiny-416 --model yolov4 --tiny

# Run yolov4-tiny object tracker
python object_tracker.py --weights ./checkpoints/yolov4-tiny-416 --model yolov4 --video ./data/video/test.mp4 --output ./outputs/tiny.avi --tiny

輸出結果

如上所述,生成的視頻將保存到設置 --output 命令行標誌路徑的位置。這裏把它設置爲保存到‘output’文件夾。你也能夠經過調整--output_format標誌來改變保存的視頻類型,默認狀況下它被設置爲AVI編解碼器,也就是XVID。

示例視頻顯示跟蹤全部coco數據集類:

目標跟蹤器跟蹤的類別

默認狀況下,代碼被設置爲跟蹤coco數據集中的全部80個類,這是預先訓練好的YOLOv4模型所使用的。可是,能夠簡單地調整幾行代碼,以跟蹤80個類中的任意一個或任意一個組合。只選擇最多見的person類或car類很是容易。

要自定義選擇的類,所須要作的就是註釋掉object_tracker.py的第159行和第162行allowed_classes列表,並須要添加想要跟蹤的任何類。這些類能夠是模型訓練的80個類中的任何一個,能夠在data/classes/ cocoa .names文件中看有那些跟蹤類

這個示例將容許跟蹤person和car的類。

目標跟蹤demo將跟蹤的類別設置爲「person」

目標跟蹤demo將跟蹤的類別設置爲「car」

命令行參數參考

save_model.py: --weights: path to weights file (default: './data/yolov4.weights') --output: path to output (default: './checkpoints/yolov4-416') --[no]tiny: yolov4 or yolov4-tiny (default: 'False') --input_size: define input size of export model (default: 416) --framework: what framework to use (tf, trt, tflite) (default: tf) --model: yolov3 or yolov4 (default: yolov4)  object_tracker.py: --video: path to input video (use 0 for webcam) (default: './data/video/test.mp4') --output: path to output video (remember to set right codec for given format. e.g. XVID for .avi) (default: None) --output_format: codec used in VideoWriter when saving video to file (default: 'XVID) --[no]tiny: yolov4 or yolov4-tiny (default: 'false') --weights: path to weights file (default: './checkpoints/yolov4-416') --framework: what framework to use (tf, trt, tflite) (default: tf) --model: yolov3 or yolov4 (default: yolov4) --size: resize images to (default: 416) --iou: iou threshold (default: 0.45) --score: confidence threshold (default: 0.50) --dont_show: dont show video output (default: False) --info: print detailed info about tracked objects (default: False)

參考資料

  • tensorflow-yolov4-tflite:https://github.com/hunglc007/tensorflow-yolov4-tflite

  • Deep SORT Repository:

    https://github.com/nwojke/deep_sort

https://github.com/theAIGuysCode/yolov4-deepsort



下載1:OpenCV黑魔法


AI算法與圖像處公衆號後臺回覆:OpenCV黑魔法,即可下載小編精心編寫整理的計算機視覺趣味實戰教程


下載2 CVPR2020

AI算法與圖像處公衆號後臺回覆: CVPR2020 便可下載1467篇CVPR 2020論文
 
     
     
     
      
      
               
      
 
     
我的微信(若是沒有備註不拉羣!
請註明: 地區+學校/企業+研究方向+暱稱


以爲有趣就點亮在看吧




本文分享自微信公衆號 - AI算法與圖像處理(AI_study)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索