香橙派AIpro部署YOLOv5:探索强悍开发板的高效目标检测能力

香橙派AIpro部署YOLOv5:探索强悍开发板的高效目标检测能力

一、香橙派AIpro开箱使用体验

1.1香橙派AIpro开箱

拿到板子后第一件事情就是开箱:

开箱后可以看见一个橘子的标识,也就是香橙派了,并且还有四个大字:为AI而生,从这四个字可以看出来这款开发板的性能非常好,可以跑AI的开发板性能肯定是比较强悍的。在这里插入图片描述

接下来就来体验一下这款开发板的性能和具体使用吧。

1.2香橙派板载资源介绍

开发板的体积的话是比较小的,但是它搭载的外设资源是比较丰富的,主控制板是4核64位处理器+AI处理器,并且支持千兆网口,无线wifi,还有两个USB3.0口,可以方便用户接入鼠标和键盘等外设。并且还支持接入音频线,HDMI高清接口可以让开发板作为一个小型的主机来使用。
在这里插入图片描述

在背面的话可以看到开发板支持eMMC、Flash、TF卡槽等内存,方便用户自主扩展内存使用。

在这里插入图片描述

1.3香橙派启动方式介绍

香橙派的启动方式有多种,方便用户根据自己的情况来进行选择只需要操作拨码开关即可切换启动方式,支持SATA SSD、NVME SSD、eMMC、TF卡等方式来启动:

在这里插入图片描述

二、启动香橙派!

2.1烧写系统搭建环境

首先进入香橙派官网将资料下载好:

将用户手册、原理图、Ubuntu镜像下载下来:

香橙派官网
在这里插入图片描述

将这些资料下载好后就可以开始烧写ubuntu镜像了,这个时候需要有读卡器和内存卡,因为这个镜像会支持桌面系统,所以占用的内存是比较大的,那么这个时候就需要选择一张大一点的内存卡了,最好是32G或者以上的。

下载用于烧录 Linux 镜像的软件——balenaEtcher

烧录工具

选择从文件中烧录
在这里插入图片描述

选择解压好的镜像文件并且选择目标磁盘进行烧写镜像

在这里插入图片描述

等待镜像烧录完成

在这里插入图片描述

烧录完成镜像后将TF卡取下安装到开发板中,上电启动开发板!

2.2控制开发板的方式

在开发板中有串口,网络,HDMI这三种方式可以登陆到开发板系统中,在这里选择HDMI这种方式,因为选择HDMI可以进入系统的桌面当中,操作起来会更加的直观。

将HDMI线连接到开发板和显示屏,然后再次重新启动开发板,这个时候就可以看到显示屏中进入了桌面系统了。

在这里插入图片描述

三、部署yolov5

首先执行下面的指令安装必要的依赖项

sudo apt-get update
sudo apt-get install -y build-essential cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev

安装opencv

sudo apt-get install -y python3-opencv

下载YOLO源码并编译源码

git clone https://github.com/pjreddie/darknet.git
cd darknet
make

在这里插入图片描述

下载预训练权重文件

wget https://pjreddie.com/media/files/yolov3.weights

运行 YOLO检索图像

在这里插入图片描述
在这里插入图片描述

接下来来编写一个程序体验一下yolov3的物体检测功能吧

创建一个test1.py文件夹用于存放代码

vi test1.py

在这里插入图片描述

编写代码

