Hi3516/Hi3519DV500移植YOLOV5、YOLOV6、YOLOV7、YOLOV8开发环境搭建--YOLOV5工程编译移植到开发板测试--(5)

  •   专栏链接如下:

Hi3516/Hi3519DV500移植YOLOV5、YOLOV6、YOLOV7、YOLOV8开发环境搭建--安装Ubuntu18.04--(1)

Hi3516/Hi3519DV500移植YOLOV5、YOLOV6、YOLOV7、YOLOV8开发环境搭建--安装开发环境AMCT、依赖包等--(2)

Hi3516/Hi3519DV500移植YOLOV5、YOLOV6、YOLOV7、YOLOV8开发环境搭建--安装交叉编译工具链--(3)

Hi3516/Hi3519DV500移植YOLOV5、YOLOV6、YOLOV7、YOLOV8开发环境搭建--安装ATC&MindStudio--(4)

Hi3516/Hi3519DV500移植YOLOV5、YOLOV6、YOLOV7、YOLOV8开发环境搭建--YOLOV5工程编译移植到开发板测试--(5)

一、开发环境准备

        1.1、VMware Workstation15 Pro,本专栏采用vmware虚拟机搭建开发环境,若采用物理机原理大同小异。

        1.2、Ubuntu18.04镜像,下载地址ubuntu-releases-18.04安装包下载_开源镜像站-阿里云,使用阿里镜像下载速度超级快。

二、MindStudio编译YOLOV5的范例

        2.1、复制MindStudio的Samples

        打开海思官方的CNN SDK目录,复制samples.tar.gz到/home/huawei/MindStudio-Samples目录内,如下图所示:

88e5500498524eeea2088e53cc3d01a9.png

        解压 ,如下图所示:

75da0e74611b4e6e8420e2181eb9993c.png

        2.2、启动MindStudio加载测试工程

         启动MindStudio,运行如下脚本,任意目录:

MindStudio.sh

        点击open,打开工程,如下图:

aa2dd09d846041f8939660a88407b2e2.png

         选择如下目录内的工程,如下图所示:

44147c2474704bd5afcb1e67417b3d04.png

        点击 Trust project ,如下图:

f4c1c8def0ac480a94f6cd3a2ddbee6b.png

         加载成功,弹窗设置CANN:

e42bca408c174e76a5dafe15f3710dbf.png

031dbb52dd0d4fcfb5b165c3cde572e1.png

        配置编译选项,如下图: 

660d52ef654643618729973f2fa870d3.png

        编译,如下图:

707cf905aad248dcb1a4e02f91614c29.png         如下图,已经成功编译了yolo的工程:52905ec9cbc84d9db1e21616594473c7.png

三、加载到板端试运行

        3.1、 转换yolov5模型为om

        打开如下目录:

eb73f91e0c7b47a890b1c1683faaeb4e.png

        运行如下脚本:

atc --dump_data=0 --input_shape="images:1,3,640,640" --input_type="images:UINT8" --log_level=0 --online_model_type=0 --batch_num=1 --input_format=NCHW --output="./model/yolov5" --soc_version=Hi3519DV500 --insert_op_conf=./insert_op.cfg --framework=5 --compile_mode=0 --save_original_model=true --model="./onnx_model/yolov5s.onnx" --image_list="images:./data/image_ref_list.txt"

         若提示atc未安装,修改环境变量,如下命令:

vim ~/.bashrc

        在文件末尾添加如下内容:

6195cb7f9e9c45e88cbc12e9fa42f50d.png

         使环境变量生效

source ~/.bashrc

         再次运行

atc --dump_data=0 --input_shape="images:1,3,640,640" --input_type="images:UINT8" --log_level=0 --online_model_type=0 --batch_num=1 --input_format=NCHW --output="./model/yolov5" --soc_version=Hi3519DV500 --insert_op_conf=./insert_op.cfg --framework=5 --compile_mode=0 --save_original_model=true --model="./onnx_model/yolov5s.onnx" --image_list="images:./data/image_ref_list.txt"

        此时可能会有如下报错,未找到依赖的动态库 ,如下图:

6041e568c1804617b93eab8a28496c23.png

        继续修改环境变量,增加如下内容,并保存退出,使环境变量生效:

f40ef83711cc4bcbb5b99af1ec773359.png

        再次运行转换脚本,则转换成功如下图所示:

960af6a8be764ebc9cfa1c3010f444fa.png

        打开如下目录找到这个文件,说明模型已经转换成功:

d88534d0cc2c4353a10e6d83ad0a7bd6.png        3.2、转换测试图片为bin文件 

        转换测试图片为bin文件,进入如下目录,运行转换脚本:

