【AI那些事】YOLO算法在香橙派AIpro上跑起来的初体验

一、本文概述

在之前推出的Yolo算法后,我在windows电脑上使用python语言运行将其跑通了,觉的这个识别算法很是有意思,就一直想着这个算法能不能跑在硬件的开发板上那就太好了。我就开始寻找市面上可行的开发板,一直期盼的事情真的会有结果,正所谓念念不忘,必有回想,找到了香橙派开发版,看到他能实现图片识别、语音识别、深度视觉学习等,这不就是我想要的么,不妨一试!

二、香橙派开发板开箱

开箱主要有开发板一块、已经安装好的散热器、TF卡、Type-c电源适配器、Type-c数据线

在这里插入图片描述

打开盒子的开发板,大小不大,还算小巧

在这里插入图片描述

三、香橙派AIpro开发版软硬件介绍

3.1、资料来源与途径

学习一个新的产品往往去产品官网产看官网的手册是最好的途径之一,官网的资料是一手的资料更加详细。

香橙派官网地址:http://www.orangepi.cn/

香橙派AIpro开发版资料地址:http://www.orangepi.cn/html/hardWare/computerAndMicrocontrollers/details/Orange-Pi-AIpro.html

3.2、开发板介绍

3.2.1、硬件介绍

OrangePi AIpro(8-12T)采用昇腾AI技术路线,具体为4核64位处理器+AI处理器,集成图形处理器,支持8-12TOPS AI算力,拥有8GB/16GB LPDDR4X,可以外接32GB/64GB/128GB/256GB eMMC模块,支持双4K高清输出。 Orange Pi AIpro引用了相当丰富的接口,包括两个HDMI输出、GPIO接口、Type-C电源接口、支持SATA/NVMe SSD 2280的M.2插槽、TF插槽、千兆网口、两个USB3.0、一个USB Type-C 3.0、一个Micro USB(串口打印调试功能)、两个MIPI摄像头、一个MIPI屏等,预留电池接口。

在这里插入图片描述

通过硬件介绍可知集成了图形处理器以及算力还算强劲,内存8GB是完全可够用了,在此板上跑通Yolo算法让我有了底气。

3.2.2、应用场景介绍

主要应用于AI教学实训,AI算法验证、智能小车、机械臂、边缘计算、无人机、人工智能、云计算、AR/VR、智能安防、智能家居、智能交通等AIOT各行各业中。

在这里插入图片描述

3.3、官方资料快速浏览

在官网中可查看资料

在这里插入图片描述

首先是查看开发板资源介绍来大概的了解能实现的大概功能

开发板正面:

在这里插入图片描述

开发板背面:

在这里插入图片描述

通过上面两图到的资源有:

* 两个美光的内存颗粒,单个4GB容量,两个一共8GB,位于散热器边缘;

* 两个HDMI接口,位于图中开发板下边缘和靠近左下角位置;

* 两个USB Type-A接口,位于以太网口旁边;

* 两个USB Type-C接口,其中靠边缘的是电源接口,靠近USB Type-A的是可以通信的;

* 一个3.5 mm耳机麦克风接口,位于两个HDMI接口中间;

* 一个散热器,散热器下方覆盖的是Ascend310芯片,型号Hi1910;

* eMMC接口,位于图中天线下方;

* BOOT0和BOOT1拨码开关,位于开发板右上角,和开发板上方中间位置;

* 一个FnLink的WiFi模组,里面封装的是RealTek的WiFi、蓝牙芯片RTL8211F;

* 一个千兆以太网口,位于图中开发板右下角;

* TF卡槽,位于图中开发板左上角;

* M.2 SSD接口,位于图中开发板左侧;

四、香橙派AIpro环境搭建

首先是镜像烧录,自带了TF卡中是有镜像的,也就不需要烧录镜像了,如果TF卡中没有镜像,那么就需要烧录镜像

4.1、TF卡镜像烧录步骤