import cv2  import numpy as np  # 加载网络和配置  net = cv2.dnn.readNet("yolov3.weights", "cfg/yolov3.cfg")  classes = []  with open("data/coco.names", "r") as f:  classes = [line.strip() for line in f.readlines()]  # 加载图片  img = cv2.imread("1.jpg")  img = cv2.resize(img, None, fx=0.4, fy=0.4)  height, width, channels = img.shape  # 检测  blob = cv2.dnn.blobFromImage(img, 0.00392, (416, 416), (0, 0, 0), True, crop=False)  net.setInput(blob)  outs = net.forward(net.getUnconnectedOutLayersNames())  # 显示信息  class_ids = []  confidences = []  boxes = []  for out in outs:  for detect in out:  scores = detect[5:]  class_id = np.argmax(scores)  confidence = scores[class_id]  if confidence > 0.5:  # Object detected  center_x = int(detect[0] * width)  center_y = int(detect[1] * height)  w = int(detect[2] * width)  h = int(detect[3] * height)  # Rectangle coordinates  x = int(center_x - w / 2)  y = int(center_y - h / 2)  boxes.append([x, y, w, h])  confidences.append(float(confidence))  class_ids.append(class_id)  # NMS  indexes = cv2.dnn.NMSBoxes(boxes, confidences, 0.5, 0.4)  # Draw bounding boxes  for i in range(len(boxes)):  if i in indexes:  x, y, w, h = boxes[i]  label = str(classes[class_ids[i]])  color = (0, 255, 0)  cv2.rectangle(img, (x, y), (x + w, y + h), color, 2)  cv2.putText(img, label, (x, y + 30), cv2.FONT_HERSHEY_PLAIN, 1, color, 2)  # 保存图片  cv2.imwrite("predictions_output.jpg", img)  

在百度找几张图片

在这里插入图片描述

找到合适的图片后来运行一下程序

因为这个程序是pyhton程序,所以在运行之前需要确保在开发板的环境中是有python的

这里我已经提前安装好了pyhton3

运行之前需要给程序权限

在这里插入图片描述

接着运行程序

python3 test1.py

等待处理完成,处理的时间是非常快的,一会就处理好了,在当前目录下会生成处理好的图片

在这里插入图片描述

那么这里的我们可以看到他识别出来了汽车和椅子,并且使用绿色标记进行了标定,有了香橙派AIpro强大性能的支持处理这种基础的图片还是非常简单快捷的。

当然了也可以使用yolov3来进行视频的处理,这里我给出示例代码

import cv2  import numpy as np  # 加载网络和配置  net = cv2.dnn.readNet("yolov3.weights", "cfg/yolov3.cfg")  classes = []  with open("data/coco.names", "r") as f:  classes = [line.strip() for line in f.readlines()]  # 打开视频文件  cap = cv2.VideoCapture("your_video.mp4")  # 替换为你的视频文件路径  while True:  ret, frame = cap.read()  # 读取视频帧  if not ret:  break  # 如果正确读取帧,ret为True  # 帧预处理  frame = cv2.resize(frame, None, fx=0.4, fy=0.4)  height, width, channels = frame.shape  # 检测  blob = cv2.dnn.blobFromImage(frame, 0.00392, (416, 416), (0, 0, 0), True, crop=False)  net.setInput(blob)  outs = net.forward(net.getUnconnectedOutLayersNames())  # 显示信息(在视频帧上绘制)  class_ids = []  confidences = []  boxes = []  for out in outs:  for detect in out:  scores = detect[5:]  class_id = np.argmax(scores)  confidence = scores[class_id]  if confidence > 0.5:  center_x = int(detect[0] * width)  center_y = int(detect[1] * height)  w = int(detect[2] * width)  h = int(detect[3] * height)  x = int(center_x - w / 2)  y = int(center_y - h / 2)  boxes.append([x, y, w, h])  confidences.append(float(confidence))  class_ids.append(class_id)  # NMS  indexes = cv2.dnn.NMSBoxes(boxes, confidences, 0.5, 0.4)  # Draw bounding boxes  for i in range(len(boxes)):  if i in indexes:  x, y, w, h = boxes[i]  label = str(classes[class_ids[i]])  color = (0, 255, 0)  cv2.rectangle(frame, (x, y), (x + w, y + h), color, 2)  cv2.putText(frame, label, (x, y + 30), cv2.FONT_HERSHEY_PLAIN, 1, color, 2)  # 显示视频帧  cv2.imshow("Frame", frame)  # 按'q'键退出循环  if cv2.waitKey(1) & 0xFF == ord('q'):  break  # 释放资源  cap.release()  cv2.destroyAllWindows()

同样的运行这个代码后可以分析视频中出现的物体并且进行标定。

四、香橙派AIpro使用心得和体会

在使用开发板部署yolov5的时候还是非常顺利的,开发板内部支持wifi使得开发板可以直接连接到github下载源码这个是非常方便的。

