人群距离监测 DeepSOCIAL 最全汉化论文+源码导读
作者 |神经星星
来源 |HyperAI超神经
By 超神经
内容一览:在疫情期间,公共场所中尽量避免人群聚集,可以有效控制疫情扩散。英国利兹大学的研究团队开源了 DeepSOCIAL 人群距离监测项目,通过 YOLOv4+SORT 的方式快速实现了这一应用。
关键词:DeepSOCIAL 疫情应用 目标检测
由英国利兹大学交通研究院的研究员 Mahdi Rezaei 开源的 DeepSOCIAL 人群距离监测项目,成了最近的网红应用。
DeepSOCIAL 是通过 YOLOv4 实现行人检测,再用 SORT 实现目标跟踪,并通过单目视觉IPM 逆透视映射实现距离估计,最终评估人群距离监测和风险评估。
DeepSOCIAL 实现效果展示
之所以 DeepSOCIAL 能成为网红教程,不仅仅因为该项目在当前疫情中的实用性强,也因为该项目效果极佳,平均精度达到 99.8 %,实时速度为 24.1 fps,可用于自主车辆、人体行为识别、异常检测、体育运动、人群分析等领域。
目标检测阶段的整体模型结构
线上源码教程访问 https://openbayes.com/console/open-tutorials/containers/Qgf0mAml82l
行人检测:YOLO v4
在 DeepSOCIAL 项目中选用了 YOLOv4 来实现行人目标检测,在论文中作者对比了几种目标检测方法:RCNN、fast RCNN、faster RCNN、SSD、YOLO 在数据集 PASCAL Visual Object Classes(VOC)和MS COCO 中进行了测试。
用目标检测中用于衡量识别精度与速度的:mAP 全类平均正确率(mean Average Precision)和 FPS 帧率(Frame Per Second)进行评估。
最终选定了 YOLOv4 作为目标检测方法。
主流目标检测方法 mAP 测试结果
主流目标检测方法 FPS 测试结果
行人跟踪:SORT
在DeepSOCIAL 的行人目标跟踪方面,选用了Simple Online and Real-time(SORT) 算法。
人员检测、ID分配、跟踪和移动轨迹展示效果
其中主要使用了卡尔曼滤波(Kalman Filter)结合匈牙利算法(Hungarian algorithm)解决动作预测和数据关联的问题。
行人距离估计:IPM 逆透视映射
DeepSOCIAL 项目中使用单目视觉,但是使用单个摄像机,将三维世界场景投影到二维透视图像平面,容易导致物体之间的像素距离失真。
通过应用 IPM二维像素点(u,v)将被映射到
相应的三维世界场景坐标点(Xw,Yw,Zw)
在三维空间中,每个框的中心或参考点与三个参数 (x,y,z)相关联,而在从相机接收到的图像中,原来的三维空间被缩减为二维(x,y),深度参数(z)不可用。
为了应用校准的 IPM(逆透视映射)过渡,首先需要通过设置深度参数 z = 0 来消除透视效果,进行摄像机校准,同时还需要知道相机的位置,高度,视野等。
项目运行代码
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 inline
2.编译 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/' Makefile
3.使用 Darknet 的 Python 接口
# 导入 Darknet 函数来执行对象检测
from darknet2 import *# 载入 YOLOv4 架构
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)# 在图像上运行 Darknet helper 函数
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)# 获取图像比例,将边界框转换为适当的尺寸img_height, img_width, _ = img.shapewidth_ratio = img_width/widthheight_ratio = img_height/height# 运行 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_ratio
4.使用 SORT 实现实时跟踪目标
!pip install filterpy
from sort import *
mot_tracker = Sort(max_age=25, min_hits=4, iou_threshold=0.3)
5.输入设置
Input = "/openbayes/input/input1/OxfordTownCentreDataset.avi"
ReductionFactor = 2
calibration = [[180,162],[618,0],[552,540],[682,464]]
6.DeepSocial 参数设置和函数引入
&
7.推理过程
&
8.展示结果
6&7&8 三部分完整运行代码过长,请移步至
https://openbayes.com/console/open-tutorials/containers/Qgf0mAml82l
往
期
回
顾
资讯
AI被当做炒作工具?
资讯
Gartner 发布人工智能技术曲线
资讯
机器人越像人越好?被盯着会怎样?
资讯
AI不可以作为专利认证发明人
分享
点收藏
点点赞
点在看
相关文章:

堆和栈的差别(转过无数次的文章)
一、预备知识—程序的内存分配 一个由C/C编译的程序占用的内存分为下面几个部分 1、栈区(stack)— 由编译器自己主动分配释放 ,存放函数的參数值,局部变量的值等。其 操作方式相似于数据结构中的栈。 2、堆区&…

ARM WFI和WFE指令【转】
本文转载至:http://www.wowotech.net/armv8a_arch/wfe_wfi.html 1. 前言 蜗蜗很早以前就知道有WFI和WFE这两个指令存在,但一直似懂非懂。最近准备研究CPU idle framework,由于WFI是让CPU进入idle状态的一种方法,就下决心把它们弄清…

