【香橙派开发板测试】:在黑科技Orange Pi AIpro部署YOLOv8深度学习纤维分割检测模型


文章目录

  • 🚀🚀🚀前言
  • [一、1️⃣ Orange Pi AIpro开发板相关介绍](#一、1️⃣ Orange Pi AIpro开发板相关介绍)
    • [1.1 🎓 核心配置](#1.1 🎓 核心配置)
    • [1.2 ✨开发板接口详情图](#1.2 ✨开发板接口详情图)
    • [1.3 ⭐️开箱展示](#1.3 ⭐️开箱展示)
  • 二、2️⃣配置开发板详细教程
    • [2.1 🎓 烧录镜像系统](#2.1 🎓 烧录镜像系统)
    • [2.2 ✨配置网络](#2.2 ✨配置网络)
    • [2.3 ⭐️使用SSH连接主板](#2.3 ⭐️使用SSH连接主板)
  • 三、3️⃣部署yolov8深度学习纤维分割检测模型
    • [3.1🚀 yolov8模型介绍](#3.1🚀 yolov8模型介绍)
      • [3.1.1 概述](#3.1.1 概述)
      • [3.1.2 核心改进](#3.1.2 核心改进)
    • [3.2 🎓 创建虚拟环境并安装相关库](#3.2 🎓 创建虚拟环境并安装相关库)
    • [3.3 ✨下载yolov8源码](#3.3 ✨下载yolov8源码)
    • [3.4 ⭐️train与detect代码撰写](#3.4 ⭐️train与detect代码撰写)
    • [3.5 🎯纤维分割模型训练](#3.5 🎯纤维分割模型训练)
    • [3.6 🔥纤维分割模型检测推理](#3.6 🔥纤维分割模型检测推理)
    • [3.7 🎯调用摄像头检测](#3.7 🎯调用摄像头检测)
  • 四、4️⃣相关模型测试
    • [4.1 🎓 如何使用官方案例](#4.1 🎓 如何使用官方案例)
    • [4.2 ✨官方案例运行结果](#4.2 ✨官方案例运行结果)
  • 五、5️⃣开发板使用感受

🚀🚀🚀前言

近期在做纤维定性定量项目的工程化部署,需要运用嵌入式技术,将我们的深度学习模型还有软件进行部署,通过调研发现深圳市迅龙软件有限公司旗下开源产品品牌Orange Pi非常符合需求,经过多项测试之后选择Orange Pi AIpro作为项目开发板,非常喜欢它的一句标语:"为AI而生"
深圳市迅龙软件有限公司成立于2005年,是全球领先的开源硬件、开源软件及智能产品品牌商,致力于让全世界每个极客、创客、电子爱好者享用来自中国的优质、低价的开源产品及智能产品,拓展无限可能,通过大规模的社会化协作去创建一个更加美好的信息化人类文明。目前迅龙业务遍及美国、英国、意大利、俄罗斯、日本、南非、东南亚等100多个国家和地区。更多详细信息可以参考公司链接网址:http://www.xunlong.tv/html/aboutUs/index.html


一、1️⃣ Orange Pi AIpro开发板相关介绍

香橙派的Orange Pi AIpro是一款专为人工智能(AI)应用开发设计的高性能开发板。它集成了先进的处理器、内存、存储以及丰富的接口,旨在满足AI边缘计算、深度学习、机器视觉、自然语言处理等多个领域的需求。

Orange Pi AIpro官方网址:http://www.orangepi.cn/index.html

1.1 🎓 核心配置

Orange Pi AIpro搭载了高性能的AI处理器,支持高达数十TOPS(每秒万亿次操作)的AI算力,能够高效运行复杂的AI模型和算法,除了AI处理器外,还配备了多核CPU,提供强大的通用计算能力,支持多任务并行处理。配备高容量的LPDDR4X内存和eMMC或SSD存储,确保数据的高速读写和模型的高效加载,提供HDMI、USB、GPIO、SATA/NVMe M.2插槽、TF卡插槽等多种接口,支持多种外设连接和扩展,满足不同场景下的需求,支持双HDMI输出,能够同时驱动两个高清显示屏,适用于需要视觉反馈的应用场景,支持Ubuntu、openEuler等主流操作系统,提供丰富的开发工具和文档,帮助开发者快速上手并进行项目开发,进一步拓宽了应用场景,可以应用到如下场景:

  • AI边缘计算:在物联网设备中实现AI算法的本地化处理,减少数据传输延迟和带宽消耗。
  • 深度学习与机器视觉:支持图像识别、视频分析、物体检测等任务,适用于安防监控、智能制造等领域。
  • 自然语言处理:支持语音识别、语义理解等任务,适用于智能家居、智能客服等领域。
  • 智能机器人:为智能小车、机械臂等机器人提供强大的计算能力和AI支持。
  • 云计算与大数据:作为云计算节点的一部分,处理大规模数据并运行复杂的AI算法。

我这边收到的板子是8GB内存,8TOPS INT8算力,详细配置表格如下:

|---------|-----------------------------------------------------------------------------------------------------|
| CPU | 4核64位处理器+ AI处理器 |
| GPU | 集成图形处理器 |
| AI算力 | 8-12TOPS算力 |
| 内存 | LPDDR4X:8GB/16GB(可选),速率:3200Mbps |
| 存储 | • SPI FLASH:32MB • SATA/NVME SSD(M.2接口2280) • eMMC插槽:32GB/64GB/128GB/256GB(可选),eMMC5.1 HS400 • TF插槽 |
| WIFI+蓝牙 | Wi-Fi 5双频2.4G和5G BT4.2/BLE |
| 以太网收发器 | 10/100/1000Mbps以太网 |
| 显示 | • 2xHDMI2.0 Type-A TX 4K@60FPS • 1x2 lane MIPI DSI via FPC connector |
| 摄像头 | 2x2-lane MIPI CSI camera interface,兼容树莓派摄像头 |
| USB | • USB 3.0 HOST x2 • USB Type-C 3.0 HOST x1 • Micro USB x1 串口打印功能 |
| 音频 | 3.5mm耳机孔音频输入/输出 |
| 按键 | 1x关机键、1xRESET键、2x启动方式拨动键、1x烧录按键 |
| 40PIN | 40PIN 功能扩展接口,支持以下接口类型: GPIO、UART、I2C、SPI、 I2S、PWM |
| 风扇 | 风扇接口x1 |
| 预留接口 | 2PIN电池接口 |
| 电源 | Type-C PD 20V IN ,标准65W |
| 支持的操作系统 | Ubuntu、openEuler |
| 产品尺寸 | 107*68mm |
| 重量 | 82g |

1.2 ✨开发板接口详情图

从使用文档中的开发板正反面照片也能看出该板子的集成度非常高,主板上集成了多种功能和接口,如处理器(标明为"4核64位处理器+AI处理器")、内存模块(支持8GB/16GB LPDDR4X)、以及电源管理系统(包括"3.3V PWR"、"5V PWR"、"DDR PWR"、"AI PWR"、"CORE PWR"等多种供电模式),显示了它在处理复杂任务、提供强大性能和灵活配置方面的能力,搭载4核64位处理器,并且额外配备了AI处理器,这样的组合不仅保证了基础计算的高效性,还增加了对AI应用的支持,使得开发板在机器学习、图像处理等AI领域的应用成为可能(后面将进行AI模型部署测评)。而且支持WiFi5+蓝牙4.2,这款开发板在无线连接方面具备较高的标准和良好的兼容性,方便与各种外设和传感器进行无线通信,并且该开发板预留多个扩展接口,也能方便用户根据需要进行功能扩展和硬件升级。

1.3 ⭐️开箱展示

我第一眼看到包装盒给我的感觉是非常小巧可爱的,大概也就巴掌大一点,配备了一个快充充电器,一个开发板,还有一个32g的SD卡,该卡用来烧录镜像使用(注意:没有读卡器,后面烧录需要自己准备TF读卡器);


打开包装盒之后最吸引我的就是散热器,散热片设计具有精致的金属感,不仅美观,而且有助于设备的散热,保证长时间运行的稳定性,总体来说Orange Pi AIpro的做工精细,整体给人一种高品质的感觉 ,虽然具体材质信息未详细提及,但从外观的质感和散热片的设计可以推测,开发板采用了适合散热和耐用的材质,从整体的布局来看,该板接口布局集中在一侧,便于开发者在日常使用中插拔外设,这种设计提高了使用的便捷性,减少了线缆杂乱的问题。我这边做测试的并没有外壳包装,通过官网可以看到Orange Pi AIpro的专属定制外壳,非常精致并且便于携带。

二、2️⃣配置开发板详细教程

在开始下面工作之前可以先去Orange Pi 官网下载相关文件,找到下载与服务选项,选择对应的开发板,我用的是Orange Pi AIpro,下面也都是用该板子做测试与部署。

点进去之后一定要下载官方工具,官方镜像,以及用户手册,一定要认真阅读用户手册!!! ,在实际操作中用户手册解决了我很多问题。用户手册一共写了165页,基本上把每一个部件的调试都写上了,非常的详细,而且很有逻辑,即使是新手小白也能照着文档操作。

2.1 🎓 烧录镜像系统

这一步只需要准备Orange Pi AIpro送的32g的SD卡、带有TF卡槽的读卡器、烧录软件balenEther(在官方工具中),这里我在使用balenEther烧录软件的时候一直有问题,最后一步一直提示烧录失败,建议以管理员权限打开,如果还不行可以更换昇腾的Ascend烧录软件,我在使用Ascend烧录软件是一次成功的;


2.2 ✨配置网络

烧录成功后,其实就已经基本上差不多了,但是为了后续能够方便文件上传等操作,我们需要配置网络,进行SSH连接,连接到我们的主机/笔记本电脑上去。

将烧录好的SD卡重新插回开发板中,将开发板用充电器连接电源,再准备一条网线连接到你的主机或者笔记本电脑上面,最后再准备一个显示器或者屏幕,用HDMI线将开发板与显示器连接(为了方便后续操作我这里在USB3.0接口插了一个无线键盘鼠标接收器 ),稍等一会就能看见系统显示界面了。

然后输入密码进入系统,默认的就是rootHwHiAiUser用户,这两个用户的密码都是Mind@123

进入系统之后就可以连接无线网了,这里有一点需要注意,你的主机和你的开发板连接的网络必须是同一个局域网,不然后面互联的时候会显示连接超时,一直连接不上

连接无线网之后就可以鼠标右键在电脑桌面打开终端,输入ifconfig查看ip地址,我这里IP地址是:192.168.11.93,子网掩码是255.255.255.0

查看开发板的IP地址之后,我们需要修改主机的ip ,在以太网连接中找到Internet协议版本4 ,修改属性,默认的是自动获取ip,我们需要手动修改,将ip地址的前三位与开发板的ip保持一致,最后一位设置为100(或者其他),子网掩码与开发板保持一致,然后保存。

调出windows的命令行窗口,输入ipconfig查看IP地址是否修改成功,为了保证主机/笔记本与开发板能连通,可以使用ping命令ping开发板,查看能否发送字节。

2.3 ⭐️使用SSH连接主板

这里我们使用官方提供的工具进行远程连接开发板,在官方工具中我们找到MobaXterm软件,打开之后选择Session,然后在 Session Setting 中选择 SSH,在 Remote host 中输入开发板的 IP 地址,在 Specify username 中输入 Linux 系统的用户名 root 或 HwHiAiUser。连接之后需要输入登录密码,也就是默认的Mind@123,当出现如下界面时,就表示连接成功了,就可以对开发板进行命令操作了。

三、3️⃣部署yolov8深度学习纤维分割检测模型

3.1🚀 yolov8模型介绍

3.1.1 概述

📌官方代码地址:https://github.com/ultralytics/ultralytics

YOLOv8是Ultralytics公司最新推出的YOLO系列目标检测算法,它在继承YOLO系列算法优点的基础上,引入了新的功能和改进点,以进一步提升性能和灵活性,YOLO(You Only Look Once)系列模型自2015年推出以来,因其高效的目标检测能力在计算机视觉领域广受欢迎。YOLOv8作为该系列的最新版本,于2023年1月10日由Ultralytics公司开源,进一步优化了检测精度和速度,使其在多个应用场景中表现出色。具体创新包括一个新的骨干网络、一个新的 Ancher-Free 检测头和一个新的损失函数,可以在从 CPU 到 GPU 的各种硬件平台上运行。yolov8最大的优点就是将当前最先进的SOTA模型融合在一起,变成最先进的 (SOTA) 模型。在相同的参数量会发现yolov8的模型要优于之前的yolo版本

YOLOv8 旨在快速、准确且易于使用,使其成为各种对象检测和跟踪、实例分割、图像分类和姿势估计任务的绝佳选择;

3.1.2 核心改进

关于yolov8的核心改进如下

  • 提供了一个全新的 SOTA 模型,包括 P5 640 和 P6 1280 分辨率 的目标检测网络和基于 YOLACT 的实例分割模型。和 YOLOv5 一样,基于缩放系数也提供了 N/S/M/L/X 尺度的不同大小模型,用于满足不同场景需求
  • 骨干网络和 Neck 部分可能参考了 YOLOv7 ELAN 设计思想,将 YOLOv5 的 C3 结构换成了梯度流更丰富的 C2f 结构,并对不同尺度模型调整了不同的通道数,属于对模型结构精心微调,不再是无脑一套参数应用所有模型,大幅提升了模型性能。
  • Head 部分相比 YOLOv5 改动较大,换成了目前主流的解耦头结构,将分类和检测头分离,同时也从 Anchor-Based 换成了 Anchor-Free
  • Loss 计算方面采用了 TaskAlignedAssigner 正样本分配策略,并引入了 Distribution Focal Loss
  • 训练的数据增强部分引入了 YOLOX 中的最后 10 epoch 关闭 Mosiac 增强的操作,可以有效地提升精度。

官方给的yolov8图比较详细,整体架构由三部分组成,分别是backbone主干特征提取网络(CSPDarknet)、Neck特征融合网络(PANet)、head解耦检测头;

  • 骨干部分 :YOLOv8引入了一个新的骨干网络,可能参考了YOLOv7 ELAN设计思想,将YOLOv5的C3结构换成了梯度流更丰富的C2f结构,并对不同尺度模型调整了不同的通道数。这种改进提高了模型的特征提取能力,增强了模型对复杂场景的处理能力。采用了CSPNet(Cross Stage Partial Network)技术,有效减少了计算成本,同时提升了模型的特征表达能力。

  • 检测头 :YOLOv8的Head部分相比YOLOv5发生了较大变化,从原先的耦合头变成了解耦头,并且从Anchor-Based转变为Anchor-Free。这种变化简化了检测流程,提高了检测精度。

  • 损失函数:YOLOv8在Loss计算方面采用了TaskAlignedAssigner正样本分配策略,并引入了Distribution Focal Loss。这些改进有助于更准确地评估模型性能,促进模型收敛。

3.2 🎓 创建虚拟环境并安装相关库

我们烧录的系统是自带的有anaconda环境的,首先,我们可以查看python版本,默认的是3.9.2,我比较习惯用3.11的版本做项目,为了不影响基础配置环境,我重新创建了一个python=3.11的yolov8虚拟环境,创建命令如下:

python 复制代码
conda create -n yolov8 python=3.11

创建好虚拟环境之后,使用conda activate yolov8命令激活虚拟环境,这里可以看到虚拟环境当中的python版本是3.11.9的;

接下来就需要安装yolov8运行所需要的相关库了,官方给的安装库只需要安装ultralytics,使用命令pip install ultralytics;这个是官方给的命令,但是我在实际使用过程中发现只按照这个库代码是无法运行的,会继续提示你按照其他库,所以还需要使用如下命令:pip install timm==0.9.8 thop efficientnet_pytorch==0.7.1 einops grad-cam==1.4.8 dill==0.3.6 albumentations==1.3.1 pytorch_wavelets==1.3.0,一次性将所有依赖库都安装完毕;

3.3 ✨下载yolov8源码

https://github.com/ultralytics/ultralytics下载官方源码之后,通过MobaXterm软件ssh连接,将源码拷贝到主板系统当中,可以拖拽直接拷贝到主板系统的downloads文件夹下面,建议将yolov8n.pt也给下载下来,后面半精度训练的时候需要用到yolov8n.pt权重。

3.4 ⭐️train与detect代码撰写

yolov8的yolov5在使用的时候不太一样,yolov8主要靠命令行去执行训练与检测命令,为了方便设置参数和操作,我参考v5的模式将yolov8的train与detect的代码写出来了。

3.4.1 train.py代码

python 复制代码
import warnings

warnings.filterwarnings('ignore')
from ultralytics import YOLO

if __name__ == '__main__':
    model = YOLO('ultralytics/cfg/models/v8/yolov8-seg.yaml')
    model.load('weights/yolov8n-seg.pt')  # loading pretrain weights
    model.train(data='ultralytics/cfg/dataset/fiber-seg.yaml',
                # cache=False,  # 设置为True会占用很多内存 如何设置为True无法进行重复性实验
                imgsz=640,
                epochs=300,
                batch=4,
                close_mosaic=10,
                workers=2,
                device='0',
                optimizer='SGD',  # using SGD
                # lr0=0.001,
                # resume='runs/train/exp7/weights/last.pt', # last.pt path
                # amp=False, # close amp
                # fraction=0.2,
                project='runs/train',
                name='exp',
                patience=0,
                )

3.4.2 detect.py

python 复制代码
import warnings

warnings.filterwarnings('ignore')
from ultralytics import YOLO

if __name__ == '__main__':
    model = YOLO('weights/best.pt')  # select your model.pt path
    model.predict(source='images/fiber/1.jpg', #source设置为0表示调用摄像头
                  imgsz=640,
                  project='runs/detect',
                  name='exp',
                  save=True,
                  line_width=5,
                  show_conf=False,
                  # conf=0.2,
                  # visualize=True # 生成模型特征图
                  )

3.5 🎯纤维分割模型训练

将train.py代码写好之后,直接在终端运行python train.py就能进行模型训练,参数设置的batch_size=4线程worker=2,一共训练300epoch,我这边准备的是项目需要的纤维分割数据集,训练速度虽然比不上我自己主机的4090显卡,但是要比一般的笔记本电脑快很多。而且训练之后的结果效果和我在4090上的结果基本上保持一致,分割与检测的map和精确度都在99%左右。

3.6 🔥纤维分割模型检测推理

关于图片还有视频的推理用的都是python detect.py命令,图片推理成功后去到对应的文件夹,可以看到基本上没有识别误差,并且分割效果很好。

关于视频检测:只需要将要检查的文件换成视频文件就能进行推理,这里发现推理的速度挺快的,基本上几秒钟就能给出视频推理结果。


3.7 🎯调用摄像头检测

我这边是接了一个USB3.0的1080p的工业相机摄像头,大概200万像素。只需要将detect.py中的source设置为0就能调用摄像头。

需要注意的是yolov8和yolov5检测不太一样,我这边摄像头可以显示检测的结果数据(如下图),但是没有检测界面,期初我以为是摄像头问题,调试了一下摄像头发现可以正常拍摄,后来看了一下yolov8的源代码发现并没有可以显示界面的工具,所以我用OpenCV写了一个视频实时检测界面。

OpenCV实时监测代码:timedetect.py

python 复制代码
import cv2
from ultralytics import YOLO

# 加载 YOLOv8 模型
model = YOLO("weights/yolov8n.pt")

# 获取摄像头内容,参数 0 表示使用默认的摄像头
cap = cv2.VideoCapture(0)

while cap.isOpened():
    success, frame = cap.read()  # 读取摄像头的一帧图像

    if success:
        model.predict(source=frame, show=True)  # 对当前帧进行目标检测并显示结果

    # 通过按下 'q' 键退出循环
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

cap.release()  # 释放摄像头资源
cv2.destroyAllWindows()  # 关闭OpenCV窗口

调用训练好的模型,执行python timedetect.py就能显示实时检测的结果了。

四、4️⃣相关模型测试

其实安装好开发板系统之后,系统当中是给了一些AI算法测试案例的,例如检测模型SSD、文本识别CNNCTC、图像分类ResNet50、图像曝光算法-HDR、图像分割算法FCN等,这些模型我都测试了一下,除了SSD目标检测算法报了一个错误,其他的都没有任何问题;

4.1 🎓 如何使用官方案例

首先登录 Linux 系统桌面,然后打开终端,使用cd ~返回上一级目录,然后进入cd samples文件夹当中。在当前目录下有 8 个文件夹和 1 个 shell 文件,分别对应 8 个 AI 应用样例和Jupyter Lab 启动脚本 start_notebook.sh。

然后执行start_notebook.sh 脚本启动 Jupyter Lab,在执行该脚本后,终端会出现如下打印信息,在打印信息中会有登录 Jupyter Lab 的网址链接,将链接复制到浏览器打开即可。

4.2 ✨官方案例运行结果

我这里就放一部分运行结果,感兴趣的话可以全部跑一遍。


五、5️⃣开发板使用感受

个人也是使用Orange Pi AIpro开发部署了自己的深度学习项目,下面也将给出客观的评价。

☀️优点

先说优点,Orange Pi AI Pro 搭载的处理器和AI加速器能够高效运行复杂的YOLO模型,同时保持相对较低的功耗,这对于需要长时间运行的边缘设备尤为重要,它也支持多种编程语言(如Python、C++)和深度学习框架(如TensorFlow, PyTorch, Darknet等),便于开发者快速上手,并且官方提供的操作系统非常好用,我在安装各种依赖包的时候速度非常快,而且相较于windows操作系统,没有那么多的报错,基本上配置环境都是一步过!!!并且提供了多个USB接口、HDMI接口等,方便连接各种外设和传感器,满足多样化的应用场景需求,此外,还支持通过TF卡扩展存储空间,满足大数据量存储的需求。同时开发文档和官方工具给的非常全面,虽然在烧录过程中出了一点小插曲;在实际项目使用的过程中,检测的速度很快,并且系统很刘畅,而且相关配置也没有那么复杂,给我的整体感受是非常好的!!!

⚡️缺点

官方文档和针对特定模型(如YOLO、transformers)的详细部署教程可能不够详尽,初学者可能会遇到一些障碍,在一些极端使用场景下(如高温、高湿环境),硬件的稳定性可能会受到影响,需要额外的散热措施和防护措施,我在训练模型的时候明显感觉到温度上升的比较快,

总体来说,Orange Pi AI Pro 是一款性价比较高的边缘计算开发板,适合用于部署YOLO等实时目标检测模型,尽管存在一些缺点和挑战,但通过不断的学习和实践,我相信可以充分发挥其优势,为各种应用场景提供强大的支持。


相关推荐
威桑2 分钟前
CMake + mingw + opencv
人工智能·opencv·计算机视觉
爱喝热水的呀哈喽6 分钟前
torch张量与函数表达式写法
人工智能·pytorch·深度学习
blessing。。1 小时前
I2C学习
linux·单片机·嵌入式硬件·嵌入式
LZXCyrus1 小时前
【杂记】vLLM如何指定GPU单卡/多卡离线推理
人工智能·经验分享·python·深度学习·语言模型·llm·vllm
YRr YRr2 小时前
深度学习神经网络中的优化器的使用
人工智能·深度学习·神经网络
goomind2 小时前
YOLOv8实战木材缺陷识别
人工智能·yolo·目标检测·缺陷检测·pyqt5·木材缺陷识别
只怕自己不够好2 小时前
《OpenCV 图像基础操作全解析:从读取到像素处理与 ROI 应用》
人工智能·opencv·计算机视觉
幻风_huanfeng2 小时前
人工智能之数学基础:线性代数在人工智能中的地位
人工智能·深度学习·神经网络·线性代数·机器学习·自然语言处理
嵌入式大圣2 小时前
嵌入式系统与OpenCV
人工智能·opencv·计算机视觉
嵌新程2 小时前
day03(单片机高级)RTOS
stm32·单片机·嵌入式硬件·freertos·rtos·u575