当前位置: 首页 > 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 开发问题中国国学、传统文化和代码爱好者的程序人生,期待你的关注和支持!本人外号:神秘小峯 山峯 转载说明:务必注明来源(注明:作者:王文峰…...

浅谈 React Hooks

React Hooks 是 React 16.8 引入的一组 API&#xff0c;用于在函数组件中使用 state 和其他 React 特性&#xff08;例如生命周期方法、context 等&#xff09;。Hooks 通过简洁的函数接口&#xff0c;解决了状态与 UI 的高度解耦&#xff0c;通过函数式编程范式实现更灵活 Rea…...

DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径

目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...

黑马Mybatis

Mybatis 表现层&#xff1a;页面展示 业务层&#xff1a;逻辑处理 持久层&#xff1a;持久数据化保存 在这里插入图片描述 Mybatis快速入门 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/6501c2109c4442118ceb6014725e48e4.png //logback.xml <?xml ver…...

CentOS下的分布式内存计算Spark环境部署

一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架&#xff0c;相比 MapReduce 具有以下核心优势&#xff1a; 内存计算&#xff1a;数据可常驻内存&#xff0c;迭代计算性能提升 10-100 倍&#xff08;文档段落&#xff1a;3-79…...

工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配

AI3D视觉的工业赋能者 迁移科技成立于2017年&#xff0c;作为行业领先的3D工业相机及视觉系统供应商&#xff0c;累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成&#xff0c;通过稳定、易用、高回报的AI3D视觉系统&#xff0c;为汽车、新能源、金属制造等行…...

C# 求圆面积的程序(Program to find area of a circle)

给定半径r&#xff0c;求圆的面积。圆的面积应精确到小数点后5位。 例子&#xff1a; 输入&#xff1a;r 5 输出&#xff1a;78.53982 解释&#xff1a;由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982&#xff0c;因为我们只保留小数点后 5 位数字。 输…...

C++:多态机制详解

目录 一. 多态的概念 1.静态多态&#xff08;编译时多态&#xff09; 二.动态多态的定义及实现 1.多态的构成条件 2.虚函数 3.虚函数的重写/覆盖 4.虚函数重写的一些其他问题 1&#xff09;.协变 2&#xff09;.析构函数的重写 5.override 和 final关键字 1&#…...

【Linux】Linux 系统默认的目录及作用说明

博主介绍&#xff1a;✌全网粉丝23W&#xff0c;CSDN博客专家、Java领域优质创作者&#xff0c;掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围&#xff1a;SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…...

Golang——7、包与接口详解

包与接口详解 1、Golang包详解1.1、Golang中包的定义和介绍1.2、Golang包管理工具go mod1.3、Golang中自定义包1.4、Golang中使用第三包1.5、init函数 2、接口详解2.1、接口的定义2.2、空接口2.3、类型断言2.4、结构体值接收者和指针接收者实现接口的区别2.5、一个结构体实现多…...

ZYNQ学习记录FPGA(二)Verilog语言

一、Verilog简介 1.1 HDL&#xff08;Hardware Description language&#xff09; 在解释HDL之前&#xff0c;先来了解一下数字系统设计的流程&#xff1a;逻辑设计 -> 电路实现 -> 系统验证。 逻辑设计又称前端&#xff0c;在这个过程中就需要用到HDL&#xff0c;正文…...