【CANN训练营】基于CANN 的行人检测和跟踪部署方案(Python)分享,欢迎大家体验,找Bug和提PR

举报
Tianyi_Li 发表于 2022/07/26 23:03:56 2022/07/26
【摘要】 目前方案是基于昇腾官方仓库案例进行的二次开发,参考了众多开源代码,因不能一一记清,未能在这里列出具体作者,特表示感谢。方案使用的是acllite库,编程语言是`Python`,欢迎大家体验,找Bug,提issue和PR。

前言

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

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 结果展示

image.png

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

https://www.bilibili.com/video/BV19v4y1g73y/?vd_source=092c0569d08eeb664f58b8b0c4c4089b

功能2 结果展示

image.png

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

https://www.bilibili.com/video/BV1h3411u7N1/?vd_source=092c0569d08eeb664f58b8b0c4c4089b

环境说明

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

https://bbs.huaweicloud.com/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样例)选择需要的依赖完成安装

方案准备

  1. 获取源码包。

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

    模型名称 模型说明 模型下载路径
    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

  3. 获取样例需要的测试视频。

    # 执行以下命令,进入样例的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.2300(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
    
  2. 运行工程。

    (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。当然,也可以直接在本帖下方回复,期待各位大佬的批评指正,谢谢。

未完待续…

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。