前言

知道大家最关心有没有开源代码了?当然是有了,不仅有代码,连模型一并奉上,请访问如下方案链接,获取完成方案:

https://git.openi.org.cn/tjulitianyi/YOLOV4_Pedestrian_Tracking_and_Social_Distance_Judgment_video_CANN

目前方案是基于昇腾官方仓库案例进行的二次开发,参考了众多开源代码,因不能一一记清,未能在这里列出具体作者,特表示感谢。方案使用的是acllite库,编程语言是Python,已在ECS(x86 + Ascend 310)等云服务器侧做部署验证,欢迎大家体验,找Bug,提issue和PR

特别说明:方案仅供学习使用,不保证精度,请不要用于商业或其他营利活动!

方案介绍

功能介绍:使用YOLOv4模型对视频进行预测推理,输出带有推理结果的视频文件。这里提供两种功能:

  1. 对输入视频中的行人进行检测、跟踪,绘制运行轨迹和判断行人间的社交距离,并给予风险提示,此外,还提供当前画面行人数量,通过视频指定位置的行人数量和总计行人数量的统计;
  2. 对输入视频进行目标检测(支持COCO数据集的80类目标检测)。

样例输入:视频文件。
样例输出:带推理结果的视频文件。

结果展示

功能1 结果展示

python 代码跟踪 python行人跟踪_python 代码跟踪

更为详细的视频展示,请访问如下链接:

功能2 结果展示

python 代码跟踪 python行人跟踪_目标检测_02

更为详细的视频展示,请访问如下链接:

环境说明

你是否担心自己没有硬件设备或配置好的环境,不需要担心,最近昇腾社区举办的“【CANN体验官第五期】”活动,可以完美解决你的问题,如果你报名该活动,就可以申请代金券和得到官方推送的镜像环境,不需要额外的花费,就可以直接运行本方案了。这里提供上述活动链接(绝非特意打广告哈!):


运行说明

环境配置

请检查以下条件要求是否满足,如不满足请按照备注进行相应处理。如果CANN版本升级,请同步检查第三方依赖是否需要重新安装(5.0.4及以上版本第三方依赖和5.0.4以下版本有差异,需要重新安装)。

条件

要求

备注

CANN版本

>=5.0.4

请参考CANN样例仓介绍中的安装步骤完成CANN安装,如果CANN低于要求版本请根据版本说明切换samples仓到对应CANN版本

硬件要求

Atlas200DK/Atlas300(ai1s)

当前已在Atlas200DK和Atlas300测试通过,产品说明请参考硬件平台 ,其他产品可能需要另做适配

第三方依赖

opencv,python-acllite

请参考第三方依赖安装指导(python样例)选择需要的依赖完成安装

方案准备

  1. 获取源码包。
  • 命令行方式下载。
# 开发环境,非root用户命令行中执行以下命令下载源码仓。    
cd ${HOME}     
git clone https://git.openi.org.cn/tjulitianyi/YOLOV4_Pedestrian_Tracking_and_Social_Distance_Judgment_video.git
  1. 获取此应用中所需要的原始网络模型。

模型名称

模型说明

模型下载路径

yolov4

基于onnx-YOLOV4的目标检测模型。

请参考https://www.hiascend.com/zh/software/modelzoo/detail/1/abb7e641964c459398173248aa5353bc 下载原始模型。

# 为了方便下载,在这里直接给出原始模型下载及模型转换命令,可以直接拷贝执行。也可以参照上表在modelzoo中下载并手工转换,以了解更多细节。     
cd ${HOME}/YOLOV4_Pedestrian_Tracking_and_Social_Distance_Judgment_video/model    
wget https://temp-dataset.obs.cn-north-4.myhuaweicloud.com:443/cann/temp/yolov4_dynamic_bs.onnx  
atc --model=./yolov4_dynamic_bs.onnx --framework=5 --output=yolov4_bs1 --input_format=NCHW --soc_version=Ascend310 --input_shape="input:1,3,608,608" --out_nodes="Conv_434:0;Conv_418:0;Conv_402:0"

若上述方法无法下载,可到百度网盘下载。下载链接为:
链接:https://pan.baidu.com/s/1zFrrbOwK0_EKRZva2RIhRQ?pwd=a3bl
提取码:a3bl

  1. 获取样例需要的测试视频。
# 执行以下命令,进入样例的data文件夹中,下载对应的测试图片。
cd $HOME/YOLOV4_Pedestrian_Tracking_and_Social_Distance_Judgment_video/data
wget https://temp-dataset.obs.cn-north-4.myhuaweicloud.com:443/cann/temp/camera0.mp4
cd ../src

若上述方法无法下载,可到百度网盘下载。下载链接为:
链接:https://pan.baidu.com/s/1mzEjAAkEqIsuwVBPGtUbTA?pwd=xcft
提取码:xcft

方案运行

注:开发环境与运行环境合一部署,请跳过步骤1,直接执行步骤2即可。

  1. 执行以下命令,将开发环境的 **YOLOV4_Pedestrian_Tracking_and_Social_Distance_Judgment_video ** 目录上传到运行环境中,例如 /home/HwHiAiUser,并以HwHiAiUser(运行用户)登录运行环境(Host)。
# 【xxx.xxx.xxx.xxx】为运行环境ip,200DK在USB连接时一般为192.168.1.2,300(ai1s)为对应的公网ip。
scp -r $HOME/YOLOV4_Pedestrian_Tracking_and_Social_Distance_Judgment_video HwHiAiUser@xxx.xxx.xxx.xxx:/home/HwHiAiUser
ssh HwHiAiUser@xxx.xxx.xxx.xxx
cd ${HOME}/YOLOV4_Pedestrian_Tracking_and_Social_Distance_Judgment_video/src
  1. 运行工程。
    (1)对输入视频进行目标检测(支持COCO数据集的80类目标检测)。
python3.6 yolov4.py ../data/camera0.mp4 0

(2)对输入视频中的行人进行检测、跟踪,绘制运行轨迹和判断行人间的社交距离,并给予风险提示,此外,还提供当前画面行人数量,通过视频指定位置的行人数量和总计行人数量的统计。

python3.6 yolov4.py ../data/camera0.mp4 1

查看结果

运行完成后,输出视频存在out目录下(注意输出视频默认与输入视频名称一致,若多次运行或运行不同功能会覆盖之前结果)。

对输入视频进行目标检测(支持COCO数据集的80类目标检测)的演示视频

对输入视频进行目标检测,支持COCO数据集的80类目标检测,会对检测目标绘制矩形框并在框的左上角显示类别。

对输入视频中的行人进行检测、跟踪,绘制运行轨迹和判断行人间的社交距离,并给予风险提示,此外,还提供当前画面行人数量,通过视频指定位置的行人数量和总计行人数量的统计的演示视频

对输入视频中的行人进行检测、跟踪,绘制运行轨迹和判断行人间的社交距离,并给予风险提示,如果行人距离过近,会提示“High Risk",远离后会显示“Low Risk”,此外,还在视频左上角提供当前画面行人数量,通过视频指定位置(默认设定为视频中间,颜色为绿色)的行人数量和总计行人数量的统计;

常见错误

请参考常见问题定位对遇到的错误进行排查。如果wiki中不包含,请在samples仓提issue反馈。

特别说明

本方案尽量详细描述操作,但可能还是有些不足,如果大家运行中遇到什么问题,或者觉得README有需要修改的地方,可以直接在仓库提issue或PR。当然,也可以直接在本帖下方回复,期待各位大佬的批评指正,谢谢。

未完待续…