在使用开发板的时候风扇整体转速还是比较平稳的,散热效果比较好,我使用的屏幕是2K,27寸的屏幕也是可以轻松带动的,可见在性能这块还是完全没有问题的。

同时开发板还支持多种连接的方式,支持串口、网络、HDMI等连接方式,我个人认为使用HDMI的方式是非常方便的,香橙派AIpro烧写了Ubuntu的镜像,这样相当于我们又有了一台小型的Linux电脑了,体验感还是不错的,当然也可以使用香橙派AIpro当作服务器来进行使用。

风扇在正常使用的过程中基本是没有噪音的,当然了风扇的转速也是可以自己进行调节的,转速越快的话噪音会有微小的提升。在整体上香橙派AIpro的性能是表现的比较好的。

在测试中使用香橙派AIpro进行刷视频,玩4399这种小游戏都是毫无压力的。

在部署yolov5在香橙派AIpro中的时候能感觉到香橙派的性能,在处理图片或者是视频的时候速度都是比较快的,也可以尝试去处理和识别一些视频或者图片,比较车牌识别等。

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

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

相关文章

RABBITMQ的本地测试证书生成脚本

由于小程序要求必须访问wss的接口,因此需要将测试环境也切换到https,看了下官方的文档 RabbitMQ Web STOMP Plugin | RabbitMQ里面有这个信息 然后敲打GPT一阵子,把要求输入几个来回,得到这样一个脚本: generate_cer…

双向带头循环链表

一、概念 何为双向:此链表每一个节点的指针域由两部分组成,一个指针指向下一个节点,另一个指针指向上一个节点,并且两头的节点也是如此,头节点的下一个节点是尾节点,尾节点的上一个节点是头节点&#xff1b…

R语言实战——栅格聚合方法(超方便)

今天给大家分享一个栅格聚合方法,使用R语言实现! 1 为什么要做栅格聚合 栅格数据是我们地理学使用最广泛的数据类型之一。所谓栅格聚合其实就是根据栅格数据进行一系列运算得到一个我们想要的数据。 我个人认为,应用最广泛的,可…

notepad++中文出现异体汉字,怎么改正

notepad显示异体字,如何恢复? 比如 “门” 和 “直接” 的"直"字,显示成了 方法 修改字体, 菜单栏选择 Settings(设置),Style Configurator…(语言格式设置…)&#xf…

SSM城镇居民社区再生资源回收系统-计算机毕业设计源码04175

摘 要 本论文介绍了一个基于SSM(Spring Spring MVC MyBatis)技术的城镇居民社区再生资源回收系统的设计与实现。随着社会对环境保护意识的不断提高,再生资源回收成为了一种重要的环保行动。然而,传统的再生资源回收方式存在着信…

[数仓]十二、离线数仓(Atlas元数据管理)

第1章 Atlas入门 1.1 Atlas概述 Apache Atlas为组织提供开放式元数据管理和治理功能,用以构建其数据资产目录,对这些资产进行分类和管理,并为数据分析师和数据治理团队,提供围绕这些数据资产的协作功能。 Atlas的具体功能如下: 元数据分类 支持对元数据进行分类管理,例…

springboot3——项目部署

springboot的项目开发完了,怎么样把他放到服务器上或者生产环境上让他运行起来跑起来。就要牵扯到项目部署,打包的方式了。 springboot支持jar和war: 打jar包:默认方式,项目开发完打个jar包,通过命令把jar包起起来就…

刚刚,Claude国内可直连!

刚刚,Claude国内可直连! 大家好!我是科技博主Maynor。今天我们要分享一个激动人心的消息:知名AI助手Claude现在可以在国内直接访问了! 这对于科技爱好者、学生、研究人员和各行各业的专业人士来说都是一个重大利好。…

大模型时代的小红书+马蜂窝:华人团队开发 的AI旅行app

简介 一周前,由红杉投资的硅谷初创公司UTA AI推出了其核心产品Wanderboat AI,这是一个基于GPT-4技术的智能旅行规划工具。 该平台允许用户通过对话交互来明确旅行的偏好和需求,并提供包括目的地、活动和实用建议在内的定制化旅行建议。 Wa…

