【深度学习】人群距离监测 DeepSOCIAL 最全汉化论文+源码导读
內(nèi)容一覽:在疫情期間,公共場所中盡量避免人群聚集,可以有效控制疫情擴(kuò)散。英國利茲大學(xué)的研究團(tuán)隊(duì)開源了 DeepSOCIAL 人群距離監(jiān)測項(xiàng)目,通過 YOLOv4+SORT 的方式快速實(shí)現(xiàn)了這一應(yīng)用。
關(guān)鍵詞:DeepSOCIAL 疫情應(yīng)用 目標(biāo)檢測
由英國利茲大學(xué)交通研究院的研究員 Mahdi Rezaei 開源的 DeepSOCIAL 人群距離監(jiān)測項(xiàng)目,成了最近的網(wǎng)紅應(yīng)用。
DeepSOCIAL 是通過 YOLOv4 實(shí)現(xiàn)行人檢測,再用 SORT 實(shí)現(xiàn)目標(biāo)跟蹤,并通過單目視覺IPM 逆透視映射實(shí)現(xiàn)距離估計(jì),最終評(píng)估人群距離監(jiān)測和風(fēng)險(xiǎn)評(píng)估。
DeepSOCIAL?實(shí)現(xiàn)效果展示
之所以 DeepSOCIAL 能成為網(wǎng)紅教程,不僅僅因?yàn)樵擁?xiàng)目在當(dāng)前疫情中的實(shí)用性強(qiáng),也因?yàn)樵擁?xiàng)目效果極佳,平均精度達(dá)到 99.8 %,實(shí)時(shí)速度為 24.1 fps,可用于自主車輛、人體行為識(shí)別、異常檢測、體育運(yùn)動(dòng)、人群分析等領(lǐng)域。
目標(biāo)檢測階段的整體模型結(jié)構(gòu)
線上源碼教程訪問 https://openbayes.com/console/open-tutorials/containers/Qgf0mAml82l
?行人檢測:YOLO v4
在 DeepSOCIAL 項(xiàng)目中選用了 YOLOv4 來實(shí)現(xiàn)行人目標(biāo)檢測,在論文中作者對(duì)比了幾種目標(biāo)檢測方法:RCNN、fast RCNN、faster RCNN、SSD、YOLO 在數(shù)據(jù)集 PASCAL Visual Object Classes(VOC)和MS COCO 中進(jìn)行了測試。
用目標(biāo)檢測中用于衡量識(shí)別精度與速度的:mAP 全類平均正確率(mean Average Precision)和 FPS 幀率(Frame Per Second)進(jìn)行評(píng)估。
最終選定了 YOLOv4 作為目標(biāo)檢測方法。
主流目標(biāo)檢測方法 mAP?測試結(jié)果
主流目標(biāo)檢測方法 FPS?測試結(jié)果
?行人跟蹤:SORT
在DeepSOCIAL 的行人目標(biāo)跟蹤方面,選用了Simple Online and Real-time(SORT)?算法。
人員檢測、ID分配、跟蹤和移動(dòng)軌跡展示效果
其中主要使用了卡爾曼濾波(Kalman Filter)結(jié)合匈牙利算法(Hungarian algorithm)解決動(dòng)作預(yù)測和數(shù)據(jù)關(guān)聯(lián)的問題。
?行人距離估計(jì):IPM 逆透視映射
DeepSOCIAL?項(xiàng)目中使用單目視覺,但是使用單個(gè)攝像機(jī),將三維世界場景投影到二維透視圖像平面,容易導(dǎo)致物體之間的像素距離失真。
通過應(yīng)用 IPM二維像素點(diǎn)(u,v)將被映射到
相應(yīng)的三維世界場景坐標(biāo)點(diǎn)(Xw,Yw,Zw)
在三維空間中,每個(gè)框的中心或參考點(diǎn)與三個(gè)參數(shù)?(x,y,z)相關(guān)聯(lián),而在從相機(jī)接收到的圖像中,原來的三維空間被縮減為二維(x,y),深度參數(shù)(z)不可用。
為了應(yīng)用校準(zhǔn)的 IPM(逆透視映射)過渡,首先需要通過設(shè)置深度參數(shù) z = 0 來消除透視效果,進(jìn)行攝像機(jī)校準(zhǔn),同時(shí)還需要知道相機(jī)的位置,高度,視野等。
?項(xiàng)目運(yùn)行代碼
1.引入依賴
from IPython.display import display, Javascript, Image from base64 import b64decode, b64encode import os import cv2 import numpy as np import PIL import io import html import time import matplotlib.pyplot as plt %matplotlib inline2.編譯 YOLOv4
%cd darknet !sed -i 's/OPENCV=0/OPENCV=1/' Makefile !sed -i 's/GPU=0/GPU=1/' Makefile !sed -i 's/CUDNN=0/CUDNN=1/' Makefile !sed -i 's/CUDNN_HALF=0/CUDNN_HALF=1/' Makefile !sed -i 's/LIBSO=0/LIBSO=1/' Makefile3.使用 Darknet 的 Python 接口
# 導(dǎo)入 Darknet 函數(shù)來執(zhí)行對(duì)象檢測 from darknet2 import *# 載入 YOLOv4 架構(gòu) network, class_names, class_colors = load_network("cfg/yolov4.cfg", "cfg/coco.data", "/openbayes/input/input0/DeepSocial.weights") width = network_width(network) height = network_height(network)# 在圖像上運(yùn)行 Darknet helper 函數(shù) def darknet_helper(img, width, height):darknet_image = make_image(width, height, 3)img_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)img_resized = cv2.resize(img_rgb, (width, height),interpolation=cv2.INTER_LINEAR)# 獲取圖像比例,將邊界框轉(zhuǎn)換為適當(dāng)?shù)某叽鏸mg_height, img_width, _ = img.shapewidth_ratio = img_width/widthheight_ratio = img_height/height# 運(yùn)行 Darknet 模型copy_image_from_bytes(darknet_image, img_resized.tobytes())detections = detect_image(network, class_names, darknet_image)free_image(darknet_image)return detections, width_ratio, height_ratio4.使用 SORT 實(shí)現(xiàn)實(shí)時(shí)跟蹤目標(biāo)
!pip install filterpy from sort import * mot_tracker ? ?= Sort(max_age=25, min_hits=4, iou_threshold=0.3)5.輸入設(shè)置
Input ? ? ? ? ? ?= "/openbayes/input/input1/OxfordTownCentreDataset.avi" ReductionFactor ?= 2 calibration ? ? ?= [[180,162],[618,0],[552,540],[682,464]]6.DeepSocial 參數(shù)設(shè)置和函數(shù)引入
&
7.推理過程
&
8.展示結(jié)果
6&7&8 三部分完整運(yùn)行代碼過長,請(qǐng)移步至
https://openbayes.com/console/open-tutorials/containers/Qgf0mAml82l
或點(diǎn)擊原文閱讀查看完整代碼
—— 完 ——
往期精彩回顧適合初學(xué)者入門人工智能的路線及資料下載機(jī)器學(xué)習(xí)及深度學(xué)習(xí)筆記等資料打印機(jī)器學(xué)習(xí)在線手冊深度學(xué)習(xí)筆記專輯《統(tǒng)計(jì)學(xué)習(xí)方法》的代碼復(fù)現(xiàn)專輯 AI基礎(chǔ)下載黃海廣老師《機(jī)器學(xué)習(xí)課程》視頻課黃海廣老師《機(jī)器學(xué)習(xí)課程》711頁完整版課件本站qq群554839127,加入微信群請(qǐng)掃碼:
總結(jié)
以上是生活随笔為你收集整理的【深度学习】人群距离监测 DeepSOCIAL 最全汉化论文+源码导读的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: threejs 用 ExtrudeGeo
- 下一篇: 谷歌浏览器怎么更新升级