【CANN训练营】基于CANN 的行人检测和跟踪部署方案(Python)分享,欢迎大家体验,找Bug和提PR
前言
知道大家最关心有没有开源代码了?当然是有了,不仅有代码,连模型一并奉上,请访问如下方案链接,获取完成方案:
目前方案是基于昇腾官方仓库案例进行的二次开发,参考了众多开源代码,因不能一一记清,未能在这里列出具体作者,特表示感谢。方案使用的是acllite库,编程语言是Python
,已在ECS(x86 + Ascend 310)等云服务器侧做部署验证,欢迎大家体验,找Bug,提issue和PR。
特别说明:方案仅供学习使用,不保证精度,请不要用于商业或其他营利活动!
方案介绍
功能介绍:使用YOLOv4模型对视频进行预测推理,输出带有推理结果的视频文件。这里提供两种功能:
-
对输入视频中的行人进行检测、跟踪,绘制运行轨迹和判断行人间的社交距离,并给予风险提示,此外,还提供当前画面行人数量,通过视频指定位置的行人数量和总计行人数量的统计;
-
对输入视频进行目标检测(支持COCO数据集的80类目标检测)。
样例输入:视频文件。
样例输出:带推理结果的视频文件。
结果展示
功能1 结果展示
更为详细的视频展示,请访问如下链接:
https://www.bilibili.com/video/BV19v4y1g73y/?vd_source=092c0569d08eeb664f58b8b0c4c4089b
功能2 结果展示
更为详细的视频展示,请访问如下链接:
https://www.bilibili.com/video/BV1h3411u7N1/?vd_source=092c0569d08eeb664f58b8b0c4c4089b
环境说明
你是否担心自己没有硬件设备或配置好的环境,不需要担心,最近昇腾社区举办的“【CANN体验官第五期】”活动,可以完美解决你的问题,如果你报名该活动,就可以申请代金券和得到官方推送的镜像环境,不需要额外的花费,就可以直接运行本方案了。这里提供上述活动链接(绝非特意打广告哈!):
https://bbs.huaweicloud.cn/forum/thread-189980-1-1.html
运行说明
环境配置
请检查以下条件要求是否满足,如不满足请按照备注进行相应处理。如果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样例)选择需要的依赖完成安装 |
方案准备
-
获取源码包。
- 命令行方式下载。
# 开发环境,非root用户命令行中执行以下命令下载源码仓。 cd ${HOME} git clone https://git.openi.org.cn/tjulitianyi/YOLOV4_Pedestrian_Tracking_and_Social_Distance_Judgment_video.git
- 命令行方式下载。
-
获取此应用中所需要的原始网络模型。
模型名称 模型说明 模型下载路径 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 -
获取样例需要的测试视频。
# 执行以下命令,进入样例的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即可。
-
执行以下命令,将开发环境的 **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)对输入视频进行目标检测(支持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。当然,也可以直接在本帖下方回复,期待各位大佬的批评指正,谢谢。
未完待续…
- 点赞
- 收藏
- 关注作者
评论(0)