
基于EA500I实现垃圾分类应用
1、配置相关环境
# 以安装用户在任意目录下执行以下命令,打开.bashrc文件。vi ~/.bashrc# 在文件最后一行后面添加如下内容。source ${HOME}/Ascend/ascend-toolkit/set_env.shsource /home/work/MindX_SDK/mxVision-5.0.RC3/set_env.shexport CPU_ARCH=`arch`export THIRDPART_PATH=${HOME}/Ascend/thirdpart/${CPU_ARCH} #代码编译时链接samples所依赖的相关库文件export PYTHONPATH=${THIRDPART_PATH}/acllite:$PYTHONPATH #设置pythonpath为固定目录export LD_LIBRARY_PATH=${THIRDPART_PATH}/lib:$LD_LIBRARY_PATH #运行时链接库文件export INSTALL_DIR=${HOME}/Ascend/ascend-toolkit/latest #CANN软件安装后的文件存储路径,根据安装目录自行修改export DDK_PATH=${HOME}/Ascend/ascend-toolkit/latest #声明CANN环境export NPU_HOST_LIB=${DDK_PATH}/runtime/lib64/stub #声明CANN环境# 执行命令保存文件并退出。:wq!# 执行命令使其立即生效。source ~/.bashrc# 创建samples相关依赖文件夹mkdir -p ${THIRDPART_PATH}# 下载源码并安装gitcd ${HOME}sudo apt-get install gitgit clone https://gitee.com/ascend/samples.git# 拷贝公共文件到samples相关依赖路径中cp -r ${HOME}/samples/common ${THIRDPART_PATH}# 拷贝media_mini等so文件以及相关头文件mkdir -p ${INSTALL_DIR}/drivercp /usr/lib64/libmedia_mini.so ${INSTALL_DIR}/driver/ #如路径中没有相关so文件,可跳过该命令cp /usr/lib64/libslog.so ${INSTALL_DIR}/driver/cp /usr/lib64/libc_sec.so ${INSTALL_DIR}/driver/cp /usr/lib64/libmmpa.so ${INSTALL_DIR}/driver/cp /usr/local/Ascend/include/peripheral_api.h ${INSTALL_DIR}/driver/ #如路径中没有相关头文件,可跳过该命令
2、安装python-acllite
# 安装ffmpeg部分依赖sudo apt-get install -y libavformat-dev libavcodec-dev libavdevice-dev libavutil-dev libswscale-dev# 安装其它依赖pip3 install --upgrade pippip3 install Cythonsudo apt-get install pkg-config libxcb-shm0-dev libxcb-xfixes0-dev# 安装avpip3 install av# 安装pillow 的依赖sudo apt-get install libtiff5-dev libjpeg8-dev zlib1g-dev libfreetype6-dev liblcms2-dev libwebp-dev tcl8.6-dev tk8.6-dev python-tk# 安装numpy和PILpip3 install numpypip3 install Pillow# 将acllite目录拷贝到第三方文件夹中。后续编译依赖libmedia_mini.so,编译完成后需替换此处的acllite文件夹cp -r ${HOME}/samples/python/common/acllite ${THIRDPART_PATH}# C码库编译,本库包含Atlas200dk的板载摄像头访问接口,该接口是在C码(lib/src/目录)基础上做的python封装。cd ${HOME}/samples/python/common/acllite/lib/srcmake# 编译生成的libatalsutil.so在../atlas200dk/目录下。# 再次将acllite目录拷贝到第三方文件夹中,保证当前使用的是更新后的代码。cp -r ${HOME}/samples/python/common/acllite ${THIRDPART_PATH}
# 进入案例路径,samples为前置步骤中下载的案例包cd ${HOME}/samples/python/contrib/garbage_picture# 在model路径下下载原始模型wget https://obs-9be7.obs.cn-east-2.myhuaweicloud.com:443/003_Atc_Models/AE/ATC%20Model/garbage/mobilenetv2.air --no-check-certificatewget https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/models/garbage_picture/insert_op_yuv.cfg --no-check-certificate# 使用ATC工具进行模型转换atc --model=./mobilenetv2.air --framework=1 --output=garbage_yuv --soc_version=Ascend310B1 --insert_op_conf=./insert_op_yuv.cfg --input_shape="data:1,3,224,224" --input_format=NCHW
# 创建并进入data文件夹cd ${HOME}/samples/python/contrib/garbage_picturemkdir datacd data# 下载图片数据wget https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/models/garbage_picture/newspaper.jpgwget https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/models/garbage_picture/bottle.jpgwget https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/models/garbage_picture/dirtycloth.jpg# 进入案例运行路径cd ../src
运行python代码:
# 此处的data为测试数据路径python3 classify_test.py ../data/
➢运行成功后如无报错会显示以下信息:

