Skip to content

Latest commit

 

History

History
297 lines (237 loc) · 32.2 KB

File metadata and controls

297 lines (237 loc) · 32.2 KB

中文|英文

通用分类网络应用

本Application支持运行在Atlas 200 DK或者AI加速云服务器上,实现了对常见的分类网络的推理功能并输出前n个推理结果。

前提条件

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

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

软件准备

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

  1. 获取源码包。

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

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

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

    表 1 通用分类网络应用使用模型

    模型名称

    模型说明

    模型下载路径

    alexnet

    图片分类推理模型。

    是基于Caffe的AlexNet模型。

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

    caffenet

    图片分类推理模型。

    是基于Caffe的CaffeNet模型。

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

    densenet

    图片分类推理模型。

    是基于Caffe的DenseNet121模型。

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

    googlenet

    图片分类推理模型。

    是基于Caffe的GoogLeNet模型。

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

    inception_v2

    图片分类推理模型。

    是基于Caffe的Inception V2模型。

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

    inception_v3

    图片分类推理模型。

    是基于Caffe的Inception V3模型。

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

    inception_v4

    图片分类推理模型。

    是基于Caffe的Inception V4模型。

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

    mobilenet_v1

    图片分类推理模型。

    是基于Caffe的MobileNet V1模型。

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

    mobilenet_v2

    图片分类推理模型。

    是基于Caffe的MobileNet V2模型。

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

    resnet18

    图片分类推理模型。

    是基于Caffe的ResNet 18模型。

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

    resnet50

    图片分类推理模型。

    是基于Caffe的ResNet 50模型。

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

    resnet101

    图片分类推理模型。

    是基于Caffe的ResNet 101模型。

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

    resnet152

    图片分类推理模型。

    是基于Caffe的ResNet 152模型。

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

    vgg16

    图片分类推理模型。

    是基于Caffe的VGG16模型。

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

    vgg19

    图片分类推理模型。

    是基于Caffe的VGG19模型。

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

    squeezenet

    图片分类推理模型。

    是基于Caffe的SqueezeNet模型。

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

    dpn98

    图片分类推理模型。

    是基于Caffe的dpn98模型。

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

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

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

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

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

      • googlenet、inception_v2模型中,通用分类网络应用一次处理一张图片,所以转换时需要将Input Shape的N修改为1

        图 1 Input Shape配置示例

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

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

  4. 以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-classification_。

  2. 执行部署脚本,进行工程环境准备,包括公共库的编译与部署、应用的编译与部署等操作。

    bash deploy.sh host_ip model_mode

    • host_ip:对于Atlas 200 DK开发者板,即为开发者板的IP地址。对于AI加速云服务器,即为Host的IP地址。
    • model_mode 代表模型文件的部署方式,默认为internet。
      • local:若Mind Studio所在Ubuntu系统未连接网络,请使用local模式,执行此命令前,需要参考公共代码库下载将依赖的公共代码库ezdvpp下载到“sample-classification/script“目录下。
      • internet:若Mind Studio所在Ubuntu系统已连接网络,请使用internet模式,在线下载依赖代码库ezdvpp。

    命令示例:

    bash deploy.sh 192.168.1.2 internet

  3. 参考表1将需要使用的已经转换好的Davinci离线模型文件与需要推理的图片上传至Host侧任一属组为HwHiAiUser用户的目录。

    例如将模型文件alexnet.om上传到Host侧的“/home/HwHiAiUser/models“目录下。

    图片要求如下:

    • 格式:jpg、png、bmp。
    • 输入图片宽度:16px~4096px之间的整数。
    • 输入图片高度:16px~4096px之间的整数。

运行

  1. 在Mind Studio所在Ubuntu服务器中,以HwHiAiUser用户SSH登录到Host侧。

    ssh HwHiAiUser@host_ip

    对于Atlas 200 DK,host_ip默认为192.168.1.2(USB连接)或者192.168.0.2(NIC连接)。

    对于AI加速云服务器,host_ip即为当前Mind Studio所在服务器的IP地址。

  2. 进入贯通网络的可执行文件所在路径。

    cd ~/HIAI_PROJECTS/ascend_workspace/classification/out

  3. 执行应用程序。

    执行run_classification.py脚本会将推理结果在执行终端直接打印显示。

    命令示例如下所示:

    python3 run_classification.py -m ~/models/alexnet.om -w 227 -h 227 -i

    ./example.jpg -n 10

    • -m/--model_path:离线模型存储路径。
    • -w/model_width:模型的输入图片宽度,为16~4096之间的整数,请参考表1在Github上查看所使用模型文件的Readme,获取模型要求的输入数据的宽和高。
    • -h/model_height:模型的输入图片高度,为16~4096之间的整数,请参考表1在Github上查看所使用模型文件的Readme,获取模型要求的输入数据的宽和高。
    • -i/input_path:输入图片的路径,可以是目录,表示当前目录下的所有图片都作为输入(可以指定多个输入)。
    • -n/top_n:输出前n个推理结果。

    其他详细参数请执行python3 run_classification.py --help命令参见帮助信息。

公共代码库下载

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

表 2 依赖代码库下载

模块名称

模块描述

下载地址

EZDVPP

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

https://github.com/Ascend/sdk-ezdvpp

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