写点什么

基于 Caffe ResNet-50 网络实现图片分类(视频解码 + 同步推理)

作者:x
  • 2024-06-25
    山东
  • 本文字数:1095 字

    阅读完需:约 4 分钟

该样例是基于 Caffe ResNet-50 网络来实现图片分类功能,芯片要求是 Ascend310、310P 和 910。在开始前,首先要建议大家点击下方图片,报名 CANN 训练营活动,然后入群找小助手领取代金券,这样就可以零成本进行样例开发了。


本次样例使用的是 vdec,VDEC(Video Decoder)负责将 H264/H265 格式的视频码流解码为 YUV/RGB 格式的图片。输入码流格式支持 H264/H265,若码流中有坏帧、缺帧等情况,解码器 VDEC 可能会丢帧,下图是 VDEC 整个过程实现的流程图:


参考下方的链接进行样例体验:

https://gitee.com/ascend/samples/tree/master/cplusplus/level2_simple_inference/1_classification/vdec_resnet50_classification

环境准备

具体的步骤,可以参考我之前发的文章,这里简单介绍下,首先购买华为云弹性云服务器,如图:


通过下方链接下载 CANN8 版本的软件包和驱动:

https://www.hiascend.com/developer/download/community/result?module=cann

https://www.hiascend.com/hardware/firmware-drivers/community?product=2&model=3&cann=8.0.RC2.alpha001&driver=1.0.22.alpha

上传到服务器,执行命令升级 CANN 版本。

样例准备及运行

下载样例和 resnet50 模型等样例相关文件上传到对应的文件夹:


ATC 转换模型文件:

atc --model=caffe_model/resnet50.prototxt --weight=caffe_model/resnet50.caffemodel --framework=0 --soc_version=Ascend310 --insert_op_conf=caffe_model/aipp.cfg --output=model/resnet50_aipp

命令执行后,需要等待一会,我们借此正好简单介绍下上面参数的含义,--model 代表需要转换的模型文件;--weight 代表的是权重文件;--framework 为原始的框架,0 代表 caffe,1 代表 mindspore,3 代表 tensorflow,5 代表 onnx;soc_version 代表的是芯片型号,insert_op_conf 代表算子配置文件;--output 代表的是模型的输出位置。


编译运行

配置环境变量,需要注意的是 $HOME 是你的 CANN 安装路径,比如我的安装路径上在/usr/local,所以需要改成合适的路径,否则编译会失败。

export DDK_PATH=$HOME/Ascend/ascend-toolkit/latest

export NPU_HOST_LIB=$DDK_PATH/runtime/lib64/stub

创建编译文件存放位置:

mkdir -p build/intermediates/host

因为我的运行环境和开发环境一致,如果环境不一致,参考样例提供的样例命令执行,进入文件夹并编译:


cd build/intermediates/host

cmake ../../../src -DCMAKE_CXX_COMPILER=g++ -DCMAKE_SKIP_RPATH=TRUE

如下图说明编译成功:


如果上面的环境配置错误,那么有可能在编译时会出现如下错误:

样例运行

切换到样例的 out 路径下,里面有个 main 文件,一般是有执行权限的,如果没有需要为其增加权限。

cd ../../../out  ./main

输出如下图,代表样例执行成功:



用户头像

x

关注

还未添加个人签名 2020-03-27 加入

还未添加个人简介

评论

发布
暂无评论
基于Caffe ResNet-50网络实现图片分类(视频解码+同步推理)_x_InfoQ写作社区