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

    文章

    3247

    浏览量

    66099
  • AI
    AI
    +关注

    关注

    87

    文章

    30072

    浏览量

    268334
  • 人工智能
    +关注

    关注

    1791

    文章

    46820

    浏览量

    237457
收藏 人收藏

    评论

    相关推荐

    系列双处理边缘计算盒子DA500I,打造高效低延迟的视觉推理解决方案

    时效率较低,容易出现性能瓶颈,导致延迟增大;而GPU虽然在图像处理上表现优秀,但功耗较高且不能灵活应对多样化任务。 为应对这一挑战,科技推出系列首款双处理的边缘计算盒子—DA
    的头像 发表于 11-14 14:45 153次阅读
    <b class='flag-5'>昇</b><b class='flag-5'>腾</b>系列双处理边缘计算盒子DA<b class='flag-5'>500I</b>,打造高效低延迟的视觉推理解决方案

    基于PYNQ的智能垃圾分类系统

    的问题,减轻社会和居民的压力,如果可以实现可回收垃圾二次分类,对生活垃圾自主分类就显得尤为重要。于此,我们决定设计这样一个作品—智能识别自动
    发表于 07-09 18:44

    APN最佳伙伴—科技AI算力计算产品亮相WAIC 2024

    WAIC2024的成功举办,必将推动人工智能技术的发展实现新的跨越,科技也从中收获满满!未来,科技将继续深耕人工智能领域,持续为行业
    的头像 发表于 07-09 16:50 438次阅读
    <b class='flag-5'>昇</b><b class='flag-5'>腾</b>APN最佳伙伴—<b class='flag-5'>英</b><b class='flag-5'>码</b>科技<b class='flag-5'>AI</b>算力计算产品亮相WAIC 2024

    基于AI Yolov7模型迁移到平台EA500I边缘计算盒子的实操指南

    近年来,国产化替代的进程正在加快。在众多国产平台中,平台具有高性能、低功耗、易扩展、软件栈全面成熟等优势,其产品和技术在国内众多领域实现了广泛应用;作为
    的头像 发表于 06-26 17:51 576次阅读
    基于<b class='flag-5'>昇</b><b class='flag-5'>腾</b><b class='flag-5'>AI</b>  Yolov7模型迁移到<b class='flag-5'>昇</b><b class='flag-5'>腾</b>平台<b class='flag-5'>EA500I</b>边缘计算盒子的实操指南

    基于Vision Board上的openMV垃圾分类

    通过在Vision Board部署openMV实现垃圾分类
    的头像 发表于 06-17 10:49 574次阅读
    基于Vision Board上的openMV<b class='flag-5'>垃圾</b><b class='flag-5'>分类</b>

    如何基于OrangePi AIpro开发AI推理应用

    香橙派AIpro开发板采用AI技术路线,接口丰富且具有强大的可扩展性,提供8/20TOPS澎湃算力,可广泛使用于AI边缘计算、深度视觉学习及视频
    的头像 发表于 06-04 14:23 459次阅读
    如何基于OrangePi AIpro开发<b class='flag-5'>AI</b>推理应用

    科技受邀参加鲲鹏南北双峰会, 共同打造数智化新质生产力!

    基于平台推出的一系列算力产品,以吸睛的直观方式演示行业创新解决方案,以及分享科技如何携手
    的头像 发表于 05-17 16:23 1237次阅读

    一步步带你快速上手嵌入式EA200I-DK开发板:接口功能测试&amp;典型应用演示(免烧录)

    近期,嵌入式联合重磅推出了基于310系列AI
    的头像 发表于 05-06 13:56 1123次阅读
    一步步带你快速上手<b class='flag-5'>英</b><b class='flag-5'>码</b>嵌入式<b class='flag-5'>EA200I</b>-DK开发板:接口功能测试&amp;典型应用演示(免烧录)

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

    。   基于此,推出了系列化行业SDK和参考设计,通过把千行百业细分场景的开发经验和行业知识沉淀下来、水平复制,从而大幅度降低门槛、简化开发、提升效率。而科技是
    的头像 发表于 04-26 08:38 363次阅读
    基于<b class='flag-5'>昇</b><b class='flag-5'>腾</b><b class='flag-5'>AI</b> | <b class='flag-5'>英</b><b class='flag-5'>码</b>科技<b class='flag-5'>EA500I</b>使用<b class='flag-5'>AscendCL</b><b class='flag-5'>实现</b><b class='flag-5'>垃圾</b><b class='flag-5'>分类</b>和<b class='flag-5'>视频</b><b class='flag-5'>物体</b><b class='flag-5'>分类</b>应用

    嵌入式推出系列AI智能计算模组和开发套件:多规格算力,支持国产化定制!

    了基于310系列AI推理芯片的AI智能计算模组EA200I和开发套件EA200I-DK,具有
    的头像 发表于 04-22 10:33 621次阅读
    <b class='flag-5'>英</b><b class='flag-5'>码</b>嵌入式推出<b class='flag-5'>昇</b><b class='flag-5'>腾</b>系列<b class='flag-5'>AI</b>智能计算模组和开发套件:多规格算力,支持国产化定制!

    科技EA500I基于Mind SDK实现实时人体关键点检测

    ,实时人体关键点检测应用可以用来识别异常行为或特定姿态,以达到场景安全防控的目的。 那么,什么是实时人体关键点检测? 简单来说,实时人体关键点检测是一种计算机视觉技术,它能够在图像或视频中实时地自动识别并标注出
    的头像 发表于 04-21 17:44 962次阅读
    <b class='flag-5'>英</b><b class='flag-5'>码</b>科技<b class='flag-5'>EA500I</b>基于<b class='flag-5'>昇</b><b class='flag-5'>腾</b>Mind SDK<b class='flag-5'>实现</b>实时人体关键点检测

    科技EA500I基于Mind SDK实现实时人体关键点检测

    ,实时人体关键点检测应用可以用来识别异常行为或特定姿态,以达到场景安全防控的目的。*图片来源社区官网那么,什么是实时人体关键点检测?简单来说,实时人体关键点检测是
    的头像 发表于 04-20 08:25 513次阅读
    <b class='flag-5'>英</b><b class='flag-5'>码</b>科技<b class='flag-5'>EA500I</b>基于<b class='flag-5'>昇</b><b class='flag-5'>腾</b>Mind SDK<b class='flag-5'>实现</b>实时人体关键点检测

    官宣!科技荣获APN分销金牌认证,携手共建算力底座

    4月15日,华为技术有限公司正式为广州信息科技有限公司颁发“APN分销金牌认证证书”,授牌仪式在
    的头像 发表于 04-16 10:37 462次阅读
    官宣!<b class='flag-5'>英</b><b class='flag-5'>码</b>科技荣获<b class='flag-5'>昇</b><b class='flag-5'>腾</b>APN分销金牌认证,携手共建算力底座

    系列产品应用】科技EA500I边缘计算盒子接口使用示例和目标检测算法演示(附视频

    EA500I科技联合华为精心打造的AI边缘计算盒子,其搭载
    的头像 发表于 03-29 08:39 287次阅读

    【技术干货】教你如何基于华为CANN架构快速实现模型推理应用

    正因为资源极其丰富,浩如星辰,想要快速寻找,到摸索清楚其中的原理,并最终结合自己手上的项目实现应用部署,人力成本、时间成本将增加不少,不利于快速推进项目。   现在~好消息来了! 经过科技工程师们的认真梳理,本篇文章,我们以
    的头像 发表于 03-08 08:36 1635次阅读
    【技术干货】教你如何基于华为<b class='flag-5'>昇</b><b class='flag-5'>腾</b>CANN架构快速<b class='flag-5'>实现</b>模型推理应用