8fa4f3be5c454c8187107144f7e80764.png

        在此目录打开控制台,其实该目录内已经生成了测试图片的bin文件,此处为了熟悉开发流程

python3.7.5 ../script/transferPic.py 5

         成功转换如下图所示:

aa759970e8ef460cbb09d597f356b5f6.png

        3.3、拷贝测试文件到开发板端运行

        需要src、model、data目录的内容拷贝到开发板内,如下图所示:

851019c9192a4fb9807e503a2b183656.png

        板端的内容如下:

870e28d4a47b4d88a1bbfe012df454a3.png         拷贝板端运行的依赖库到/usr/lib目录内,如下图所示:

3a1b56c6a81e409993eb310d76896d8e.png

        同时拷贝opencv库到板子端,如下图:

ef1baf76175e4d7883d52c57a3173e71.png

        在板子端src、model、data同级目录新建一个yolov5_test文件夹,将下图内的main文件拷贝至yolov5_test目录内

16f2f4ca2c6043cc8563a726077ea952.png        在开发板端将main更改为可执行权限,chmod +x main,然后运行如下命令:

./main 5

         运行成功,如下显示:

7af458bbf4ad43a8853e03b35befc836.png

         下载推理后的输出文件看看效果,如下图所示:

390f9f61d4c24f00af0814596a235130.png

        效果如下:

c63fd153fbe64a25bc69744ff8fa4512.png

         至此,yolov5移植验证已经成功,接下来会陆续尝试yolov7、yolov8等模式。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/462739.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【STM32】INA3221三通道电压电流采集模块,HAL库

一、简单介绍 芯片的datasheet地址: INA3221 三通道、高侧测量、分流和总线电压监视器,具有兼容 I2C 和 SMBUS 的接口 datasheet (Rev. B) 笔者所使用的INA3221是淘宝买的模块 原理图 模块的三个通道的电压都是一样,都是POWER。这个芯片采用…

HTML 标签属性——id、class、style 等全局属性详解

文章目录 1. id属性2. class属性3. style属性4. title属性5. lang属性6. dir属性7. accesskey属性8. tabindex属性小结HTML全局属性是一组可以应用于几乎所有HTML元素的特殊属性。这些属性提供了额外的功能和信息,使得网页开发者能够更好地控制元素的行为、样式和可访问性。 …

Python数据分析案例62——基于MAGU-LSTM的时间序列预测(记忆增强门控单元)

案例背景 时间序列lstm系列预测在学术界发论文都被做烂了,现在有一个新的MAGU-LSTM层的代码,并且效果还可以,非常少见我觉得还比较创新,然后我就分享一下它的代码演示一下,并且结合模态分解等方法做一次全面的深度学习…

C++泛型编程

一、什么是泛型编程 泛型编程 是一种编程范式,它通过编写可以处理多种数据类型的代码来实现代码的灵活复用。泛型编程主要通过模板来实现。 比如我们日常使用的容器类型vector就应用了模板来实现其通用性,我们在使用时可以通过传入型别创建对应的动态数…

ServletContext,Cookie,HttpSession的使用

ServletContext对象 ServletContext对象官方也称servlet上下文。服务器会为每一个Web应用创建一个ServletContext对象,这个对象全局唯一,而且Web应用中所有的Servlet都共享这个对象。 ServletContext对象的作用 相对路径转绝对路径 servletContext.g…

如何封装一个可取消的 HTTP 请求?

前言 你可能会好奇什么样的场景会需要取消 HTTP 请求呢? 确实在实际的项目开发中,可能会很少有这样的需求,但是不代表没有,比如: 假如要实现上述这个公告栏,每点击一个 tab 按钮就会切换展示容器容器中…

前端笔试新问题总结

记录总结下最近遇到的前端笔试新问题 目录 一、操作数组方法 1.Array.isArray(arr) 2.Object.prototype.toString.call(arr) "[object Array]" 3.arr instanceof Array 1)跨帧问题 2)修改Array.prototype 3)模拟数组的对象…

玩转Hugging Face/魔搭社区/魔乐社区”教程

2.1 HF 平台 2.1.1 注册Hugging Face 平台 (需要魔法上网) Hugging Face 最初专注于开发聊天机器人服务。尽管他们的聊天机器人项目并未取得预期的成功,但他们在GitHub上开源的Transformers库却意外地在机器学习领域引起了巨大轰动。如今&…

Chrome与夸克谁更节省系统资源

在当今数字化时代,浏览器已经成为我们日常生活中不可或缺的一部分。无论是工作、学习还是娱乐,我们都依赖于浏览器来访问互联网。然而,不同的浏览器在性能和资源消耗方面存在差异。本文将探讨Chrome和夸克两款浏览器在系统资源消耗方面的表现…

