软硬件环境
- 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
文件就可以了。文件结构如下
测试效果
cd src
python social_distanciation_video_detection.py
程序运行后,在终端一直回车就好,使用默认的参数进行测试。当人物进入到蓝线范围内时,就会被系统用绿色框出来
当人物距离小于110像素时(这是默认值),系统会用红色框出来,表示社交距离不够
如果是其它测试视频的话,可能就需要进行校准了,方法如下
cd src
python calibrate_with_mouse.py
程序启动后,会要求用户输入测试视频的文件名、视频帧大小。默认值是 PETS2009.avi
和800像素,接着来到打开后的 opencv
窗口,使用鼠标左键分别点击4个点,顺序是右上、右下、左下和左上,这4个点连成一个四边形。
代码执行完成后,会将相应数据写入到配置文件 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