算法题-字符串

1.C字符串 c提供了一下两种类型的字符串表示形式: c风格字符串c引入的string类类型 1.1C风格字符串 C 风格的字符串起源于 C 语言,并在 C 中继续得到支持。字符串实际上是使用 null 字符 \0 终止的一维字符数组。因此,一个以 null 结尾的…

前端项目本地的node_modules直接上传到服务器上无法直接使用(node-sasa模块报错)

跑 jekins任务的服务器不能连接外网下载依赖包,就将本地下载的 node_modules直接上传到服务器上,但是运行时node-sass模块报错了ERROR in Missing binding /root/component/node_modules/node-sass/vendor/linux-x64-48/binding.node >> 报错信息类…

MySQl高级篇-事务、锁机制、MVCC

存储引擎的选择 在选择存储引擎时,应该根据应用系统的特点选择合适的存储引擎。对于复杂的应用系统,还可以根据实际情况选择多种存储引擎进行组合。 InnoDB:是Mysql的默认存储引擎,支持事务、外键。如果应用对事务的完整性有比较…

多媒体软件开发选择Animate软件还是Unity3D软件?

以下内容可能有一些片面,因为多媒体软件开发平台有很多,因为接触Animate和Unity3D比较多,所以这里仅对这两款进行分析! Animate软件与Unity3D软件都是经常在多媒体展馆中用来制作互动展示内容的,对于这两种开发平台&a…

【可视化大屏系列】Echarts之饼图绘制

本文为个人近期学习总结,若有错误之处,欢迎指出! Echarts之饼图绘制 前言1.需求2.实现效果3.大概思路4.代码实现子组件写法父组件写法5.附加(1)圆环饼图的绘制(2)南丁格尔玫瑰饼图A.半径展示数据的大小B.面积展示数据的大小前言 在前文页面布局、DataV 的使用、Echarts…

【数据结构】--- 堆的应用

​ 个人主页:星纭-CSDN博客 系列文章专栏 :数据结构 踏上取经路,比抵达灵山更重要!一起努力一起进步! 一.堆排序 在前一个文章的学习中,我们使用数组的物理结构构造出了逻辑结构上的堆。那么堆到底有什么用呢&…

GO channel 学习

引言 单纯地将函数并发执行是没有意义的。函数与函数间需要交换数据才能体现并发执行函数的意义。 虽然可以使用共享内存进行数据交换,但是共享内存在不同的goroutine中容易发生竞态问题。为了保证数据交换的正确性,必须使用互斥量对内存进行加锁&#…

ASP.NET Core----基础学习06----将所有数据在页面中显示 布局页面的使用

文章目录 1. 将数据以list的形式展示在页面中2. 布局页面的使用3. 自定义设置视图文件是否需要加载的JS 1. 将数据以list的形式展示在页面中 step1:在接口文件中添加新的方法GetAllStudents() step2:在mock的数据中添加方法GetAllStudents(&a…

关于mogdb vs kingbase的测评 说明

上周5同事转了一个帖子给我,说某公众号写了一篇MogDB vs KingBase的文章测评。该博主使用sysbench测了一些场景,其中大部分场景Mogdb相比KingBase而言表现都要差一些,只有一个场景比kingbase高很多。 老实说第一眼看到这个文章,我…

谷歌Gemini产品大揭秘:AI新纪元即将到来!

谷歌在Google I/O大会上预告了五款备受瞩目的Gemini产品,预计于7月15日和7月18日发布。这些产品将包括新版Imagen3、Gemini定制GPT、个性化回应功能、预设提示词以及录音与Google Photos集成等。 AI-321 | 专注全球AI工具推荐的网站 Ai工具集 | 专注ai人工智能 | 集…

代码随想录算法训练营第37天

卡码网 52. 携带研究材料 链接 #include <iostream> #include <vector> using namespace std;int knapsack(int w, vector<int>& weight, vector<int>& value) {vector<int> dp(w 1, 0);for(int i 0; i < weight.size(); i) {for…