【CANN训练营】目标检测(YoloV5s)实践(Python实现)

embedded/2024/11/9 16:43:21/

样例介绍

使用多路离线视频流(* .mp4)作为应用程序的输入,基于YoloV5s模型对输入视频中的物体做实时检测,将推理结果信息使用imshow方式显示。 样例代码逻辑如下所示:
image.png

环境信息

CPU:Intel® Xeon® Gold 6348 CPU @ 2.60GHz
内存:64GiB
NPU:HUAWEI Ascend 310P / 1 * 24G


+--------------------------------------------------------------------------------------------------------+
| npu-smi 22.0.4                                   Version: 22.0.4                                       |
+-------------------------------+-----------------+------------------------------------------------------+
| NPU     Name                  | Health          | Power(W)     Temp(C)           Hugepages-Usage(page) |
| Chip    Device                | Bus-Id          | AICore(%)    Memory-Usage(MB)                        |
+===============================+=================+======================================================+
| 13      310P3                 | OK              | NA           72                0    / 0              |
| 0       0                     | 0000:00:0D.0    | 0            1806 / 21527                            |
+===============================+=================+======================================================+

安装CANN ToolKit

下载

wget 'https://ascend-repo.obs.cn-east-2.myhuaweicloud.com/Milan-ASL/Milan-ASL%20V100R001C17SPC702/Ascend-cann-toolkit_8.0.RC1.alpha002_linux-x86_64.run?response-content-type=application/octet-stream' -O Ascend-cann-toolkit_8.0.RC1.alpha002_linux-x86_64.run

安装CANN

bash Ascend-cann-toolkit_8.0.RC1.alpha002_linux-x86_64.run --full

修改环境变量

vim ~/.bashrc

添加如下内容后保存

source /usr/local/Ascend/ascend-toolkit/set_env.sh

激活环境变量

source ~/.bashrc

配置程序编译依赖的头文件与库文件路径

export DDK_PATH=/usr/local/Ascend/ascend-toolkit/latest 
export NPU_HOST_LIB=$DDK_PATH/runtime/lib64/stub

安装opencv

apt install libopencv-dev

ACLLite安装

设置环境变量

export DDK_PATH=/usr/local/Ascend/ascend-toolkit/latest
export NPU_HOST_LIB=$DDK_PATH/runtime/lib64/stub
export THIRDPART_PATH=${DDK_PATH}/thirdpart
export PYTHONPATH=${THIRDPART_PATH}/python:$PYTHONPATH

创建THIRDPART_PATH路径

mkdir -p ${THIRDPART_PATH}

运行环境安装python-acllite所需依赖

# 安装ffmpeg
apt-get install -y libavformat-dev libavcodec-dev libavdevice-dev libavutil-dev libswscale-dev libavresample-dev
# 安装其它依赖
python3 -m pip install --upgrade pip
python3 -m pip install Cython
apt-get install pkg-config libxcb-shm0-dev libxcb-xfixes0-dev
# 安装pyav
python3 -m pip install av==6.2.0
# 安装pillow 的依赖
apt-get install libtiff5-dev libjpeg8-dev zlib1g-dev libfreetype6-dev liblcms2-dev libwebp-dev tcl8.6-dev tk8.6-dev python-tk
# 安装numpy和PIL
python3 -m pip install numpy
python3 -m pip install Pillow

将acllite目录拷贝到运行环境的第三方库目录

cp -r ${HOME}/ACLLite/python ${THIRDPART_PATH}

运行样例

克隆代码仓

cd ~
git clone https://gitee.com/ascend/EdgeAndRobotics

进入项目文件夹

cd EdgeAndRobotics/Samples/YOLOV5MultiInput/python

获取PyTorch框架的YoloV5s模型(* .onnx),并转换为昇腾AI处理器能识别的模型(* .om)
注:设备内存小于8G时,可设置如下两个环境变量减少atc模型转换过程中使用的进程数,减小内存占用,如果大于可以不执行

export TE_PARALLEL_COMPILER=1
export MAX_COMPILE_CORE_NUMBER=1

原始模型下载及模型转换命令

