0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于昇腾AI | 英码科技EA500I使用AscendCL实现垃圾分类和视频物体分类应用

英码嵌入式 2024-05-01 08:26 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

现如今,人工智能迅猛发展,AI赋能产业发展的速度正在加快,“AI+”的需求蜂拥而来,但AI应用快速落地的过程中仍存在很大的挑战:向下需要适配的硬件,向上需要完善的技术支持,两者缺一不可。


基于此,昇腾推出了系列化行业SDK和参考设计,通过把千行百业细分场景的开发经验和行业知识沉淀下来、水平复制,从而大幅度降低门槛、简化开发、提升效率。而英码科技是昇腾重要的APN合作伙伴、金牌分销商,具有较强的自主设计硬件能力,双方紧密携手,打造软硬结合、更符合行业需求的算力底座,赋能产业快速、低成本数字化转型。今天来介绍英码科技EA500I边缘计算盒子使用AscendCL快速实现垃圾分类和视频物体分类应用的案例,帮助开发者降低学习成本、简化开发流程,缩短项目周期!

案例概述①垃圾分类应用:基于AscendCL,使用EA500I实现对图片中的垃圾类别进行检测,并输出有检测类别的图片;


②视频物体分类应用:基于GoogLeNet分类网络,使用EA500I实现对视频帧中的物体进行识别分类,并将分类的结果展示在PC网页上。



案例说明本案例底层原理逻辑请参考华为昇腾AscendCL<垃圾分类>,和<视频物体分类>案例。


前置条件

627aa50c-0751-11ef-9118-92fbcf53809c.jpg

基于EA500I实现垃圾分类应用

1环境安装

注意事项:


➢以下操作以普通用户HwHiAiUser安装CANN包为例说明,推荐使用root用户进行操作,如果是root用户,请将安装准备中所有的${HOME}修改为/usr/local。

➢推荐按照本文档路径进行操作,如安装在自定义路径可能会导致环境冲突等问题


1、配置相关环境

# 以安装用户在任意目录下执行以下命令,打开.bashrc文件。vi ~/.bashrc # 在文件最后一行后面添加如下内容。source ${HOME}/Ascend/ascend-toolkit/set_env.shsource /home/work/MindX_SDK/mxVision-5.0.RC3/set_env.sh
export 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}

2模型获取&转换

# 进入案例路径,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

3测试数据获取

# 创建并进入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.jpg wget https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/models/garbage_picture/dirtycloth.jpg# 进入案例运行路径 cd ../src

4运行案例

运行python代码:

# 此处的data为测试数据路径python3 classify_test.py ../data/

➢运行成功后如无报错会显示以下信息:


6299d2f6-0751-11ef-9118-92fbcf53809c.png

5案例展示

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

基于EA500I实现视频物体分类应用

1环境安装

注意事项:


➢以下操作以普通用户HwHiAiUser安装CANN包为例说明,推荐使用root用户进行操作,如果是root用户,请将安装准备中所有的${HOME}修改为/usr/local。

➢推荐按照本文档路径进行操作,如安装在自定义路径可能会导致环境冲突等问题。


1、配置相关环境

# 以安装用户在任意目录下执行以下命令,打开.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/ #如路径中没有相关头文件,可跳过该命令

2、安装opencv

# 执行以下命令安装opencv (注:请确保安装的版本是3.x)sudo apt-get install libopencv-dev# 如果安装的opencv版本为4.x,请执行下列命令链接对应头文件sudo ln -s /usr/include/opencv4/opencv2 /usr/include/


3、安装protobuf&presentagent

# 安装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

2模型转换&获取

注意事项:


➢本案例使用基于Caffe的GoogLeNet模型,获取模型的命令已提供,如果开发者需要更多模型信息可参考:https://gitee.com/ascend/ModelZoo-TensorFlow/tree/master/TensorFlow/contrib/cv/googlenet/ATC_googlenet_caffe_AE

# 进入案例路径,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

3编译运行案例

1、执行编译脚本

# 进入脚本路径cd ${HOME}/samples/cplusplus/level2_simple_inference/1_classification/googlenet_imagenet_video/scripts# 赋予脚本权限 chmod +x sample_build.sh # 执行编译脚本bash sample_build.sh

➢执行编译脚本后请根据实际情况选择arm/x86格式,在EA500I上进行操作请选择:arm


634ec864-0751-11ef-9118-92fbcf53809c.png


➢编译脚本中会自动下载相关视频素材:cat.mp4,如开发者使用其它素材,可以在sample_build.sh处删除该命令