【OJ题解】C++实现反转字符串中的每个单词

💵个人主页: 起名字真南 💵个人专栏:【数据结构初阶】 【C语言】 【C】 【OJ题解】 题目要求:给定一个字符串 s ,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。 题目链接: 反转字符串中的所…

Vue 学习随笔系列十三 -- ElementUI 表格合并单元格

ElementUI 表格合并单元格 文章目录 ElementUI 表格合并单元格[TOC](文章目录)一、表头合并二、单元格合并1、示例代码2、示例效果 一、表头合并 参考&#xff1a; https://www.jianshu.com/p/2befeb356a31 二、单元格合并 1、示例代码 <template><div><el-…

吴恩达深度学习笔记:卷积神经网络(Foundations of Convolutional Neural Networks)4.3-4.4

目录 第四门课 卷积神经网络&#xff08;Convolutional Neural Networks&#xff09;第四周 特殊应用&#xff1a;人脸识别和神经风格转换&#xff08;Special applications: Face recognition &Neural style transfer&#xff09;4.3 Siamese 网络&#xff08;Siamese net…

vue data变量之间相互赋值或进行数据联动

摘要&#xff1a; 使用vue时开发会用到data中是数据是相互驱动&#xff0c;经常会想到watch,computed&#xff0c;总结一下&#xff01; 直接赋值&#xff1a; 在 data 函数中定义的变量可以直接在方法中进行赋值。 export default {data() {return {a: 1,b: 2};},methods: {u…

安装Blender并使用

前言 该系列记录了如何用Blenderpro来构建自己的场景数据集&#xff0c;从环境搭建到后期构建数据集的整个流程 本文章是第一部分&#xff0c;BlenderPrc2的安装以及环境配置 部分参考https://blog.csdn.net/weixin_49521551/article/details/121573334 官方文档https://dlr…

百度SEO分析实用指南 提升网站搜索排名的有效策略

内容概要 在数字化时代&#xff0c;搜索引擎优化&#xff08;SEO&#xff09;已经成为提升网站曝光度的关键工具。本指南将带您了解SEO的基本知识&#xff0c;帮助您在复杂的网络环境中立足。我们将从关键词优化开始&#xff0c;重点讲解如何选择合适的关键词来提高搜索引擎排…

【蔬菜识别】Python+深度学习+CNN卷积神经网络算法+TensorFlow+人工智能+模型训练

一、介绍 蔬菜识别系统&#xff0c;本系统使用Python作为主要编程语言&#xff0c;通过收集了8种常见的蔬菜图像数据集&#xff08;‘土豆’, ‘大白菜’, ‘大葱’, ‘莲藕’, ‘菠菜’, ‘西红柿’, ‘韭菜’, ‘黄瓜’&#xff09;&#xff0c;然后基于TensorFlow搭建卷积神…

ESP8266 自定义固件烧录-Tcpsocket固件

一、固件介绍 固件为自定义开发的一个适配物联网项目的开源固件&#xff0c;支持网页配网、支持网页tcpsocket服务器配置、支持串口波特率设置。 方便、快捷、稳定&#xff01; 二、烧录说明 固件及工具打包下载地址&#xff1a; https://download.csdn.net/download/flyai…

探秘机器学习算法:智慧背后的代码逻辑

1、 线性回归 线性回归是预测连续变量的一种简单而有效的方法。其数学模型假设因变量 y 与自变量 x 之间存在线性关系&#xff0c;用公式表示为&#xff1a; ​ Python代码实现 import numpy as np from sklearn.linear_model import LinearRegression import matplotlib.…

【合肥工业大学】操作系统 习题解析 作业答案(仅作学习与交流/侵删)

第一章习题解析 1&#xff0e;设计现代OS的主要目标是什么&#xff1f; 答&#xff1a;&#xff08;1&#xff09;有效性 &#xff08; 2&#xff09;方便性 &#xff08; 3&#xff09;可扩充性 &#xff08; 4&#xff09;开放性 2&#xff0e; OS 的作用可表现在哪几个方…

要在微信小程序中让一个 `view` 元素内部的文字水平垂直居中,可以使用 Flexbox 布局

文章目录 主要特点&#xff1a;基本用法&#xff1a;常用属性&#xff1a; 要在微信小程序中让一个 view 元素内部的文字水平垂直居中&#xff0c;可以使用 Flexbox 布局。以下是如何设置样式的示例&#xff1a; .scan-button {display: flex; /* 启用 Flexbox 布局 */justify…