cd model
wget https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/003_Atc_Models/yolov5s/yolov5s_nms.onnx --no-check-certificate
wget https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/003_Atc_Models/yolov5s/aipp_rgb.cfg --no-check-certificate
atc --model=yolov5s_nms.onnx --framework=5 --output=yolov5s_rgb --input_shape="images:1,3,640,640;img_info:1,4"  --soc_version=Ascend310P3 --insert_op_conf=aipp_rgb.cfg

atc命令中各参数的解释如下,

  • model:YoloV5s网络的模型文件的路径。
  • framework:原始框架类型。5表示ONNX。
  • output:om模型文件的路径。请注意,记录保存该om模型文件的路径,后续开发应用时需要使用。
  • input_shape:模型输入数据的shape。
  • soc_version:昇腾AI处理器的版本。

soc_version可以通过命令npu-smi info进行查看,查看芯片型号前加上Ascend字样
准备测试视频

d ../data 
wget https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/003_Atc_Models/yolov5s/test.mp4 --no-check-certificate

运行

bash sample_run.sh

运行结果

results: label:cup:0.93  label:apple:0.93  label:dining table:0.45

http://www.ppmy.cn/embedded/3863.html

相关文章

STL容器搜索:当直接访问STL容器时,如何执行有效和正确的搜索?

掌握STL容器搜索技巧:在C中实现高效和准确的数据访问 一、简介二、std::vector, std::deque, std::list三、std::map, std::multimap, std::set, std::multiset四、std::string六、总结 一、简介 本文主要了解如何在直接访问c容器时高效地进行搜索。在STL容器中搜索&#xff0…

51单片机实验03-单片机定时/计数器实验

目录 一、实验目的 二、实验说明 1、51单片机有两个16位内部计数器/定时器(C/T, Counter/Timer)。 2、模式寄存器TMOD 1) M1M0工作模式控制位; 2) C/T定时器或计数器选择位: 3)GATE定时器/计数器运行…

基于单片机雨天自动关窗器的设计

摘 要:文章设计了一种基于单片机雨天自动关窗系统,介绍了该系统设计思路及步骤,并对系统进行了测试。 关键词:单片机;传感器;步进电机 0 引言 随着社会的进步,科技的发展,人们生活水平也日益提高,智能家居的概念已深入人们的生活。开窗能使空气流通,降温避暑,一…

论文阅读-Federated-Unlearning-With-Momentum-Degradation

论文阅读-Federated Unlearning With Momentum Degradation 联邦忘却与动量退化 Yian Zhao IEEE Internet of Things Journal 2023 年 10 月 2 日 CCF-C momentum degradation-MoDe 动量退化 memory guidance-记忆引导 knowledge erasure-知识擦除 Deep-learning neural n…

蓝桥杯备考随手记: practise08

问题描述: 我们知道第一个质数是 2、第二个质数是 3、第三个质数是 5…… 请你计算第 2019 个质数是多少? 思路分析: 质数是指除了1和自身以外没有其他因数的正整数。因此可以通过检查一个数是否有除1和自身以外的因数来判断它是否为质数。 可以从2开始逐个检查…

【RV1106的ISP使用记录之基础知识】硬件连接关系与设备树的构建

RV1106具备2个mipi csi2 dphy硬件,1个VICAP硬件和1个ISP硬件。其中: 1、mipi csi2 dphy 用于对数据流的解析,支持MIPC,LVDS,DVP三种接口; 2、VICAP用于数据流的捕获; 3、ISP用于对图像数据进行处理; 这三个…

树和二叉树(一)

一、树 非线性数据结构,在实际场景中,存在一对多,多对多的情况。 树( tree)是n (n>0)个节点的有限集。当n0时,称为空树。 在任意一个非空树中,有如下特点。 1.有且仅有一个特定的称为根的节点…

浅谈微软的编译器MSVC

MSVC 众所周知的初学者都会下载微软的visual studio,然后在安装界面不知道点什么,笨一点的小伙伴比如我就都选上,聪明的小伙伴知道选择C开发,然后安装了几个G的东西,更聪明的小伙伴在组件中选择MSVC,Windo…