6358e79a-0751-11ef-9118-92fbcf53809c.png

➢编译完成后会生成相关文件并提示complete


6364de24-0751-11ef-9118-92fbcf53809c.png

2、执行脚本运行案例

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

➢执行运行脚本后,如果有本设备有多个ip,请选择能连通外网的ip并进行输入,例:10.1.30.111


63b4423e-0751-11ef-9118-92fbcf53809c.png


➢执行成功后,会提示successfully,并提供相关的网页链接


63d7b732-0751-11ef-9118-92fbcf53809c.png

➢运行脚本默认读取cat.mp4素材,如开发者使用其它素材,可以在sample_run.sh处更改素材路径


63f83520-0751-11ef-9118-92fbcf53809c.png

4案例展示

打开浏览器输入提供的网页链接与端口号,例:10.1.30.111:7007


➢进入下图界面后,等待状态栏变为绿色,可以单击“Refresh“刷新,当有数据时相应的Channel 的Status变成绿色。


➢状态栏正常后,点击右侧的View Name下的名字 ,例:classify

➢进入视频物体分类界面后,会在视频左上角显示检测的物体类别,视频上方显示视频帧率,开发者可进行截图、录像等功能。

5相关FAQ

1、安装protobuf&presentagent时执行${THIRDPART_PATH}/bin/protoc presenter_message.proto --cpp_out=./ 报错:protoc not such file or directory


➢该报错可能是protobuf安装问题:

# 回到protobuf安装路径cd /usr/local/probuf# 再次执行make installmake install# 查看${THIRDPART_PATH}/bin/下是否有protoc

2、执行编译脚本时报错如下图:


644a7060-0751-11ef-9118-92fbcf53809c.png

➢该报错可能是opencv版本问题:

# 进入报错代码vi ../src/classify_process.cpp# 修改报错代码第279行(请根据实际代码行数修改)修改成:cv::IMWRITE_JPEG_QUALITY# 执行命令保存文件并退出:wq!# 重新执行编译脚本bash sample_build.sh

结语

