基于Caffe ResNet-50网络实现图片分类(视频解码+同步推理)
该样例是基于Caffe ResNet-50网络来实现图片分类功能,芯片要求是Ascend310、310P和910。在开始前,首先要建议大家点击下方图片,报名CANN训练营活动,然后入群找小助手领取代金券,这样就可以零成本进行样例开发了。
本次样例使用的是vdec,VDEC(Video Decoder)负责将H264/H265格式的视频码流解码为YUV/RGB格式的图片。输入码流格式支持H264/H265,若码流中有坏帧、缺帧等情况,解码器VDEC可能会丢帧,下图是VDEC整个过程实现的流程图:
参考下方的链接进行样例体验:
环境准备
具体的步骤,可以参考我之前发的文章,这里简单介绍下,首先购买华为云弹性云服务器,如图:
通过下方链接下载CANN8版本的软件包和驱动:
https://www.hiascend.com/developer/download/community/result?module=cann
上传到服务器,执行命令升级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
输出如下图,代表样例执行成功:
- 点赞
- 收藏
- 关注作者
评论(0)