在windows电脑上将linux镜像(此linux镜像就是官网的资料里Ubuntu或者openEuler镜像)烧录到卡中。

  1. 使用给提供的balenaEtcher工具,balenaEtcher工具下载地址:https://www.balena.io/etcher/
  2. 下载好之后,以管理员的方式进行打开。
  3. 将TF卡使用读卡器插电脑上,选择TF卡的盘符。(千万不要选错,不然就凉凉了)读卡器需要自备
  4. 点击Flash开始烧录
  5. 烧录成功后界面会提示Successful的字样
  6. 将TF卡拔出电脑。(先任务烂退出,再拔,不然容易对TF卡造成损伤)
  7. 将TF插入香橙派中。

在这里插入图片描述

4.2、启动

开发板支持从 TF 卡、eMMC 和 SSD(支持 NVMe SSD 和 SATA SSD)启动。 具体从哪个设备启动是由开发板背面的两个拨码(BOOT1 和 BOOT2)开关来控制的。

在这里插入图片描述

我们目前要使用TF卡启动。

所以背面的BOOT1和BOOT2要把拨码开关都打到右边。

在这里插入图片描述

这样就可以给板子进行上电了。我是这样连接的。

在这里插入图片描述

上电后风扇会转速很快这个不用慌,稍后稳定后风扇的噪声还是很小的,几乎听不到,大约等待30s左右就可以在显示屏上看到界面了。

在这里插入图片描述

通过鼠标和键盘输入密码

账号选择:HwHiAiUser

密码为:Mind@123

登录上之后,进入命令行模式。

4.3、联网

通过输入命令查看当前周边环境的wifi

```

nmcli d wifi list

```

在这里插入图片描述

我的是苹果手机,打开热点,热点名称并没有在此列表中,不能连接苹果手机的热点不是很友好。被迫无奈只能取出电话卡放在了安卓手机上打开热点让香橙派连接。

当查找到对应的网址时,使用下面命令行就可以实现联网了,下面命令行中有我的WIFI名称和密码不可照搬,要更换成自己的账号和密码

```

sudo nmcli d wifi connect XS-MIFI-03C5 password 12345678

```

其中XS-MIFI-03C5为wifi名称要替换成自己的

12345678为密码也要替换成自己的。

那么说为什么是这个呢,可以查看使用说明,即可一目了然。

```

nmcli d -h

```

在这里插入图片描述

查看一下IP,命令是

```

nmcli

```

在这里插入图片描述

我的IP为192.168.1.102,后面使用SSH登录时会用到,可以也先记一下。

这时连上网了,就可以ping一下验证一下网络是否ok.

那就ping一下香橙派的官网吧。

在这里插入图片描述

发现提示如下选项代表没有成功。原因是ping命令在运行中采用了ICMP协议,需要发送ICMP报文。 但是只有root用户才能建立ICMP报文。也就是说目前我们权限不够,升级为root权限即可。

升级root权限命令

```

su

```

这样再ping就OK了。

在这里插入图片描述

现在我们是使用键盘和鼠标都接在了香橙派上,当然还有一种方式登录方式是使用SSH。

使用软件MobaXterm进行登录。

在这里插入图片描述

这里会让再次输入香橙派的密码,密码为Mind@123,输入密码时无任何反应,继续进行即可直到输入完成回车即可。

登录成功。

在这里插入图片描述

这样就可以通过在自己电脑上通过wifi控香橙派了。

五、YOLO算法

5.1、 目标检测算法介绍

‌YOLO算法,全称‌You Only Look Once,是一种实时目标检测算法,以其快速的处理速度和简洁的网络结构著称。该算法通过一次前向传播即可完成对图像中多个目标的检测,包括物体的位置和类别信息。YOLO的核心思想是将目标检测任务转换为一个回归问题,通过一个单一的神经网络同时预测边界框的位置和类别概率。YOLO算法的优势在于其处理速度快,能够实时处理视频流,适用于需要快速响应的场景如自动驾驶汽车的视觉系统中。此外,YOLO算法的统一输出格式使得系统设计更为简洁,便于部署到嵌入式设备中。YOLO算法的发展经历了多个版本,从最初的YOLOv1到最新的YOLOv8,每个版本都在提高检测精度和速度上进行优化。例如,YOLOv4引入了‌CutMix和马赛克数据增强方法,提高了模型对小物体的检测能力。