以上就是英码科技EA500I边缘计算盒子基于昇腾AscendCL快速实现垃圾分类和视频物体分类应用的案例。选购英码科技基于昇腾AI芯片推出的边缘计算产品,即可参照以上流程快速实现相关应用,大幅降低开发学习时间,缩短项目周期!如有技术问题和产品定制需求,欢迎留言交流~

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 硬件
    +关注

    关注

    11

    文章

    3555

    浏览量

    68741
  • AI
    AI
    +关注

    关注

    89

    文章

    38090

    浏览量

    296533
  • 人工智能
    +关注

    关注

    1813

    文章

    49734

    浏览量

    261495
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    【启扬方案】基于RK3576的智能垃圾分类站应用解决方案

    的智能技术,结合传感器、人工智能和互联网技术,实现了自动化的垃圾分类和管理。通过智能识别系统,可以准确识别分类不同垃圾,提高
    的头像 发表于 12-04 17:29 247次阅读
    【启扬方案】基于RK3576的智能<b class='flag-5'>垃圾</b><b class='flag-5'>分类</b>站应用解决方案

    【 HD200I A2(20T)】基于 310B 的智能计算模组

    HD200IA2(20T)是一款基于华为 310B 的高性能 AI 智能计 算模组。该模组将华为的 310B 芯片集成在了一个 82
    的头像 发表于 11-17 14:54 293次阅读
    【 HD200<b class='flag-5'>I</b> A2(20T)】基于<b class='flag-5'>昇</b><b class='flag-5'>腾</b> 310B 的智能计算模组

    AI赋能未来:2025AI技术研讨会·深圳站圆满召开!

    10月25日,由华为技术有限公司&华强半导体集团主办,深圳市小眼睛科技有限公司和云尖信息技术有限公司协办的“2025AI技术研讨会·深圳站”在深圳市福田区华强科创广场成功举办。本次研讨会
    的头像 发表于 10-31 11:00 1109次阅读
    <b class='flag-5'>昇</b><b class='flag-5'>腾</b><b class='flag-5'>AI</b>赋能未来:2025<b class='flag-5'>昇</b><b class='flag-5'>腾</b><b class='flag-5'>AI</b>技术研讨会·深圳站圆满召开!

    国产AI芯片真能扛住“算力内卷”?海思的这波操作藏了多少细节?

    最近行业都在说“算力是AI的命门”,但国产芯片真的能接住这波需求吗? 前阵子接触到海思910B,实测下来有点超出预期——7nm工艺下算力直接拉到256 TFLOPS,比上一代提升了40%,但功耗
    发表于 10-27 13:12

    【HD300I 】青翼凌云科技基于 310P 的全国产化智能计算模组

    HD300I 是一款基于 310P 的全国产化智能计算模组。该模 组将 310P 芯片集成在了一个 140*80mm 的板卡上,可以
    的头像 发表于 09-24 19:45 1714次阅读
    【HD300<b class='flag-5'>I</b> 】青翼凌云科技基于<b class='flag-5'>昇</b><b class='flag-5'>腾</b> 310P 的全国产化智能计算模组

    RFID在垃圾分类中的核心优势

    RFID在垃圾分类中的核心优势精准溯源每个居民或单位的垃圾桶配备唯一编码的RFID标签,系统可记录每次投放的时间、地点和责任人,实现垃圾来源
    的头像 发表于 09-23 11:08 372次阅读
    RFID在<b class='flag-5'>垃圾</b><b class='flag-5'>分类</b>中的核心优势

    广州黄埔城管携手海康威视打造垃圾分类智慧管理系统

    走进广州黄埔社区,"无异味、无污渍、无混投"的垃圾投放点已成为新日常。四色分类垃圾桶整齐摆放,清新空气与整洁环境让居民倍感舒心。
    的头像 发表于 08-06 10:28 706次阅读

    RFID标签在垃圾分类的应用

    RFID系统,可以实时获取垃圾的位置和状态信息,便于及时调整管理计划。自动化:RFID可以与自动管理系统结合,实现垃圾分类的自动化,减少人力成本。三、具体应用场景1
    的头像 发表于 07-31 16:48 629次阅读
    RFID标签在<b class='flag-5'>垃圾</b><b class='flag-5'>分类</b>的应用

    智能客服驱动效率和体验升级,上海电信+AI的一次民生应用实践

    上海电信+AI的一次民生应用实践
    的头像 发表于 07-30 23:44 2705次阅读
    智能客服驱动效率和体验升级,上海电信+<b class='flag-5'>昇</b><b class='flag-5'>腾</b><b class='flag-5'>AI</b>的一次民生应用实践

    中软国际推出金融AI解决方案和一体机v1.0

    近日,中软国际重磅推出金融AI解决方案和一体机v1.0,该方案基于AI基础软硬件平台,完
    的头像 发表于 03-28 17:05 1001次阅读

    创思远达与合作推动AI PC应用创新

    近日,端侧智能领域创新者创思远达携手,基于算力平台正式发布一系列AIPC应用。双方深度融合了
    的头像 发表于 03-25 10:22 1062次阅读

    (原创)310B(8T/20T)算力主板定制方案

    310B(20T)算力主板规格书 1.功能、性能与接口a)310B 20T算力处理器, 4个64位TAISHAN V200M处理器核,最高主频1.8GHz,计算加速器如下:1)
    发表于 03-16 21:43

    润和软件将持续深化“+DeepSeek”技术路线

    (以下简称“润和软件”)作为生态核心伙伴受邀出席,人工智能研究院AI总工朱凯分享了基于“ + openEuler + OpenHar
    的头像 发表于 03-08 09:39 1122次阅读

    云轴科技ZStack智塔携手AI实现DeepSeek模型部署

    DeepSeek为人工智能AI产业带来一场革命,为企业级AI应用私有化部署场景(Private AI)注入强劲动力。作为企业级私有化AI Infra平台,云轴科技ZStack智塔携手
    的头像 发表于 02-18 09:59 1244次阅读
    云轴科技ZStack智塔携手<b class='flag-5'>昇</b><b class='flag-5'>腾</b><b class='flag-5'>AI</b><b class='flag-5'>实现</b>DeepSeek模型部署

    迅龙软件出席华为APN伙伴大会,获APN钻石伙伴授牌及两项大奖

    2025年2月15日,华为APN伙伴大会在深圳顺利举办。本次大会汇聚来自能源、交通、制造、教育等各行各业的APN合作伙伴,共同探讨APN产业生态的新机遇与发展路径,分享
    的头像 发表于 02-17 17:04 1394次阅读
    迅龙软件出席华为<b class='flag-5'>昇</b><b class='flag-5'>腾</b>APN伙伴大会,获<b class='flag-5'>昇</b><b class='flag-5'>腾</b>APN钻石伙伴授牌及两项大奖