香橙派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.rhkb.cn/news/377201.html

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

相关文章

取消文字默认选中效果

点击的时候会选中文字 .user-select-none {user-select: none;}<div class"model user-select-none" onclick"createRipple(event)">Click me for ripple effect outside </div>点击再快也不会选中了

【C++】——类和对象(上)

文章目录 什么是类和对象类的定义类的访问限定符及其封装类的作用域类的实例化类的对象的大小计算this指针 什么是类和对象 类是一个用户定义的类型&#xff0c;它封装了数据&#xff08;称为属性或成员变量&#xff09;和操作这些数据的方法&#xff08;称为成员函数或方法&a…

Seven layers of the metaverse

看到一篇关于元宇宙的文章&#xff0c;分享给大家&#xff0c;供大家参考。 随着物理世界和数字世界的融合&#xff0c;元宇宙正在推动我们数字能力的新边界。从人类身份、个性和声誉到资产、情感和历史&#xff0c;元宇宙的虚拟现实中可以以全新的方式进行交互、控制和体验。因…

OpenGL笔记十之Shader类的封装

OpenGL笔记十之Shader类的封装 —— 2024-07-10 晚上 bilibili赵新政老师的教程看后笔记 code review! 文章目录 OpenGL笔记十之Shader类的封装1.运行2.目录结构3.main.cpp4.application4.1.CMakeLists.txt4.2.Application.h4.3.Application.cpp 5.assets5.1.shaders&#xf…

【吊打面试官系列-ZooKeeper面试题】简述 Zookeeper 文件系统?

大家好&#xff0c;我是锋哥。今天分享关于 【简述 Zookeeper 文件系统?】面试题&#xff0c;希望对大家有帮助&#xff1b; 简述 Zookeeper 文件系统? Zookeeper 提供一个多层级的节点命名空间&#xff08;节点称为 znode&#xff09;。与文件系统不同的是&#xff0c;这些节…

prometheus+grafana应用监控配置

配置Prometheus 官方地址&#xff1a;Download | Prometheus &#xff08;wegt下载压缩包&#xff0c;解压并重命名prometheus&#xff0c;文件放于/data/prometheus即可&#xff09; 配置 service方法(文件放于 /etc/systemd/system/prometheus.service)&#xff1a; [Unit…

博物馆地图导航系统:高精度地图引擎与AR/VR融合,实现博物馆数字化转型

在人民日益追求精神文化的时代下&#xff0c;博物馆作为传承与展示人类文明的璀璨殿堂&#xff0c;其重要性不言而喻。然而&#xff0c;随着博物馆规模的不断扩大和藏品种类的日益丰富&#xff0c;游客在享受知识盛宴的同时&#xff0c;也面临着“迷路”与“错过”的困扰。博物…

【CUDA】CUDA中缓存机制对计时的影响

笔者在阅读知乎上一个关于CUDA编程的专栏时&#xff0c;发现作者写的很多文章中都会附带计时的模块用于评估程序的运行效率&#xff0c;然而笔者发现&#xff0c;在运行这篇文章中的代码时时&#xff0c;得到的结果和作者的结果有较大差异&#xff0c;主要体现在&#xff1a;使…

前端调试技巧(npm Link,vscode调试,浏览器调试等)

Npm Link 功能&#xff1a; 在本地开发npm模块的时候&#xff0c;我们可以使用npm link命令&#xff0c;将npm 模块链接到对应的运行项目中去&#xff0c;方便地对模块进行调试和测试 断点调试 vscode调试 Debug Vue2 Project 目标&#xff1a;在VSCode中调试项目代码…

巧用 VScode 网页版 IDE 搭建个人笔记知识库!

