当前位置: 首页 > news >正文

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等模式。

 

相关文章:

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)…...

springboot揭秘00-基于java配置的spring容器

文章目录 【README】【1】基本概念:Configuration与Bean【2】使用AnnotationConfigApplicationContext实例化spring容器【2.1】使用java配置简单构建spring容器【2.1.1】AnnotationConfigApplicationContext与Component及JSR-330注解类一起使用 【2.2】使用register…...

docker配置mysql

手动拉取 MySQL 镜像 docker pull mysql 创建并运行 MySQL 容器(docker run) docker run -d \--name mysql \-p 3306:3306 \-e TZAsia/shanghai \-e MYSQL_ROOT_PASSWORD123 \mysql -d:以守护进程(daemon)模式运行…...

说说Dubbo有哪些核心组件?

说说Dubbo有哪些核心组件? 简单来说,就是服务提供者Provider,服务消费者Consumer,服务注册中心Registry,服务监控器Monitor,通信协议Protocol Dubbo 是一款高性能、轻量级的开源 Java RPC 框架&#xff0…...

视频文件损坏无法播放怎么办?有什么办法可以修复视频吗?

人人都是自媒体的时代,我们已不再满足单纯的图片及声音传播,拍摄短视频的需求日渐增高。但随之也带来了许多问题,比如:拍摄的视频在保存或转移拷贝过程出现问题导致视频文件损坏无法播放。遇到这种情况时怎么办?有什么…...

flutter ios ffi 调试 .a文件 debug可以 release 不行

在 Flutter 中使用 FFI(Foreign Function Interface)时,如果你在调试模式下能够正常工作,而在发布模式下却遇到问题,使用Object-c原生调用可以使用,开启去掉优化也可以,可能的原因在发布模式下&…...

ADB指定进程名称kill进程

adb shell ps | grep <process_name> | awk {print $2} | xargs adb shell killadb shell ps&#xff1a;列出所有正在运行的进程。grep <process_name>&#xff1a;筛选出包含指定进程名称的行。awk ‘{print $2}’&#xff1a;提取输出中的第二列&#xff08;通常…...

巨好看的登录注册界面源码

展示效果 源码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta http-equiv"X-UA-Compatible" content"IEedge" /><meta name"viewport" content"widthdevic…...

Python 数据结构

1.概念 数据结构是计算机科学中的一个核心概念&#xff0c;它是指数据的组织、管理和存储方式&#xff0c;以及数据元素之间的关系。数据结构通常用于允许高效的数据插入、删除和搜索操作。 数据结构大致分为几大类&#xff1a; 线性结构&#xff1a;数组、链表、栈、队列等…...

计算机网络八股文个人总结

1.TCP/IP模型和OSI模型的区别 在计算机网络中&#xff0c;TCP/IP 模型和 OSI 模型是两个重要的网络协议模型。它们帮助我们理解计算机通信的工作原理。以下是它们的主要区别&#xff0c;以通俗易懂的方式进行解释&#xff1a; 1. 模型层数 OSI 模型&#xff1a;有 7 层&#…...

Flutter使用share_plus是提示发现了重复的类

问题描述 我现在下载了share_plus包后发现代码编译不通过&#xff0c;并提示Duplicate class kotlin.collections.jdk8.CollectionsJDK8Kt found in modules jetified-kotlin-stdlib-1.8.22 (org.jetbrains.kotlin:kotlin-stdlib:1.8.22) and jetified-kotlin-stdlib-jdk8-1.7…...

【Linux】编辑器vim 与 编译器gcc/g++

目录 一、编辑器vim&#xff1a; 1、对vim初步理解&#xff1a; 2、vim的模式&#xff1a; 3、进入与退出&#xff1a; 4、vim命令模式下的指令集&#xff1a; 移动光标&#xff1a; 删除&#xff1a; cv&#xff1a; 撤销&#xff1a; 其他&#xff1a; 5、vim底行模…...

音频中sample rate是什么意思?

‌sample rate‌在数字信号处理中&#xff0c;指的是‌采样频率‌&#xff0c;即每秒钟从连续信号中抽取的样本数量。采样频率越高&#xff0c;信号的还原度越高&#xff0c;但同时也会增加计算负担和存储需求‌。 实际应用场景 在音频处理中&#xff0c;设置合适的采样率可以…...

Java思想

学习韩老师的java课程 一步一步拆解需求&#xff0c;先写死的再写活的 首先我只是写了个输出一个*的程序 然后写了输出靠墙的1到n&#xff0c;n排n个的*符号输出程序 再写了加入空格的实心金字塔程序&#xff0c;最后写了这个镂空的金字塔 一下就是成品 import java.util.Sc…...

