news 2026/4/23 14:28:36

【CANN训练营】体验基于Caffe ResNet-50网络实现图片分类实践操作

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【CANN训练营】体验基于Caffe ResNet-50网络实现图片分类实践操作

实例功能

很简单的一个实例,功能就是一个实现图片分类的功能,然后拓展实现以下

  • 将一张YUV420SP格式的图片编码为*.jpg格式的图片。
  • 将两张*.jpg格式的解码成两张YUV420SP NV12格式的图片,缩放,再进行模型推理,分别得到两张图片的推理结果后,处理推理结果,输出最大置信度的类别标识以及top5置信度的总和。
  • 将两张*.jpg格式的解码成两张YUV420SP NV12格式的图片,抠图,再进行模型推理,分别得到两张图片的推理结果后,处理推理结果,输出最大置信度的类别标识以及top5置信度的总和。
  • 将两张*.jpg格式的解码成两张YUV420SP NV12格式的图片,抠图贴图,再进行模型推理,分别得到两张图片的推理结果后,处理推理结果,输出最大置信度的类别标识以及top5置信度的总和。
  • 将YUV420SP NV12格式的图片(分辨率8192*8192)缩放,得到4000*4000。

环境及环境版本介绍

NPU:Ascend910(32GB)

CANN版本:CANN-8.0.RC3.alpha001

开始实践

创建conda环境

conda create -n cann_demopython=3.8-y conda activate cann_demo

安装CANN

wgethttps://ascend-repo.obs.cn-east-2.myhuaweicloud.com/Milan-ASL/Milan-ASL%20V100R001C20SPC703/Ascend-cann-toolkit_8.0.0.alpha003_linux-aarch64.runbashAscend-cann-toolkit_8.0.0.alpha003_linux-aarch64.run --full

激活环境变量

source/home/ma-user/Ascend/ascend-toolkit/set_env.sh

下载体验代码仓

gitclone -b v0.3-8.0.0.alpha003 https://gitee.com/Ascend/samples

进入示例文件夹

cdsamples/cplusplus/level2_simple_inference/1_classification/vpc_jpeg_resnet50_imagenet_classification

获取ResNet-50原始模型

下载模型CAFFE文件

cdcaffe_modelwgethttps://obs-9be7.obs.cn-east-2.myhuaweicloud.com/003_Atc_Models/AE/ATC%20Model/resnet50/resnet50.caffemodelwgethttps://obs-9be7.obs.cn-east-2.myhuaweicloud.com/003_Atc_Models/AE/ATC%20Model/resnet50/resnet50.prototxtcd..

安装依赖

pipinstalldecorator attrs psutil sympy scipy

转换模型

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

准备测试图片

cddatawgethttps://obs-9be7.obs.cn-east-2.myhuaweicloud.com/models/aclsample/dvpp_vpc_8192x8192_nv12.yuvwgethttps://obs-9be7.obs.cn-east-2.myhuaweicloud.com/models/aclsample/persian_cat_1024_1536_283.jpgwgethttps://obs-9be7.obs.cn-east-2.myhuaweicloud.com/models/aclsample/wood_rabbit_1024_1061_330.jpgwgethttps://obs-9be7.obs.cn-east-2.myhuaweicloud.com/models/aclsample/wood_rabbit_1024_1068_nv12.yuvcd..

编译运行

安装依赖

condainstall-c conda-forge cmake condainstall-c conda-forge binutils

创建目录

mkdir-p build/intermediates/host

设置环境变量

source/home/ma-user/Ascend/ascend-toolkit/set_env.shexportDDK_PATH=$HOME/Ascend/ascend-toolkit/latestexportNPU_HOST_LIB=$DDK_PATH/runtime/lib64/stub

生成编译文件

cdbuild/intermediates/host cmake../../../src -DCMAKE_CXX_COMPILER=g++ -DCMAKE_SKIP_RPATH=TRUEmake

运行

设置main文件权限为可运行

cd ../../../out chmod +x main

将两张*.jpg格式的解码成两张YUV420SP NV12格式的图片,缩放,再进行模型推理,分别得到两张图片的推理结果

