华为Atlas 200 DK行人识别

人体检测

开发者将本Application部署至Atlas 200 DK或者AI加速云服务器上实现对本地mp4文件或者RTSP视频流进行解码,对视频帧中的行人和人脸进行检测并对其属性进行预测,生成结构化信息发送至Server端进行保存、展示的功能。

前提条件

部署此Sample前,需要准备好以下环境:

  • 已完成Mind Studio的安装。
  • 已完成Atlas 200 DK开发者板与Mind Studio的连接,交叉编译器的安装,SD卡的制作及基本信息的配置等。

软件准备

运行此Sample前,需要按照此章节获取源码包,并进行相关的环境配置。

  1. 获取源码包。

    将https://gitee.com/Atlas200DK/sample-videoanalysisperson仓中的代码以Mind Studio安装用户下载至Mind Studio所在Ubuntu服务器的任意目录,例如代码存放路径为:/home/ascend/sample-videoanalysisperson

  2. 获取此应用中所需要的原始网络模型。

    参考表1获取此应用中所用到的原始网络模型及其对应的权重文件,并将其存放到Mind Studio所在Ubuntu服务器的任意目录,例如$HOME/ascend/models/videoanalysispersion。

    表 1 人体检测应用中使用模型

    模型名称

    模型说明

    模型下载路径

    face_detection

    人脸检测网络模型。

    此模型是基于Caffe的Resnet10-SSD300模型转换后的网络模型。

    请参考https://gitee.com/HuaweiAscend/models/tree/master/computer_vision/object_detect/face_detection目录中README.md下载原始网络模型文件及其对应的权重文件。

    pedestrian

    人体特征推理模型。

    基于Caffe的VeSPA模型。

    请参考https://gitee.com/HuaweiAscend/models/tree/master/computer_vision/classification/pedestrian目录中README.md下载原始网络模型文件及其对应的权重文件。

    inception_age

    年龄识别网络模型。

    基于Tensorflow的Inception V3模型。

    请参考https://gitee.com/HuaweiAscend/models/tree/master/computer_vision/classification/inception_age目录中README.md下载原始网络PB模型文件。

    inception_gender

    性别识别网络模型。

    基于Tensorflow的Inception V3模型。

    请参考https://gitee.com/HuaweiAscend/models/tree/master/computer_vision/classification/inception_gender目录中README.md下载原始网络PB模型文件。

    vgg_ssd

    目标检测网络模型。

    基于Caffe的SSD512模型。

    请参考https://gitee.com/HuaweiAscend/models/tree/master/computer_vision/object_detect/vgg_ssd目录中README.md下载原始网络模型文件及其对应的权重文件。

  3. 将原始网络模型转换为Davinci模型。

    1. 在Mind Studio操作界面的顶部菜单栏中选择“Tool > Convert Model”,进入模型转换界面。

    2. 在弹出的Convert Model操作界面中,Model File与Weight File分别选择2中下载的模型文件和权重文件。

      • Model Name填写为表1中对应的模型名称

      • Tensorflow模型转换时,需要手动增加一栏input shape并进行填写。W、H、C的值和输入节点名可以在netron(https://lutzroeder.github.io/netron/)中通过查看pb模型结构图获取。

      • inception_age模型中age_inference一次处理10张图片,所以转换时需要将Input Shape的N填写为10。

        图 1 inception_age模型转换配置
        华为Atlas 200 DK行人识别_第1张图片

      • inception_gender模型中gender_inference一次处理10张图片,所以转换时需要将Input Shape的N填写为10。

        图 2 inception_gender模型转换配置
        华为Atlas 200 DK行人识别_第2张图片

    3. 单击OK开始转换模型。

      face_detection、vgg_ssd模型在转换的时候,会有报错,报错信息如下图所示。

      图 3 模型转换错误信息
      华为Atlas 200 DK行人识别_第3张图片

      此时在DetectionOutput层的Suggestion中选择SSDDetectionOutput,并点击Retry。

      模型转换成功后,后缀为.om的Davinci模型存放地址为$HOME/tools/che/model-zoo/my-model/xxx。

  4. 将转换好的模型文件(.om文件)上传到1中源码所在路径的“sample-videoanalysisperson/script”目录下。

  5. 以Mind Studio安装用户登录Mind Studio所在Ubuntu服务器,并设置环境变量DDK_HOME。

    vim ~/.bashrc

    执行如下命令在最后一行添加DDK_HOME及LD_LIBRARY_PATH的环境变量。

    export DDK_HOME=/home/XXX/tools/che/ddk/ddk

    export LD_LIBRARY_PATH=$DDK_HOME/uihost/lib

     说明:

    • XXX为Mind Studio安装用户,/home/XXX/tools为DDK默认安装路径。
    • 如果此环境变量已经添加,则此步骤可跳过。

    输入:wq!保存退出。

    执行如下命令使环境变量生效。

    source ~/.bashrc

部署

  1. 以Mind Studio安装用户进入人体检测应用代码所在根目录,如_/home/ascend/sample-videoanalysisperson_。

  2. 执行部署脚本,进行工程环境准备,包括ascenddk公共库的编译与部署、Presenter Server服务器的配置等操作,其中Presenter Server用于接收Application发送过来的数据并通过浏览器进行结果展示。

    **bash deploy.sh **host_ip model_mode

    • host_ip:对于Atlas 200 DK开发者板,即为开发者板的IP地址。对于AI加速云服务器,即为Host侧的IP地址。

    • model_mode代表模型文件的部署方式,默认为internet。

      • local:若Mind Studio所在Ubuntu系统未连接网络,请使用local模式,执行此命令前,需要参考依赖代码库下载将依赖代码库的下载到“sample-videoanalysisperson/script“目录下。
      • internet:在线部署,若Mind Studio所在Ubuntu系统已连接网络,请使用internet模式,在线下载依赖软件库。

    命令示例:

    bash deploy.sh 192.168.1.2 internet

    • 当提示“Please choose one to show the presenter in browser(default: 127.0.0.1):“时,请输入在浏览器中访问Presenter Server服务所使用的IP地址(一般为访问Mind Studio的IP地址)。
    • 当提示“Please input a absolute path to storage video analysis data:“时,请输入Mind Studio中的绝对路径用于存储视频解析数据,此路径Mind Studio用户需要有读写权限,若此路径不存在,脚本会自动创建。

    如图4所示,请在“Current environment valid ip list“中选择通过浏览器访问Presenter Server服务使用的IP地址,并输入存储视频解析数据的路径。

    图 4 工程部署示意图
    华为Atlas 200 DK行人识别_第4张图片

  3. 启动Presenter Server。

    执行如下命令在后台启动Video Analysis应用的Presenter Server主程序。

    python3 presenterserver/presenter_server.py --app video_analysis_person &

     说明:
    “presenter_server.py“在当前目录的“presenterserver“目录下,可以在此目录下执行python3 presenter_server.py -h或者python3 presenter_server.py --help查看“presenter_server.py“的使用方法。

    如图5所示,表示presenter_server的服务启动成功。

    图 5 Presenter Server进程启动

    使用上图提示的URL登录Presenter Server(仅支持Chrome浏览器),IP地址为2中输入的IP地址,端口号默为7011,如下图所示,表示Presenter Server启动成功。

    图 6 主页显示
    华为Atlas 200 DK行人识别_第5张图片

    Presenter Server、Mind Studio与Atlas 200 DK之间通信使用的IP地址示例如下图所示:

    图 7 IP地址示例
    华为Atlas 200 DK行人识别_第6张图片

    • Atlas 200 DK开发者板使用的IP地址为192.168.1.2(USB方式连接)。
    • Presenter Server与Atlas 200 DK通信的IP地址为UI Host服务器中与Atlas 200 DK在同一网段的IP地址,例如:192.168.1.223。
    • 通过浏览器访问Presenter Server的IP地址本示例为:10.10.0.1,由于Presenter Server与Mind Studio部署在同一服务器,此IP地址也为通过浏览器访问Mind Studio的IP。
  4. 视频结构化应用支持解析本地视频和RTSP视频流。

    • 如果需要解析本地视频,需要将视频文件传到Host侧。

      例如将视频文件person.mp4上传到Host侧的“/home/HwHiAiUser/sample“目录下。

       说明:
      支持H264与H265格式的MP4文件,如果MP4文件需要剪辑,建议使用开源工具ffmpeg,使用其他工具剪辑的视频文件ffmpeg工具可能不支持解析。

    • 如果仅解析RTSP视频流,本步骤可跳过。

运行

  1. 运行Video Analysis程序。

    在“/home/ascend/sample-videoanalysisperson“目录下执行如下命令运行Video Analysis应用程序。

    bash run_videoanalysispersonapp.sh host_ip presenter_view_appname channel1 [channel2] &

    • host_ip:对于Atlas 200 DK开发者板,即为开发者板的IP地址。对于AI加速云服务器,即为Host侧的IP地址。
    • presenter_view_app_name:用户自定义的在PresenterServer界面展示的View Name,此View Name需要在Presenter Server展示界面唯一,,只能是大小写字母、数字、“_”的组合,位数3-20。
    • channel1:为Host侧的视频文件的绝对路径,需要加上双引号,当只存在视频文件时。Channel2可以省略。
    • channel2:为RTSP视频流的URL,需要加上双引号,当只存在RTSP视频流时需要使用” ”对channel1进行占位。

    视频文件运行的命令示例如下所示:

    bash run_videoanalysispersonapp.sh 192.168.1.2 video "/home/HwHiAiUser/sample/person.mp4" &

    RTSP视频流的命令示例如下所示:

    bash run_videoanalysispersonapp.sh 192.168.1.2 video " " "rtsp://192.168.2.37:554/cam/realmonitor?channel=1&subtype=0" &

     说明:
    当前RTSP视频流只支持rtsp://ip:port/path格式,如果需要使用其它格式的url,需要把video_decode.cpp中的IsValidRtsp函数去除,或者直接返回true,跳过正则表达式匹配。

  2. 使用启动Presenter Server服务时提示的URL登录 Presenter Server 网站(仅支持Chrome浏览器),详细可参考3。

     说明:
    Video Analysis的Presenter Server最多支持2个 presenter_view_app_name 同时显示。

    页面左侧树结构列出了视频所属app name以及通道名,中间列出了抽取的视频帧大图以及检测出的目标小图,点击下方小图后会在右侧列出详细的推理结果、评分。

    本应用支持人体属性检测和人脸属性检测。

    • 人体属性包括:

      Age:共分Age16-30,Age31-45,Age46-60,AgeAbove61四个年龄段; Backpack; CarryingOther; Casual lower; Casual upper; Formal lower; Hat; Jacket; Jeans; Leather Shoes; Logo; Short hair/Long hair; Male/Female; Messenger Bag; Muffler; No accessory; No carrying; Plaid; PlasticBags; Sandals; Shoes; Shorts; Short Sleeve; Skirt; Sneaker; Stripes; Sunglasses; Trousers; Tshirt; UpperOther; V-Neck。

      其中在视频分析界面的详细推理结果展示区域,Age、Male/Female、Short hair/Long hair是必展示属性,其他属性当置信度>0.5时则展示,否则不展示。

    • 人脸属性检测支持年龄和性别的的识别。

后续处理

  • 停止视频结构化应用

    若要停止人体检测应用程序,可执行如下操作。

    以Mind Studio安装用户在sample-videoanalysisperson目录下执行如下命令:

    bash stop_videoanalysispersonapp.sh host_ip

    host_ip:对于Atlas 200 DK开发者板,即为开发者板的IP地址。对于AI加速云服务器,即为Host的IP地址。。

    命令示例:

    bash stop_videoanalysispersonapp.sh 192.168.1.2

  • 停止Presenter Server服务

    Presenter Server服务启动后会一直处于运行状态,若想停止视频结构化应用对应的Presenter Server服务,可执行如下操作。

    以Mind Studio安装用户在Mind Studio所在服务器中执行如下命令查看视频结构化应用对应的Presenter Server服务的进程。

    ps -ef | grep presenter | grep video_analysis_person

    ascend@ascend-HP-ProDesk-600-G4-PCI-MT:~/sample-videoanalysisperson$ ps -ef | grep presenter | grep video_analysis_car
    ascend 3656 20313 0 15:10 pts/24?? 00:00:00 python3 presenterserver/presenter_server.py --app video_analysis_person

    如上所示,3656即为车辆检测应用对应的Presenter Server服务的进程ID。

    若想停止此服务,执行如下命令:

    kill -9 3656

依赖代码库下载

将依赖的软件库下载到“sample-videoanalysisperson/script“目录下。

表 2 依赖代码库下载

模块名称

模块描述

下载地址

EZDVPP

对DVPP接口进行了封装,提供对图片/视频的处理能力。

https://gitee.com/Atlas200DK/sdk-ezdvpp

下载后请保持文件夹名称为ezdvpp。

Presenter Agent

与Presenter Server进行交互的API接口。

https://gitee.com/Atlas200DK/sdk-presenter/tree/master

请获取此路径下的presenteragent文件夹,下载后请保持文件夹名称为presenteragent。

开源工具ffmpeg

实现对视频文件的解封

ffmpeg 4.0代码下载地址:https://gitee.com/mirrors/ffmpeg/tree/release%2F4.0/。

下载后,目录名称请使用ffmpeg。

tornado (5.1.0)

protobuf (3.5.1)

numpy (1.14.2)

Presenter Server依赖的Python库

可以在python官网https://pypi.org/上搜索相关包进行安装。

若使用pip3 install命令在线下载,可以使用如下命令指定相关版本进行下载,例如

pip3 install tornado==5.1.0 -i 指定库的安装源 --trusted-host 安装源的主机名

你可能感兴趣的:(DL)