欢迎访问我的网站,希望内容对您有用,感兴趣的可以加入我们的社群。

社交距离检测

人工智能 迷途小书童 4年前 (2020-12-16) 4769次浏览 2个评论

软硬件环境

  • windows 10 64bit
  • anaconda with python 3.7
  • opencv 4.4.0
  • tensorflow 2.1

视频看这里

此处是 youtube 的播放链接,需要科学上网。喜欢我的视频,请记得订阅我的频道,打开旁边的小铃铛,点赞并分享,感谢您的支持。

简介

自从新型冠状肺炎爆发以来,社交距离检测,不管是在学界还是工业界都是一个热门话题。基本原理都是首先利用目标检测算法(可用的方法很多)检测出人,然后计算出人与人之间的距离,一般是像素距离,如果低于某一事先设定的值,就认为低于社交安全距离,系统随即发出警告。

本文介绍的这个开源项目,使用的模型是 faster_rcnn_inception_v2_coco,使用的是 tensorflow 深度学习框架。项目地址是: https://github.com/basileroth75/covid-social-distancing-detection

安装环境

创建 python 虚拟环境

conda create -n covid python=3.7
conda activate covid

接着去下载源码

git clone https://github.com/basileroth75/covid-social-distancing-detection.git
cd covid-social-distancing-detection

安装依赖库

pip install -r requirements.txt

# 原工程中漏了opencv依赖
pip install opencv-python

接下来去下载 tensorflow 的模型

链接:https://pan.quark.cn/s/e82b6ddd74a5

下载后解压到 models 文件夹下,其实在生产环境中使用 frozen_inference_graph.pb 文件就可以了。文件结构如下

social_distance_detect

测试效果

cd src
python social_distanciation_video_detection.py

程序运行后,在终端一直回车就好,使用默认的参数进行测试。当人物进入到蓝线范围内时,就会被系统用绿色框出来

social_distance_detect

当人物距离小于110像素时(这是默认值),系统会用红色框出来,表示社交距离不够

social_distance_detect

如果是其它测试视频的话,可能就需要进行校准了,方法如下

cd src
python calibrate_with_mouse.py

程序启动后,会要求用户输入测试视频的文件名、视频帧大小。默认值是 PETS2009.avi 和800像素,接着来到打开后的 opencv 窗口,使用鼠标左键分别点击4个点,顺序是右上、右下、左下和左上,这4个点连成一个四边形。

social_distance_detect

代码执行完成后,会将相应数据写入到配置文件 conf/config_birdview.yml

image_parameters:
  height_og: 800
  img_path: ../img/static_frame_from_video.jpg

  # 左下 
  p1:
  - 481
  - 411

  # 左上
  p2:
  - 482
  - 247

  # 右下
  p3:
  - 715
  - 411

  # 右上
  p4:
  - 693
  - 187
  size_frame: '800'
  width_og: 600

参考资料

喜欢 (2)

您必须 登录 才能发表评论!

(2)个小伙伴在吐槽
  1. 膜拜大佬!
    匿名2022-02-03 11:54
  2. 膜拜大佬~
    匿名2020-12-16 16:13