[ 知识是人生的灯塔&#xff0c;只有不断学习&#xff0c;才能照亮前行的道路 ] 巧用 VScode 网页版 IDE 搭建个人笔记知识库! 描述&#xff1a;最近自己在腾讯云轻量云服务器中部署了一个使用在线 VScode 搭建部署的个人Markdown在线笔记&#xff0c;考虑到在线 VScode 支持终…

[K8S]一、Flink on K8S

Kubernetes | Apache Flink 先编辑好这5个配置文件&#xff0c;然后再直接执行 kubectl create -f ./ kubectl get all kubectl get nodes kubectl get pods kubectl get pod -o wide kubectl get cm -- 获取所有的configmap 配置文件 kubectl logs pod_name -- 查看…

智能汽车域控制器FOTA升级方案探讨

1.概述 本文探讨的OTA升级仅针对运行linux系统的域控制器&#xff0c;升级方式为FOTA&#xff0c;探究升级文件从OTA服务器下载到域控中以后&#xff0c;如何将升级文件安装到存储系统。 为安全起见&#xff0c;支持FOTA升级的存储区域必须支持AB分区设计&#xff0c;每个分区…

浅学三次握手

数据要完成传输&#xff0c;必须要建立连接。由于建立TCP连接的过程需要来回3次&#xff0c;所以&#xff0c;将这个过程形象的叫做三次握手。 结合上面的图来看更清楚。 先说三次握手吧&#xff0c;连接是后续数据传输的基础。就像我们打电话一样&#xff0c;必须保证我和对方…

c++习题10-骑士得到的金币数

目录 一&#xff0c;题目 二&#xff0c;思路 三&#xff0c;代码 一&#xff0c;题目 二&#xff0c;思路 阅读题目之后可以列出如下的数字&#x1f447; 观察上图有如下思路&#xff08;主要是找到规律&#xff09; 给个for循环包裹住需要处理的语句&#xff0c;循环…

k8s快速部署一个网站

1&#xff09;使用Deployment控制器部署镜像&#xff1a; kubectl create deployment web-demo --imagelizhenliang/web-demo:v1 kubectl get deployment,pods[rootk8s-matser ~]# kubectl get pods NAME READY STATUS RESTARTS A…

The Web3 社区 Web3 产品经理课程

概述 / 深耕区块链行业 11 年&#xff0c;和很多产品经理都打过交道&#xff1b;遇到过优秀的产品经理&#xff0c;也遇到过比较拉垮的产品经理。多年工作中&#xff0c;曾在某些团队&#xff0c;承载技术兼产品经理的角色&#xff1b;也参与过很多 Web3 外包项目&#xff0c;包…

【研路导航】成功保研面试:避免迷惑发言,掌握关键表达技巧

更多保研&#xff0c;夏令营&#xff0c;预推免与信息时间节点资讯可以在文章末尾领取&#xff01; 写在前面 在保研面试的过程中&#xff0c;准备充分是成功的关键。每年的夏令营都是竞争激烈的时刻&#xff0c;而如何在面试中展现出最佳的自我&#xff0c;不仅是一场考验&a…

java实战项目-学生管理系统(附带全套源代码及其登录注册功能的实现)--《进阶篇》

一、前言 新增了登录注册的功能&#xff0c;代码量可能会有点大&#xff0c;所有代码加起来差不多560行。这个项目对于小白来说肯定是一大难关了。文章中的每张图都是作者亲手绘制的&#xff0c;简单明了&#xff0c;如果大家认同作者&#xff0c;希望可以支持一下作者。全套源…

elasticsearch 查询超10000的解决方案

前言 默认情况下&#xff0c;Elasticsearch集群中每个分片的搜索结果数量限制为10000。这是为了避免潜在的性能问题。 但是我们 在实际工作过程中时常会遇到 需要深度分页&#xff0c;以及查询批量数据更新的情况 问题&#xff1a;当请求form size >10000 时&#xff0c…

【从0到1进阶Redis】主从复制 — 主从机宕机测试

上一篇&#xff1a;【从0到1进阶Redis】主从复制 测试&#xff1a;主机断开连接&#xff0c;从机依旧连接到主机的&#xff0c;但是没有写操作&#xff0c;这个时候&#xff0c;主机如果回来了&#xff0c;从机依旧可以直接获取到主机写的信息。 如果是使用命令行&#xff0c;来…