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

news2024/9/22 9:41:18

香橙派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.coloradmin.cn/o/1927436.html

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

相关文章

Ubuntu系统安装mysql之后进行远程连接

1.首先要配置数据库允许进行远程连接 1.1 打开MySQL配置文件 /etc/mysql/mysql.conf.d/mysqld.cnf sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf1.2 修改 bind-address 行 #按i进入插入模式 bind-address 0.0.0.0 #按 Esc 键退出插入模式。 #输入:wq 然后按 Enter 保存并退…

alike-cpp 编译

1. 源码链接: https://github.com/Shiaoming/ALIKE-cpp 2.已经安装好显卡驱动,cuda,cudnn,没安装的参考: 切记装cuda-11.x的版本,最好cuda11.3的版本 ubuntu重装系统后,安装cuda,cudnn-CSDN博客 3.安装…

UE5.4新功能 - MotionDesign上手简介

MotionDesign是UE中集成的运动图形功能,我们在游戏中经常会见到,例如前方漂浮于空中的若干碎石,当玩家走进时碎石自动吸附合并变成一条路,或者一些装饰性的物件做随机运动等等,在引擎没有集成运动图形时,这…

《0基础》学会Python——第九讲

函数 一、函数的定义: 指在程序中创建一个独立的代码块,用于完成特定的任务或执行特定的操作。函数通常接收输入参数,并返回输出结果。通过定义函数,可以将复杂的程序分解成更小的模块,提高代码的可读性和可维护性。 …

【密码学】密码学数学基础:群的定义

一、群的定义 在密码学中,群(Group)的概念是从抽象代数借用来的,它是一种数学结构,通常用于描述具有特定性质的运算集合。 群的定义 群定义中的几个关键要素: 集合:首先,群是由一系…

一文了解SpringCloud

Springcloud 什么是Springcloud? 官网:Spring Cloud Data Flow Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控…

保姆级教程--容器化部署prometheusd监控系统(yaml文件、docker命令均有详细解释、大白话描述服务作用、适合小白)

文章目录 前言用到的服务简述容器化部署prometheus的优势 环境一、安装docker二、容器化构建Prometheus监控系统1 部署Prometheus2.部署grafana 三、prometheus监控其他主机1.部署docker补充、如何查找仪表盘 前言 用到的服务简述 Prometheus:这是一个开源的监控系…

使用Copilot 高效开发繁忙的一天

在现代软件开发的世界里,使用AI工具如GitHub Copilot可以显著提高开发效率。 早晨:规划与启动 7:00 AM - 起床与准备 开发者早早起床,享用健康的早餐,并浏览新闻和技术博客,了解最新的科技动态。快速整理思路&#x…

WordPress:无法创建新文章?创建新帖子时候页面空白

wordPress中我们新建文章的时候,会遇到页面空白,这个问题是怎么导致呢?我们可以打开F12开发者模式看下报错信息,这是一个警告信息 Warning: Creating default object from empty value in /pub 到数据库 wp_posts中查看生成了很…

网络配置命令

文章目录 一、查看网络接口信息 ifconfig1.1 网络接口名称1.2 使用 ifconfig 查看网络接口信息1.2.1 输出示例1.2.2 输出解释 1.3 查看特定网络接口信息1.3.1 输出示例 1.4 查看所有网络接口信息1.5 特殊网络接口 二、修改网络配置文件2.1 配置文件示例2.2 使配置生效2.3 关闭 …

【07】分布式事务解决方案

1、事务简介 事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。在关系数据库中,一个事务由一组SQL语句组成。事务应该具有ACID四个特性:原子性、一致性、隔离性、持久性。任何事务机制在实现时,都应该考虑事务…

【Nuxt3】vue3+tailwindcss+vuetify引入自定义字体样式

一、目的 在项目中引入自定义的字体样式(全局页面都可使用) 二、步骤 1、下载好字体 字体的后缀可以是ttf、otf、woff、eot或者svg(推荐前三种) 以抖音字体为例下载好放在静态文件夹(font)下 案例字…

Python for循环while循环实战: 原神加载画面

原神加载画面在我们看起来是能一直运行的,实际上,它就是用了循环。今天,我们来模拟一下。 我们用123、234、345、456分别代表四个画面,结果是这样的。 这是代码: a [123, 234, 345, 456] while True:for i in a:pri…

python获取豆瓣评分9分以上的电影

我想生成的文件用excel保存,所以得安装一下这个 pip install pandas openpyxl代码 import requests import pandas as pd# 模拟浏览器请求头 headers {User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91…

轻空间强势维护知识产权,捍卫气膜声学专利

在当前创新驱动的时代,知识产权已成为企业核心竞争力的重要组成部分。轻空间,作为一家以技术创新为驱动的公司,一直致力于为客户提供高质量的气膜建筑产品和服务。近期,我们注意到有不法分子冒用苏州大学多功能气膜综合馆项目的名…

springboot 适配ARM 架构

下载对应的maven https://hub.docker.com/_/maven/tags?page&page_size&ordering&name3.5.3-alpinedocker pull maven:3.5.3-alpinesha256:4c4e266aacf8ea6976b52df8467134b9f628cfed347c2f6aaf9e6aff832f7c45 2、下载对应的jdk https://hub.docker.com/_/o…

Ceph集群部署(基于ceph-deploy)

目录 部署Ceph集群的方法 Ceph生产环境推荐 部署Ceph实验(基于ceph-deploy) 一、准备工作 二、环境准备 1.关闭selinux与防火墙 2.修改主机名并且配置hosts解析映射 3.admin管理节点配置ssh免密登录node节点 4.安装常用软件和依赖包 5.配置时间…

【全网最全最详细】Spring与SpringBoot最新面试题

目录 一、Spring框架概述 1.1 什么是Spring? 1.2 spring优点有哪些? 二、IOC与DI 2.1 你知道getBean方法的有几种重载方式吗? 2.2 Spring有几种依赖注入方式? 2.3 为什么Spring不建议使用字段注入方式? 2.4 B…

数据结构_顺序表专题

何为数据结构? 咱今天也来说道说道...... 数据结构介绍 准确概念 数据结构就是计算机存储、组织数据的方式 概念分析 从上句分析,数据结构是一种方式。一种管理数据的方式。为了做什么?为的就是计算机存储数据,组织数据。 …

docker部署seata 2.0.0

环境准备 当前使用的环境: MySQL:8.0 nacos:2.2.3 关于如何在docker中部署nacos 2.2.3,请参考之前文章: docker部署nacos 2.2.3 拉取镜像 docker pull seataio/seata-server:2.0.0查看nacos、mysql、宿主机的ip d…