5.2、算法概念介绍

本次实验我们用的是YOLOv5,主要的算法如下:

* 主干网络:基于CSPNet(Cross Stage Partial Network)设计,如CSPDarknet53,用于提取图像特征。

* 颈部网络:如PANet(Path Aggregation Network),用于进一步融合不同层次的特征信息。

* 检测头:用于生成最终的检测结果,包括目标的边界框和类别概率。

* 多尺度训练:通过在不同尺寸的图像上进行训练,提高模型对不同尺度目标的检测能力。

* 数据增强:采用多种数据增强技术,如Mosaic数据增强,增加训练数据的多样性和鲁棒性。

* 网络混合精度训练:支持混合精度训练,可以在保证精度的同时提高训练速度。

* 自适应锚框:根据训练数据自动调整锚框尺寸,提高边界框的预测精度。

YOLOv5的性能评估:

* 平均精度(mAP):用于多类别目标检测的评估指标,计算每个类别的精度并取平均值。

* 召回率(Recall):模型正确预测的正类别目标数量与总正类别目标数量的比率。

* F1分数:精度和召回率的调和平均值,用于综合评估模型性能。

* 精度(Precision):模型正确预测的正类别目标数量与总预测正类别目标数量的比率。

F1-Confidence Curve就是F1-Score随着Confience逐渐增高而变化的曲线。是性能评估的重要方法之一。

在这里插入图片描述

通过途中看出表现还算良好。

5.3、在香橙派下载Yolov5

安装命令如下

```

git clone https://github.com/ultralytics/yolov5

```

当因网络问题下载失败时,需要设置一下代理。

可参考下面的代码方便设置代理。将以下代码保存为 ~/.proxy.sh 文件,文件内容根据自己实际需要修改。

```

#!/bin/bash

HOST=192.168.3.6 # 代理服务IP

PORT=7890 # 代理服务端口

export http_proxy=http:// H O S T : HOST: HOST:PORT

export https_proxy=http:// H O S T : HOST: HOST:PORT

```

编写完代码后,运行一下命令

```

source ~/.proxy.sh

```

5.4、Python环境安装

香橙派中自带了Python3环境,如果没带需要自行安装

5.5、见证奇迹泡一下试试

运行如下代码

```

python detect.py --source ./data/images/car.jpg

```

在这个过程中需要安装一个依赖包等跑完就好,不用理会。

这个图片是我在抖音上截取的一个发生车祸的截图,然后对其进行识别。

我们可以data/image/car.jpg中查看图片。

在这里插入图片描述

可以看到对车和人进行了识别检测,检测结果的概率用小数来表示准确性。

再试一张。

在这里插入图片描述

实验成功,还算不错。

六、体验与总结

从开箱到搭建完成,整体体验下来,有几个点感觉非常不错,就是环境搭建的过程很顺利,用户文档写的很友好,主要是这个是我首次在开发板上跑通Yolo,还是很有意义的。

6.1、优点:

  1. 板子有WIFI和以太网,有网络后续就可以拓展一下,将识别的结果做一些处理呈现到上位机或者云端的这样的一个上下联动的应用场景。
  2. 性能高,能够满足基本的算法识别要求。
  3. 噪音非常小,是我见到的噪音最小的板子了。

6.2、缺点:

  1. 不支持连接苹果手机的热点。
  2. 技术支持途径不易方便查找。
  3. 资料编写的内容是详细的,但是不易阅读,建议改成网页的格式。
  4. 没有电源开关,只能拔充电器感觉多少有点暴力,有的时候并不是特别想拔充电器。

最后祝香橙派越来越好,越来越完善!

七、参考链接