演练纪实丨 同创永益圆满完成10月份灾备切换演练支持

2024年10月&#xff0c;同创永益共支持5家客户圆满完成灾备切换演练&#xff0c;共涉及70多套核心系统总切换与回切步骤6000余个&#xff0c;成功率100%&#xff0c;RTO时长均达到客户要求。 其中耗时最短的一次演练仅花费约3个小时&#xff0c;共涉及32套系统的灾备切换演练&a…...

UE Mutiplayer(1):网络概述

文章目录 一、Replication二、基本网络概念2.1 网络模式和服务器类型2.2 Actor复制2.3 网络角色和授权2.4 客户端拥有权2.5 相关性和优先级 三、变量复制四、远程过程调用(RPC) 一、Replication 在虚幻引擎中&#xff0c;在客户端与服务器间同步数据和调用程序的过程被称为复制…...

【SQL Server】中关于 COUNT 的一些使用方式区别

前言 使用 SQL Server时&#xff0c;对表或查询结果计算行数是一种常见的操作。了解一些使用 COUNT(*)、COUNT(1) 和 DISTINCT COUNT等的区别对于编写经过优化的高效查询至关重要。本文我们一起探讨这些使用COUNT方式&#xff0c;了解它们的差异与使用。 方式差异 1、COUNT(…...

第5关:主合取范式

任务描述 编程要求 输入 输出 输入样例 输出样例 任务描述 本关任务&#xff1a;求公式(p∨q)→r的主合取范式。 编程要求 根据提示&#xff0c;在右侧编辑器补充代码&#xff0c;计算并输出公式(p∨q)→r的主合取范式 输入 本题无输入。 输出 在单独的一行中输出公式的主合…...

vscode摸鱼学习插件开发

不知道大家在摸鱼的时候&#xff0c;会不会想要学习&#xff1f; 或者有没有考公人&#xff0c;下班要学习的&#xff1f; 上班时间摸鱼&#xff0c;下班时间不够学习&#xff1f; 为此&#xff0c;我决定开发一个vscode插件&#xff0c;来刷粉笔题 粉笔插件名称&#xff1a;…...

多线程编程与并发控制缓存策略负载均衡数据库优化

本人详解 作者:王文峰,参加过 CSDN 2020年度博客之星,《Java王大师王天师》 公众号:JAVA开发王大师,专注于天道酬勤的 Java 开发问题中国国学、传统文化和代码爱好者的程序人生,期待你的关注和支持!本人外号:神秘小峯 山峯 转载说明:务必注明来源(注明:作者:王文峰…...

【Linux】shell脚本忽略错误继续执行

在 shell 脚本中&#xff0c;可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行&#xff0c;可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令&#xff0c;并忽略错误 rm somefile…...

大话软工笔记—需求分析概述

需求分析&#xff0c;就是要对需求调研收集到的资料信息逐个地进行拆分、研究&#xff0c;从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要&#xff0c;后续设计的依据主要来自于需求分析的成果&#xff0c;包括: 项目的目的…...

阿里云ACP云计算备考笔记 (5)——弹性伸缩

目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...

linux 错误码总结

1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...

Keil 中设置 STM32 Flash 和 RAM 地址详解

文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...

C# 类和继承(抽象类)

抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...

自然语言处理——Transformer

自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效&#xff0c;它能挖掘数据中的时序信息以及语义信息&#xff0c;但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN&#xff0c;但是…...

关于 WASM:1. WASM 基础原理

一、WASM 简介 1.1 WebAssembly 是什么&#xff1f; WebAssembly&#xff08;WASM&#xff09; 是一种能在现代浏览器中高效运行的二进制指令格式&#xff0c;它不是传统的编程语言&#xff0c;而是一种 低级字节码格式&#xff0c;可由高级语言&#xff08;如 C、C、Rust&am…...

Reasoning over Uncertain Text by Generative Large Language Models

https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829 1. 概述 文本中的不确定性在许多语境中传达,从日常对话到特定领域的文档(例如医学文档)(Heritage 2013;Landmark、Gulbrandsen 和 Svenevei…...

Java + Spring Boot + Mybatis 实现批量插入

在 Java 中使用 Spring Boot 和 MyBatis 实现批量插入可以通过以下步骤完成。这里提供两种常用方法&#xff1a;使用 MyBatis 的 <foreach> 标签和批处理模式&#xff08;ExecutorType.BATCH&#xff09;。 方法一&#xff1a;使用 XML 的 <foreach> 标签&#xff…...