./main0

运行结果

[INFO] ./main param, param represents a vpc feature and must be set [INFO] start check result fold:./result [INFO] make directory successfully. [INFO] check result success, fold exist [INFO] acl init success [INFO] set device 0 success [INFO] create context success [INFO] create stream success [INFO] get run mode success [INFO] dvpp init resource success [INFO] load model ../model/resnet50_aipp.om success [INFO] create model description success [INFO] create model output success [INFO] model input width 224, input height 224 [INFO] ------------------------------------------- [INFO] start to process picture:../data/persian_cat_1024_1536_283.jpg [INFO] call JpegD [INFO] call vpcResize [INFO] Process dvpp success [INFO] create model input success [INFO] model execute success [INFO] destroy model input success [INFO] result : classType[283], top1[0.969727], top5[0.979855] [INFO] ------------------------------------------- [INFO] start to process picture:../data/wood_rabbit_1024_1061_330.jpg [INFO] call JpegD [INFO] call vpcResize [INFO] Process dvpp success [INFO] create model input success [INFO] model execute success [INFO] destroy model input success [INFO] result : classType[331], top1[0.895508], top5[1.000134] [INFO] ------------------------------------------- [INFO] unload model success, modelId is 1 [INFO] destroy model description success [INFO] destroy model output success [INFO] execute sample success [INFO] end to destroy stream [INFO] end to destroy context [INFO] end to reset device 0 [INFO] end to finalize acl

将两张*.jpg格式的解码成两张YUV420SP NV12格式的图片,抠图,再进行模型推理,分别得到两张图片的推理结果。

./main1

运行结果

[INFO] ./main param, param represents a vpc feature and must be set [INFO] start check result fold:./result [INFO] check result success, fold exist [INFO] acl init success [INFO] set device 0 success [INFO] create context success [INFO] create stream success [INFO] get run mode success [INFO] dvpp init resource success [INFO] load model ../model/resnet50_aipp.om success [INFO] create model description success [INFO] create model output success [INFO] model input width 224, input height 224 [INFO] ------------------------------------------- [INFO] start to process picture:../data/persian_cat_1024_1536_283.jpg [INFO] call JpegD [INFO] call vpcCrop [INFO] Process dvpp success [INFO] create model input success [INFO] model execute success [INFO] destroy model input success [INFO] result : classType[283], top1[0.996094], top5[0.999629] [INFO] ------------------------------------------- [INFO] start to process picture:../data/wood_rabbit_1024_1061_330.jpg [INFO] call JpegD [INFO] call vpcCrop [INFO] Process dvpp success [INFO] create model input success [INFO] model execute success [INFO] destroy model input success [INFO] result : classType[330], top1[0.859863], top5[1.000106] [INFO] ------------------------------------------- [INFO] unload model success, modelId is 1 [INFO] destroy model description success [INFO] destroy model output success [INFO] execute sample success [INFO] end to destroy stream [INFO] end to destroy context [INFO] end to reset device 0 [INFO] end to finalize acl

将两张*.jpg格式的解码成两张YUV420SP NV12格式的图片,抠图贴图,再进行模型推理,分别得到两张图片的推理结果。

./main2

运行结果

[INFO] ./main param, param represents a vpc feature and must be set [INFO] start check result fold:./result [INFO] check result success, fold exist [INFO] acl init success [INFO] set device 0 success [INFO] create context success [INFO] create stream success [INFO] get run mode success [INFO] dvpp init resource success [INFO] load model ../model/resnet50_aipp.om success [INFO] create model description success [INFO] create model output success [INFO] model input width 224, input height 224 [INFO] ------------------------------------------- [INFO] start to process picture:../data/persian_cat_1024_1536_283.jpg [INFO] call JpegD [INFO] call vpcCropAndPaste [INFO] Process dvpp success [INFO] create model input success [INFO] model execute success [INFO] destroy model input success [INFO] result : classType[283], top1[0.431885], top5[0.751892] [INFO] ------------------------------------------- [INFO] start to process picture:../data/wood_rabbit_1024_1061_330.jpg [INFO] call JpegD [INFO] call vpcCropAndPaste [INFO] Process dvpp success [INFO] create model input success [INFO] model execute success [INFO] destroy model input success [INFO] result : classType[330], top1[0.685059], top5[0.969410] [INFO] ------------------------------------------- [INFO] unload model success, modelId is 1 [INFO] destroy model description success [INFO] destroy model output success [INFO] execute sample success [INFO] end to destroy stream [INFO] end to destroy context [INFO] end to reset device 0 [INFO] end to finalize acl

