编译及运行应用

  1. 准备数据。

    1. 您可以从以下链接中获取ResNet-50网络的模型文件(*.prototxt)、预训练模型文件(*.caffemodel)。
      • ResNet-50网络的模型文件(*.prototxt):单击Link下载该文件。
      • ResNet-50网络的预训练模型文件(*.caffemodel):单击Link下载该文件。
    2. 参考ATC工具使用指南将ResNet-50网络转换为适配昇腾AI处理器的离线模型(*.om文件),转换模型时,需配置色域转换参数,用于将YUV420SP格式的图片转换为RGB格式的图片。

      切换到vpc_jpeg_resnet50_imagenet_classification样例所在目录,命令示例如下,从output参数设置的目录下获取om文件:

      atc --model=caffe_model/resnet50.prototxt --weight=caffe_model/resnet50.caffemodel --framework=0 --output=model/resnet50_aipp --soc_version=${soc_version} --insert_op_conf=caffe_model/aipp.cfg
      • --soc_version:昇腾AI处理器的版本,请根据实际情况替换。

        可从ATC安装路径的“atc/data/platform_config”目录下查看昇腾AI处理器的版本,对应“*.ini”文件的名字(不带.ini后缀)即为soc_version。

      • --output:生成的om文件建议命名为resnet50_aipp.om,并以管理员帐号将om文件上传到开发环境“ACLlib组件的安装目录\acllib\sample\acl_execute_model\acl_vpc_jpege_resnet50\model”目录下,否则在编译代码前,您还需要修改sample_process.cpp中的omModelPath参数值。
        const char* omModelPath = "../model/resnet50_aipp.om";
    3. 准备输入图片。

      请从以下链接获取该样例的输入图片,并以运行用户将获取的文件上传至开发环境“vpc_jpeg_resnet50_imagenet_classification样例目录\data”目录下。如果目录不存在,需自行创建。

      https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/models/aclsample/dvpp_vpc_8192x8192_nv12.yuv

      https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/models/aclsample/persian_cat_1024_1536_283.jpg

      https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/models/aclsample/wood_rabbit_1024_1061_330.jpg

      https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/models/aclsample/wood_rabbit_1024_1068_nv12.yuv

  2. 以管理员帐号登录开发环境,并切换到vpc_jpeg_resnet50_imagenet_classification样例所在的目录。
  3. 编译代码。

    1. 在样例目录下,创建目录用于存放编译文件,例如,本文中,依次创建的目录为“build\intermediates\soc”
    2. 以管理员身份执行cmd窗口,切换到“样例目录\build\intermediates\soc”目录下,执行cmake生成编译文件,在“样例目录\out\Debug”“样例目录\out\release”目录下生成可执行文件main.exe,将Debug或release目录下的main.exe复制到“样例目录\out”目录下,否则会导致运行可执行文件时找不到依赖的文件。

      “../../../src”表示CMakeLists.txt文件所在的目录,请根据实际目录层级修改。

      • Debug模式时的编译命令如下:
        cd 样例目录\build\intermediates\soc
        cmake ../../../src -DCMAKE_SKIP_RPATH=TRUE -G "Visual Studio 15 2017 Win64"
        cmake --build .
      • Release模式下的编译命令如下:
        cd 样例目录\build\intermediates\soc
        cmake ../../../src -DCMAKE_SKIP_RPATH=TRUE -G "Visual Studio 15 2017 Win64" -DCMAKE_CONFIGURATION_TYPES=release
        cmake --build . --config release

      当前样例的编码字符集为ASCII,编译命令默认都是ASCII编码字符集,不支持Unicode编码字符集,如需支持Unicode编码字符集,需用户自行适配代码。

  4. 运行应用。

    1. 以管理员帐号将开发环境的vpc_jpeg_resnet50_imagenet_classification样例目录及其子文件上传到运行环境(Host)。
    2. 以管理员帐号登录运行环境(Host)。
    3. 以管理员身份执行cmd窗口,切换到可执行文件main.exe所在的目录,运行可执行文件。
      1. 将两张*.jpg格式的解码成两张YUV420SP NV12格式的图片,缩放,再进行模型推理,分别得到两张图片的推理结果。
        main.exe 0
        图1 执行结果示例
      2. 将两张*.jpg格式的解码成两张YUV420SP NV12格式的图片,抠图,再进行模型推理,分别得到两张图片的推理结果。
        main.exe 1
        图2 执行结果示例
      3. 将两张*.jpg格式的解码成两张YUV420SP NV12格式的图片,抠图贴图,再进行模型推理,分别得到两张图片的推理结果。
        main.exe 2
        图3 执行结果示例
      4. 将一张YUV420SP格式的图片编码为*.jpg格式的图片。
        main.exe 3
        图4 执行结果示例
      5. 将一张分辨率为8192*8192的YUV420SP格式的图片缩放至4000*4000。
        main.exe 4
        图5 执行结果示例

      执行可执行文件成功后,同时会在main文件同级的result目录下生成结果文件,便于后期查看。结果文件如下:

      • dvpp_output_0:persian_cat_1024_1536_283.jpg图片经过缩放或抠图或抠图贴图之后的结果图片。
      • dvpp_output_1:wood_rabbit_1024_1061_330.jpg图片经过缩放或抠图或抠图贴图之后的结果图片。
      • model_output_0:persian_cat_1024_1536_283.jpg图片的模型推理结果,二进制文件。
      • model_output_0.txt:persian_cat_1024_1536_283.jpg图片的模型推理结果,txt文件。
      • model_output_1:wood_rabbit_1024_1061_330.jpg图片的模型推理结果,二进制文件。
      • model_output_1.txt:wood_rabbit_1024_1061_330.jpg图片的模型推理结果,txt文件。
      • jpege_output_0.jpg:wood_rabbit_1024_1068_nv12.yuv图片结果编码后的结果图片。
      • dvpp_vpc_4000x4000_nv12.yuv:dvpp_vpc_8192x8192_nv12.yuv图片缩放后的结果图片。