* 香橙派AIPro产品介绍页面:http://www.orangepi.cn/html/hardWare/computerAndMicrocontrollers/details/Orange-Pi-AIpro.html

* 香橙派AIPro资料下载页面:http://www.orangepi.cn/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-AIpro.html

* 香橙派AIPro Ubuntu镜像:https://pan.baidu.com/s/1csbugZiKsuL_NHCOmyi1BA?pwd=ma6z

* 香橙派AIPro 用户手册: https://pan.baidu.com/s/1clOIklNzsHSigsrZzeWWMA?pwd=va56

* yolov5开源仓库地址:https://link.csdn.net/?target=https%3A%2F%2Fgithub.com%2Fultralytics%2Fyolov5

pi.cn/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-AIpro.html

* 香橙派AIPro Ubuntu镜像:https://pan.baidu.com/s/1csbugZiKsuL_NHCOmyi1BA?pwd=ma6z

* 香橙派AIPro 用户手册: https://pan.baidu.com/s/1clOIklNzsHSigsrZzeWWMA?pwd=va56

* yolov5开源仓库地址:https://link.csdn.net/?target=https%3A%2F%2Fgithub.com%2Fultralytics%2Fyolov5

* MobaXterm终端工具官网:https://mobaxterm.mobatek.net/

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

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

相关文章

【学术研究、研究热点、最新前沿】如何跟踪最新的论文

1.跟踪arxiv 使用https://www.arxivdaily.com/接收每天的推送。 2.跟踪热点文章的引用 使用semantic scholar。 3.跟踪某个学术大佬或者主题 3.1 使用web of science。 3.2 使用文献鸟 4.跟踪某个期刊

迭代学习笔记

一、迭代学习定义和分类 1、直观理解 迭代学习一般应用于重复性的场景。比如控制一个单自由度的小车以特定的速度曲线移动到指定位置,整个时间是10s,控制频率是0.01,那么整个控制序列就会有1000个点。这1000个点在10s内依次发出&#xff0c…

小白快速入门量化交易的自学路径

今年已然过去一半了,年初立的flag都实现了吗? 据我多年来的观察,很多小白萌新开始学习量化,特别是年初的时候立下“宏图大志”,但有相当一部分最终没能"上岸",从入门到放弃,从然后到没…

数据结构2—顺序表(附源码)

1.线性表 线性表(linear list)是n个具有相同特性的数据元素的有限序列。线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串... 线性表在逻辑上是线性结构,也就是说连续的一条直线…

抽象java入门1.5.2

前言: 坑留下来是为了补的 正片: 一、面向对象特性 二、面向对象编程详细展开 这些没有加粗的方法究竟来源哪? 在上一期的提示中,我们说了这些方法来源于面向对象编程的一个特性 验证: 第一步:我们先…

区块链空投之空投合约

关于 solidity、空投、智能合约 空投作为区块链行业最大的惊喜之一,很多人都是通过空投才接触到了这一领域。 甚至有很多专业薅空投羊毛的专业玩家。行业内有句话,小薅养活妻儿、大薅… 文章目录 前言空投到底是什么空投什么?空投合约代码空投步骤代码解析代码详解前言 今…

代码随想录算法训练营第23天|39. 组合总和、40.组合总和II、131.分割回文串

打卡Day23 1.39. 组合总和2.40.组合总和II3.131.分割回文串 1.39. 组合总和 题目链接:39. 组合总和 文档讲解: 代码随想录 这道题和昨天做的组合之和由两个区别:被选的元素没有数量限制,同时被选的元素可以无限重复,…

【嵌入式开发之标准I/O】流的刷新、定位以及格式化输出、输入

流的刷新 int fflush(FILE *fp); 成功时返回0;出错时返回EOF。 将流缓冲区中的数据写入实际的文件。 Linux下只能刷新输出缓冲区,输入缓冲区丢弃。 如果输出到屏幕使用fflush(stdout)。 流的定位 流的定位:ftell()函数 long ftell(FILE *stream)…