在案例根目录out文件夹下会生成带有检测类别的图片:



基于EA500I实现视频物体分类应用
# 以安装用户在任意目录下执行以下命令,打开.bashrc文件。vi ~/.bashrc# 在文件最后一行后面添加如下内容。export CPU_ARCH=`arch`export THIRDPART_PATH=${HOME}/Ascend/thirdpart/${CPU_ARCH} #代码编译时链接samples所依赖的相关库文件export LD_LIBRARY_PATH=${THIRDPART_PATH}/lib:$LD_LIBRARY_PATH #运行时链接库文件export INSTALL_DIR=${HOME}/Ascend/ascend-toolkit/latest #CANN软件安装后的文件存储路径,根据安装目录自行修改export DDK_PATH=${HOME}/Ascend/ascend-toolkit/latest #声明CANN环境export NPU_HOST_LIB=${DDK_PATH}/runtime/lib64/stub #声明CANN环境# 执行命令保存文件并退出。:wq!# 执行命令使其立即生效。source ~/.bashrc# 创建samples相关依赖文件夹mkdir -p ${THIRDPART_PATH}# 下载源码并安装gitcd ${HOME}sudo apt-get install gitgit clone https://gitee.com/ascend/samples.git# 拷贝公共文件到samples相关依赖路径中cp -r ${HOME}/samples/common ${THIRDPART_PATH}# 拷贝media_mini等so文件以及相关头文件mkdir -p ${INSTALL_DIR}/drivercp /usr/lib64/libmedia_mini.so ${INSTALL_DIR}/driver/ #如路径中没有相关so文件,可跳过该命令cp /usr/lib64/libslog.so ${INSTALL_DIR}/driver/cp /usr/lib64/libc_sec.so ${INSTALL_DIR}/driver/cp /usr/lib64/libmmpa.so ${INSTALL_DIR}/driver/cp /usr/local/Ascend/include/peripheral_api.h ${INSTALL_DIR}/driver/ #如路径中没有相关头文件,可跳过该命令
# 执行以下命令安装opencv (注:请确保安装的版本是3.x)sudo apt-get install libopencv-dev# 如果安装的opencv版本为4.x,请执行下列命令链接对应头文件sudo ln -s /usr/include/opencv4/opencv2 /usr/include/
# 安装protobuf相关依赖sudo apt-get install autoconf automake libtool# 下载protobuf源码cd ${HOME}git clone -b 3.13.x https://gitee.com/mirrors/protobufsource.git protobuf# 编译安装protobufcd protobuf./autogen.sh./configure --prefix=${THIRDPART_PATH}make cleanmake -j8sudo make install# 进入presentagent源码目录并编译cd ${HOME}/samples/cplusplus/common/presenteragent/proto${THIRDPART_PATH}/bin/protoc presenter_message.proto --cpp_out=./ #该步骤报错可参考FAQ# 开始编译presentagnetcd ..make -j8make install
# 进入案例路径,samples为前置步骤中下载的案例包cd ${HOME}/samples/cplusplus/level2_simple_inference/1_classification/googlenet_imagenet_video/model# 在model路径下下载原始模型wget https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/003_Atc_Models/AE/ATC%20Model/classification/googlenet.caffemodelwget https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/003_Atc_Models/AE/ATC%20Model/classification/googlenet.prototxt# 在model路径下下载模型配置文件wget https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/models/googlenet_imagenet_video/insert_op.cfg# 使用ATC工具进行模型转换atc --model="./googlenet.prototxt" --weight="./googlenet.caffemodel" --framework=0 --output="googlenet" --soc_version=Ascend310B1 --insert_op_conf=./insert_op.cfg --input_shape="data:1,3,224,224" --input_format=NCHW
# 进入脚本路径cd ${HOME}/samples/cplusplus/level2_simple_inference/1_classification/googlenet_imagenet_video/scripts# 赋予脚本权限chmod +x sample_build.sh# 执行编译脚本bash sample_build.sh



# 赋予脚本权限chmod +x sample_run.sh# 执行运行脚本bash sample_run.sh


# 回到protobuf安装路径cd /usr/local/probuf# 再次执行make installmake install# 查看${THIRDPART_PATH}/bin/下是否有protoc
# 进入报错代码vi ../src/classify_process.cpp# 修改报错代码第279行(请根据实际代码行数修改)修改成:cv::IMWRITE_JPEG_QUALITY# 执行命令保存文件并退出:wq!# 重新执行编译脚本bash sample_build.sh
结语
# end
一 往期推荐一
【昇腾产品应用】英码科技EA500I基于昇腾Mind SDK实现实时人体关键点检测
关于英码科技
你的AI咨询师
戳下面的原文阅读,了解更多!