分享几个用 Python 给图片添加水印的方法,简单实用
作者 |俊欣来源 |关于数据分析与可视化今天来分享几种可以给图片添加水印的方法,都是十分的简单实用,大家在看了之后也可以私底下去自己试试,有些方法需要的代码量就比较少,有些方法需要的代码量就稍微多一些,那我们开…

Apache服务器下使用 ab 命令进行压力测试
ab是Apache超文本传输协议(HTTP)的性能测试工具。 其设计意图是描绘当前所安装的Apache的执行性能,主要是显示你安装的Apache每秒可以处理多少个请求. #ab -v可以看出其基本信息 #ab -n1000 -c10 http://localhost:81/t.php 这是一个基本命令 -n1000表示总请求数为…

《Objective-c》Foundation框架 -(字符串:NSString和NSMutableString)
一、NSString(不可变字符串) 1.创建字符串的方式:(利用对象方法) 方式一:最快速的创建 方式二: 方式三: 方式四: 方式五:NSUTF8StringEncoding 用到中文就可以…
基于Vue, Vuex 和 ElementUI 构建轻量单页Hexo主题Lite
Hexo Theme Lite Keep Calm, Lite and Writing.light single page blog application theme, using Vue, Vuex, ElementUI and so on. 一款轻量单页博客主题,基于Vue, Vuex 和 ElementUI 构建, 工具语言 Typescript Live Demo Demo | 在线演示 Github 项目地址 Previ…

怎么关闭wordpress评论
1、要是关闭某一篇文章的评论,在发表文章的时候,在下面有个“讨论”,把"允许评论"去掉勾选就可以了。 2、要是关闭所有文章的评论,在“设置”-“讨论设置”把“默认文章设置”中的“允许访客对新文章发表评论 ”不再勾…

ACM-ICPC历届世界总冠军名单1977-2015
为什么80%的码农都做不了架构师?>>> ACM-ICPC历届世界总冠军1977-2015 更新时间2016-04-20 17:39 年份总决赛地点冠军大学国家2015年摩洛哥马拉喀什聖彼得堡國立資訊科技、機械與光學大學 (破纪录解出全部题目)俄罗斯2014…

AI 盯上了外包司机,看后视镜就被扣分,奖金拜拜!
整理 | 梦依丹 来源 | CSDN 生活在科技领先时代的我们,每天无不被算法支配着,从衣食住行到工作中的决策参考。以前在电影中见到的AIer控制人类的场景,越来越现实化。 AI算法不断优化之下,有些企业直接通过AI来给员工打绩效&…

用 Handler 轻松实现专属Android定时器
今年在项目中发现为了实现倒计时、时间段的延迟执行、时间段的轮询执行任务,都是采用Handler postDelayed(runnable,delayMillis). 等等,这有毛病?那你将实现以上功能时、代码大概如下。 Handler handler new Handler(); int cou…

查看Firefox中的缓存
在firefox浏览器中可以在地址栏使用about:cache命令查看当前缓存。 Information about the Cache Service Disk cache device Number of entries:333Maximum storage size:458708 KiBStorage in use:3685 KiBCache Directory:C:\Documents and Settings\Administrator\Local …

技术大咖齐聚爱数智慧人机交互技术论坛 | CNCC2021
CNCC2021【人机交互技术的机遇与挑战】技术论坛将于2021年10月28日13:00-16:00在深圳国际会展中心CC105B召开,本次论坛由CCF主办,爱数智慧创始人兼CEO张晴晴担任论坛主席,邀请来自产学研各界技术大咖,就人机交互、智能语音技术的应…

响应式网页的布局设计
值得收藏的14款响应式前端开发框架 作为今年大热的设计趋势,响应式已然是设计师的标配技能。今天阿里的同学从响应式设计的布局类型、布局实现两方面深入讲解,有哪些实现布局的方式,该采用何种方式,都有相当专业细致的解答&#x…

halcon算子翻译——set_framegrabber_callback
名称 set_framegrabber_callback - 为图像采集设备注册一个回调函数。 用法 set_framegrabber_callback( : : AcqHandle, CallbackType, CallbackFunction, UserContext : ) 描述 算子set_framegrabber_callback为AcqHandle指定的图像采集设备注册一个回调函数。 参数CallbackF…

设置Sysctl.conf用以提高Linux的性能(最完整的sysctl.conf优化方案)
Sysctl是一个允许您改变正在运行中的Linux系统的接口。它包含一些 TCP/IP 堆栈和虚拟内存系统的高级选项, 这可以让有经验的管理员提高引人注目的系统性能。用sysctl可以读取设置超过五百个系统变量。基于这点,sysctl(8) 提供两个功能:读取和…