JavaScript:节流与防抖

目录 一、前言 二、节流(Throttle) 1、定义 2、使用场景 3、实现原理 4、代码示例 5、封装节流函数 三、防抖(Debounce) 1、定义 2、使用场景 3、实现原理 4、代码示例 5、封装防抖函数 四、异同点总结 一、前言 …

信息检索(39):Condenser: a Pre-training Architecture for Dense Retrieval

Condenser: a Pre-training Architecture for Dense Retrieval 摘要1 引言2 相关工作3 方法3.1 前提3.2 Transformer 编码器的问题3.3 Condenser3.4 Transformer 编码器的 Condenser 4 实验4.1 预训练4.2 句子相似度4.3 开放域问答检索4.4 Web search 检索 5 注意力分析6 结论 …

Adobe Premiere Pro(Pr)安装包软件下载

一、简介 Adobe Premiere Pro(简称Pr)是由Adobe公司开发的一款功能强大的视频编辑软件。它支持多平台使用,包括Windows和Mac系统,并且拥有良好的兼容性和高效的性能。Premiere Pro不仅提供了视频剪辑、特效添加、音频处理等基本功…

《从C/C++到Java入门指南》- 9.字符和字符串

字符和字符串 字符类型 Java 中一个字符保存一个Unicode字符,所以一个中文和一个英文字母都占用两个字节。 // 计算1 .. 100 public class Hello {public static void main(String[] args) {char a A;char b 中;System.out.println(a);System.out.println(b)…

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 二进制游戏(200分)- 三语言AC题解(Python/Java/Cpp)

🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 🍿 最新华为OD机试D卷目录,全、新、准,题目覆盖率达 95% 以上,支持题目在线…

npm install时报错 reason: connect ETIMEDOUT

在VS code中导入新项目,执行npm install时报错: npm warn old lockfile Could not fetch metadata for antv/coord0.1.0 FetchError: request to https://registry.npmjs.org/antv%2fcoord failed, reason: connect ETIMEDOUT 150.242.56.251:443 npm w…

大数据之路 读书笔记 Day8 数据存储

回顾: 大数据之路 读书笔记 Day7 实时技术 简介及流式技术架构 大数据之路 读书笔记 Day6 离线数据开发之数据开发平台 数据存储 1 数据类型 实时任务在运行过程中,会计算很多维度和指标,这些数据需要放在一个存储系统中作为恢复或者关联使…

微信小程序开发:DOM 相关 API 使用详解

在微信小程序开发中,与传统的网页开发相比,由于安全性和性能考虑,访问 DOM(文档对象模型)是受限的。然而,微信小程序提供了一些特定的 API,使开发者能够处理和操作视图层,实现丰富的…

Transformer之Vision Transformer结构解读

论文地址 代码地址 写在前面 什么是Transformer呢?就是把符号向量化为Token, 再和位置编码求和或者做阿达玛积,最后送入一定层数的Attention Block构成的Encoder和Decoder,就完成了Transformer的基础功能。 那么,把上…

C基础函数——内存分配(未完)

在C语言中,内存管理是非常重要的一部分。C语言提供了几种不同的函数用于动态内存分配和释放,这些函数允许程序在运行时根据需要分配和回收内存。以下是C语言中常用的几个内存管理函数: malloc() void malloc(size_t size); 这个函数用于请求…

C++中枚举(enum)的用法和限制

在C中,枚举(enum)是一种用户定义的类型,它允许程序员为整数常量指定易于阅读的名字。枚举类型是由一组命名的整型常量组成的类型,每个常量都表示该类型的一个有效值。枚举在编程中常用于表示一组固定的值,如…

MySQL:mysql的数据类型

MySQL 作为一个流行的关系型数据库管理系统,支持多种数据类型以满足不同的数据处理和存储需求。正确理解和使用这些数据类型对于提高数据库性能、确保数据完整性和准确性至关重要。 MySQL 数据类型 数据类型定义了列中可以存储什么数据以及该数据怎样存储的规则。…