【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/

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-21 14:10:01       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-21 14:10:01       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-21 14:10:01       45 阅读
  4. Python语言-面向对象

    2024-07-21 14:10:01       55 阅读

热门阅读

  1. 打方块(c++游戏)

    2024-07-21 14:10:01       15 阅读
  2. 【无标题】

    2024-07-21 14:10:01       14 阅读
  3. linux 公平调度关键点记录

    2024-07-21 14:10:01       16 阅读
  4. webSocker消息推送,ajax轮询

    2024-07-21 14:10:01       20 阅读
  5. 基于边缘检测和HSV的图像识别算法

    2024-07-21 14:10:01       15 阅读
  6. 黄金分割率g 和圆周率pi 有什么数学关系?

    2024-07-21 14:10:01       17 阅读
  7. 统计所有可行路径(动态规划)

    2024-07-21 14:10:01       16 阅读
  8. Python之后端Django(五)

    2024-07-21 14:10:01       18 阅读
  9. Python基础学习攻略:从入门到进阶的完整路径

    2024-07-21 14:10:01       14 阅读
  10. 前端算法入门【栈】

    2024-07-21 14:10:01       16 阅读
  11. watch监听vue2与vue3的写法

    2024-07-21 14:10:01       21 阅读
  12. 类 WAS_CLIPSeg_Model_Loade

    2024-07-21 14:10:01       20 阅读