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

2024-04-17 05:12

本文主要是介绍【CANN训练营】目标检测(YoloV5s)实践(Python实现),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

样例介绍

使用多路离线视频流(* .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

这篇关于【CANN训练营】目标检测(YoloV5s)实践(Python实现)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/910869

相关文章

Oracle查询优化之高效实现仅查询前10条记录的方法与实践

《Oracle查询优化之高效实现仅查询前10条记录的方法与实践》:本文主要介绍Oracle查询优化之高效实现仅查询前10条记录的相关资料,包括使用ROWNUM、ROW_NUMBER()函数、FET... 目录1. 使用 ROWNUM 查询2. 使用 ROW_NUMBER() 函数3. 使用 FETCH FI

Python脚本实现自动删除C盘临时文件夹

《Python脚本实现自动删除C盘临时文件夹》在日常使用电脑的过程中,临时文件夹往往会积累大量的无用数据,占用宝贵的磁盘空间,下面我们就来看看Python如何通过脚本实现自动删除C盘临时文件夹吧... 目录一、准备工作二、python脚本编写三、脚本解析四、运行脚本五、案例演示六、注意事项七、总结在日常使用

Java实现Excel与HTML互转

《Java实现Excel与HTML互转》Excel是一种电子表格格式,而HTM则是一种用于创建网页的标记语言,虽然两者在用途上存在差异,但有时我们需要将数据从一种格式转换为另一种格式,下面我们就来看看... Excel是一种电子表格格式,广泛用于数据处理和分析,而HTM则是一种用于创建网页的标记语言。虽然两

Java中Springboot集成Kafka实现消息发送和接收功能

《Java中Springboot集成Kafka实现消息发送和接收功能》Kafka是一个高吞吐量的分布式发布-订阅消息系统,主要用于处理大规模数据流,它由生产者、消费者、主题、分区和代理等组件构成,Ka... 目录一、Kafka 简介二、Kafka 功能三、POM依赖四、配置文件五、生产者六、消费者一、Kaf

Python将大量遥感数据的值缩放指定倍数的方法(推荐)

《Python将大量遥感数据的值缩放指定倍数的方法(推荐)》本文介绍基于Python中的gdal模块,批量读取大量多波段遥感影像文件,分别对各波段数据加以数值处理,并将所得处理后数据保存为新的遥感影像... 本文介绍基于python中的gdal模块,批量读取大量多波段遥感影像文件,分别对各波段数据加以数值处

python管理工具之conda安装部署及使用详解

《python管理工具之conda安装部署及使用详解》这篇文章详细介绍了如何安装和使用conda来管理Python环境,它涵盖了从安装部署、镜像源配置到具体的conda使用方法,包括创建、激活、安装包... 目录pytpshheraerUhon管理工具:conda部署+使用一、安装部署1、 下载2、 安装3

Python进阶之Excel基本操作介绍

《Python进阶之Excel基本操作介绍》在现实中,很多工作都需要与数据打交道,Excel作为常用的数据处理工具,一直备受人们的青睐,本文主要为大家介绍了一些Python中Excel的基本操作,希望... 目录概述写入使用 xlwt使用 XlsxWriter读取修改概述在现实中,很多工作都需要与数据打交

在C#中获取端口号与系统信息的高效实践

《在C#中获取端口号与系统信息的高效实践》在现代软件开发中,尤其是系统管理、运维、监控和性能优化等场景中,了解计算机硬件和网络的状态至关重要,C#作为一种广泛应用的编程语言,提供了丰富的API来帮助开... 目录引言1. 获取端口号信息1.1 获取活动的 TCP 和 UDP 连接说明:应用场景:2. 获取硬

使用Python实现在Word中添加或删除超链接

《使用Python实现在Word中添加或删除超链接》在Word文档中,超链接是一种将文本或图像连接到其他文档、网页或同一文档中不同部分的功能,本文将为大家介绍一下Python如何实现在Word中添加或... 在Word文档中,超链接是一种将文本或图像连接到其他文档、网页或同一文档中不同部分的功能。通过添加超

windos server2022里的DFS配置的实现

《windosserver2022里的DFS配置的实现》DFS是WindowsServer操作系统提供的一种功能,用于在多台服务器上集中管理共享文件夹和文件的分布式存储解决方案,本文就来介绍一下wi... 目录什么是DFS?优势:应用场景:DFS配置步骤什么是DFS?DFS指的是分布式文件系统(Distr