AI 天气预报准确度高于气象台,一张 GPU 1秒预测未来 90 分钟天气
编译 | 禾木木 出品 | AI科技大本营(ID:rgznai100) 此次 DeepMind 聚焦天气预报这一重大挑战,与英国气象局合作将 AI 应用于预测降雨。 在天气现象中,雨尤其重要,因为它会影响我们的日常决策。 我应该带伞吗࿱…

33.搜索插件——autocomplete
搜索插件的功能是通过插件的autocomplete()方法与文本框相绑定,当文本框输入字符时,绑定后的插件将返回与字符相近的字符串提示选择,调用格式如下: $(textbox).autocomplete(urlData,[options]); 其中,textbox参数为文…

React Native开源项目如何运行(附一波开源项目)
学习任何技术,最快捷的方法就是学习完基础语法,然后模仿开源项目进行学习,React Native也不例外。React Native推出了1年多了, 开源项目太多了,我们以其中一个举例子.给大家演示下如何运行开源项目.(前提是你已经搭建好…

http header头设置反向代理不缓存
一:概念说明 Expries:网页的cache过期时间,到指定日期网页cache失效 Last-Modified:网页的最新更新时间 Cache-Control 缓存控制 no-cache:不缓存网页 no-store:不缓存网页,如果有则删除之 must-revalidate:使之前,服务器响应使用…

985大学的高材生只会写代码片段,丢人吗?
很多同学在学习编程的时候都会遇到各种各样的难题,比如:没有合适的资料、学习过于碎片化、资料的质量层次不齐、看了很多视频自己动手时却还是不会、接触不到完整项目、无法检测自己的编程水平是不是企业所认可的……最近,小郭和小解同学也遇…

xcode6 dyld_sim is not owned by root
如果运行复制过来的xcode可能会这个提示,xcode6 dyld_sim is not owned by root解决方法打开终端 输入sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer

C语言关闭日志文件时忘了将日志文件全局变量指针置为NULL
C语言写了一个write_log函数以写日志,写了一个close_log_file函数以关闭日志,声明了一个日志文件全局变量文件指针plogFile。 write_log中首先判断plogFile是否为NULL,如果不为NULL,则直接引用plogFile写日志信息; 如果…

DeepMind 的新强化学习系统是迈向通用 AI 的一步吗?
作者 | Ben Dickson来源 | 数据实战派这篇文章是我们对 AI 研究论文评论的一部分,这是一系列探索人工智能最新发现的文章。对于已经精通围棋、星际争霸 2 和其他游戏的深度强化学习模型来说,人工智能系统的主要挑战之一是它们无法将其能力泛化到训练领域…

linux中iptables入门教程--设置静态防火墙
1、iptables介绍iptables是复杂的,它集成到linux内核中。用户通过iptables,可以对进出你的计算机的数据包进行过滤。通过iptables命令设置你的规则,来把守你的计算机网络──哪些数据允许通过,哪些不能通过,哪些通过的…

{好文备份}SQL索引一步到位
SQL索引一步到位(此文章为“数据库性能优化二:数据库表优化”附属文章之一) SQL索引在数据库优化中占有一个非常大的比例, 一个好的索引的设计,可以让你的效率提高几十甚至几百倍,在这里将带你一步步揭开他…

浅谈SQL Server中统计对于查询的影响
简介SQL Server查询分析器是基于开销的。通常来讲,查询分析器会根据谓词来确定该如何选择高效的查询路线,比如该选择哪个索引。而每次查询分析器寻找路径时,并不会每一次都去统计索引中包含的行数,值的范围等,而是根据一定条件创建…

《Effective C#中文版:改善C#程序的50种方法》读书笔记
一、用属性代替可访问的字段 1、.NET数据绑定只支持数据绑定,使用属性可以获得数据绑定的好处; 2、在属性的get和set访问器重可使用lock添加多线程的支持。 二、readonly(运行时常量)和const(编译时常量) …

100行代码,使用 Pygame 制作一个贪吃蛇小游戏!
作者 | 周萝卜来源 | 萝卜大杂烩相信我们大家都玩过贪吃蛇游戏,今天我们就从头一起来写一个贪吃蛇小游戏,只需要100多行的代码就完成了。用到的 Pygame 函数 贪吃蛇小游戏用到的函数功能描述init()初始化 pygamedisplay.set_mode()以元组或列表为参数创建…

Ubuntu + VirtualBox + windows xp互相访问
2019独角兽企业重金招聘Python工程师标准>>> 1 在ubuntu中安装最新版virtualbox,并且同时安装增强插件 2 设置xp网络位桥接网络 3 启动虚拟机中xp系统 4 关闭虚拟机中xp防火墙 virtualbox原来如此的爽,太方便了 第二天到公司使用网络的时候,基…

cocoapods使用教程
#####一、什么是CocoaPods CocoaPods是一个用来帮助我们管理第三方依赖库的工具。 #####二、安装cocoaPods 1.移除现有Ruby默认源 $gem sources --remove https://rubygems.org/ 复制代码2.使用新的源 $gem sources -a https://ruby.taobao.org/ 复制代码3.验证新源是否替…