将一张YUV420SP格式的图片编码为*.jpg格式的图片。

./main3

运行结果

[INFO] ./main param, param represents a vpc feature and must be set [INFO] start check result fold:./result [INFO] check result success, fold exist [INFO] acl init success [INFO] set device 0 success [INFO] create context success [INFO] create stream success [INFO] get run mode success [INFO] dvpp init resource success [INFO] start to jpege picture ../data/wood_rabbit_1024_1068_nv12.yuv [INFO] end to destroy stream [INFO] end to destroy context [INFO] end to reset device 0 [INFO] end to finalize acl

将一张分辨率为8192*8192的YUV420SP格式的图片缩放至4000*4000。

./main4

运行结果

[INFO] ./main param, param represents a vpc feature and must be set [INFO] start check result fold:./result [INFO] check result success, fold exist [INFO] acl init success [INFO] set device 0 success [INFO] create context success [INFO] create stream success [INFO] get run mode success [INFO] dvpp process 8k resize begin [INFO] dvpp init resource success [INFO] dvpp process 8k resize success [INFO] end to destroy stream [INFO] end to destroy context [INFO] end to reset device 0 [INFO] end to finalize acl

整体运行结果

执行可执行文件成功后,同时会在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:图片缩放后的结果图片。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 11:34:31

老年人友好:快速构建大字版物品识别助老应用

老年人友好:快速构建大字版物品识别助老应用 为什么需要物品识别助老应用 随着老龄化社会的到来,许多老年人面临着药品识别困难、食品过期判断不准等日常问题。传统解决方案往往需要复杂的操作或依赖他人帮助,而AI图像识别技术可以很好地解决…

作者头像 李华
网站建设 2026/4/23 11:26:50

传统vs智能:VMware许可证管理效率对比

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 开发一个VMware许可证管理效率对比工具,功能包括:1. 模拟传统手动管理流程;2. 展示智能自动化管理流程;3. 时间消耗对比图表&#x…

作者头像 李华
网站建设 2026/4/20 20:30:47

AI+垃圾分类:快速搭建可回收物识别系统

AI垃圾分类:快速搭建可回收物识别系统 为什么需要可回收物识别系统 随着环保意识的提升,越来越多的企业和社区开始推行垃圾分类。但对于普通用户来说,准确区分可回收物、有害垃圾和其他垃圾并非易事。环保科技公司计划试点智能垃圾桶&#…

作者头像 李华
网站建设 2026/4/15 11:35:17

零基础玩转Backtrader:你的第一个量化策略只需5分钟

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 创建一个面向新手的Backtrader入门教学项目。包含:1) 最简单的均线交叉策略示例 2) 逐行代码注释 3) 数据加载说明 4) 回测设置教程 5) 结果可视化指导。要求使用Jupyt…

作者头像 李华
网站建设 2026/4/23 13:03:10

STM32F103C8T6实战应用案例分享

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 创建一个STM32F103C8T6实战项目,包含完整的功能实现和部署方案。点击项目生成按钮,等待项目生成完整后预览效果 最近在做一个智能家居控制器的项目&#xf…

作者头像 李华
网站建设 2026/4/22 0:55:31

比手动配置快10倍:AI自动修复Docker源失效

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 创建一个自动化脚本,功能包括:1.自动检测当前Docker源状态 2.智能选择2025年可用的最优国内镜像源 3.一键完成配置更新 4.生成配置前后速度对比报告 5.支持…

作者头像 李华