当前位置: 首页 > news >正文

香橙派AIpro测评:yolo8+usb鱼眼摄像头的Camera图像获取及识别

一、前言

近期收到了一块受到业界人士关注的开发板"香橙派AIpro",因为这块板子具有极高的性价比,同时还可以兼容ubuntu、安卓等多种操作系统,今天博主便要在一块8+32g的香橙派AI香橙派AIpro进行YoloV8s算法的部署并使用一个外接的鱼眼USB摄像头来作目标检测与识别。经过博主的整体测试,这块开发板可以用来作为边缘计算平台,承担大众化场景的目标检测任务。随着人工智能技术的不断发展,目标检测作为计算机视觉领域的一个重要任务,已经得到了广泛的研究和应用。

二、香橙派AIpro介绍

2.1香橙派简介

作为业界首款基于昇腾深度研发的AI开发板,Orange Pi AIpro无论在外观上、性能上还是技术服务支持上都非常优秀。采用昇腾AI技术路线,集成图形处理器,拥有8GB/16GB LPDDR4X,可以外接32GB/64GB/128GB/256GB eMMC模块,支持双4K高清输出,8/20 TOPS AI算力。配套了MindStudio全流程开发工具链,并提供一键镜像烧录工具和模型适配工具实现极简开发,让开发者快速上手使用,支持算法模型的快速适配。
可广泛适用于AI教学实训、AI算法验证、智能小车、机械臂、边缘计算、无人机、人工智能、云计算、AR/VR、智能安防、智能家居、智能交通等领域。Orange Pi AIpro支持Ubuntu、openEuler操作系统,满足大多数AI算法原型验证、推理应用开发的需求。

2.2香橙派硬件及接口介绍

在这里插入图片描述

在这里插入图片描述

香橙派AIpro丰富的接口赋予了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屏等,预留电池接口。
在操作系统方面,Orange Pi AIpro支持Ubuntu、openEuler操作系统,满足大多数AI算法原型验证、推理应用开发的需求,可广泛适用于AI边缘计算、深度视觉学习及视频流AI分析、视频图像分析、自然语言处理、智能小车、机械臂、人工智能、无人机、云计算、AR/VR、智能安防、智能家居等领域,覆盖 AIoT各个行业。

三、实际场景应用体验

3.1所用硬件及技术介绍

3.1.1Yolo V8介绍

YOLOv8是YOLO系列算法的最新版本,其在保持高效、准确的同时,还进一步优化了算法结构,提高了运行速度。YOLOv8采用了全新的网络结构和损失函数,使得模型在训练过程中更加稳定,同时也提高了模型的泛化能力。
YOLOv8采用了端到端的训练方式,将目标检测视为一个回归问题,直接预测物体的位置和类别。在模型结构上,YOLOv8采用了CSPDarknet53作为骨干网络,通过增加残差连接和特征融合,提高了模型的特征提取能力。在损失函数方面,YOLOv8采用了CIoU损失函数,同时考虑了预测框与真实框的重叠面积、中心点距离以及长宽比等因素,使得模型在训练过程中更加关注于提高预测框的准确性。

3.1.2鱼眼镜头介绍

鱼眼镜头是一种焦距为16mm或更短的并且视角接近或等于180°的镜头。 它是一种极端的广角镜头,“鱼眼镜头”是它的俗称。为使镜头达到最大的摄影视角,这种摄影镜头的前镜片直径很短且呈抛物状向镜头前部凸出,与鱼的眼睛颇为相似,“鱼眼镜头”因此而得名。
鱼眼镜头属于超广角镜头中的一种特殊镜头,它的视角力求达到或超出人眼所能看到的范围。因此,鱼眼镜头与人们眼中的真实世界的景象存在很大的差别,因为我们在实际生活中看见的景物是有规则的固定形态,而通过鱼眼镜头产生的画面效果则超出了这一范畴。
鱼眼镜头具有超大视场,因而被广泛应用于场景监视、卫星定位、机器人导航、微小智能系统及工程测量等领域。由于鱼眼镜头能够实现全空域包容和全时域实时信息的获取,特别是符合现代战争对信息获取技术的需求,这是其他光电侦测手段所不能比的,因此鱼眼镜头在国防和军事领域也得到了重要应用。

3.2鱼眼镜头图像获取

3.2.1流程介绍

通过USB接口连接鱼眼镜头与香橙派AIpro,从鱼眼镜头获取图像、并处理为YUV图像。

3.2.2相关驱动安装

首先通过下面的链接下载相关源码:

Ascend/EdgeAndRobotics - Gitee.com

下载完成后进行解压,并进入到样例目录

在这里插入图片描述
在这里插入图片描述

3.2.3安装FFmpeg
sudo apt-get install ffmpeg libavcodec-dev libswscale-dev libavdevice-dev

运行结果:

在这里插入图片描述

3.2.4安装OpenCV
sudo apt-get install libopencv-dev

运行结果:

在这里插入图片描述

3.2.5编译样例源码

执行编译命令

g++ main.cpp -o main -lavutil -lavformat -lavcodec -lavdevice

编译命令执行成功后,在USBCamera样例目录下生成可执行文件main。
运行结果:

在这里插入图片描述

3.2.6运行样例,从Camera获取图像

运行可执行文件,其中/dev/video0表示Camera设备,需根据实际情况填写:
./main /dev/video0

运行成功后,在USBCamera样例目录下生成yuyv422格式、1280*720分辨率的out.yuv文件。

运行结果:

在这里插入图片描述

注意:当把一个摄像头插入开发板后,执行ls /dev/vi*命令可看到摄像头的vedio节点。这里出现了两个设备节点:/dev/video0、/dev/video1,是因为一个是图像/视频采集,一个是metadata采集,因此本样例中在运行可执行文件时,选择图像/视频采集的设备节点/dev/video0。

3.2.7检查从Camera获取的图像

执行如下命令,使用FFmpeg软件查看图像:

ffplay -pix_fmt yuyv422 -video_size 1280*720 out.yuv

运行结果:

在这里插入图片描述

3.3YoloV8s算法部署

在使用YOLOv8之前,需要先安装相关的依赖库,包括Python、PyTorch等。同时,为了方便使用YOLOv8,我们还可以选择安装一些辅助工具,如COCO数据集、预训练模型等。

3.3.1环境准备

博主选择的是torch 2.2和torchvision 0.17安装如下:

pip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simplepip install torch==2.2.0 -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install torchvision==0.17.0 -i https://pypi.tuna.tsinghua.edu.cn/simple
3.3.2安装yolo v8
pip install ultralytics -i https://pypi.tuna.tsinghua.edu.cn/simple
3.3.3编写实时目标检测程序
import cv2from ultralytics import YOLO
from cv2 import getTickCount, getTickFrequency

加载 YOLOv8 模型

model = YOLO("weights/yolov8s.pt")

获取摄像头内容,参数 0 表示使用默认的摄像头

cap = cv2.VideoCapture(1)while cap.isOpened():loop_start = getTickCount()success, frame = cap.read()  # 读取摄像头的一帧图像if success:results = model.predict(source=frame) # 对当前帧进行目标检测并显示结果annotated_frame = results[0].plot()# 中间放自己的显示程序loop_time = getTickCount() - loop_starttotal_time = loop_time / (getTickFrequency())#FPS = int(1 / total_time)# 在图像左上角添加FPS文本#fps_text = f"FPS: {FPS:.2f}"#font = cv2.FONT_HERSHEY_SIMPLEX#font_scale = 1#font_thickness = 2#text_color = (0, 0, 255)  # 红色#text_position = (10, 30)  # 左上角位置#cv2.putText(annotated_frame, fps_text, text_position, font, font_scale, text_color, font_thickness)cv2.imshow('img', annotated_frame)# 通过按下 'q' 键退出循环if cv2.waitKey(1) & 0xFF == ord('q'):breakcap.release()  # 释放摄像头资源
cv2.destroyAllWindows()  # 关闭OpenCV窗口
3.3.4最终识别结果

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

四、结语

作为一名机器视觉工程师,本次我使用香橙派AIpro来部署了yolo V8s的目标检测与识别算法,同时使用适合机器人使用的鱼眼摄像头进行真实图像获取,并将实时获取的图像传递给yoloV8算法进行图像中目标的检测与识别。经过测试香橙派AIpro可以实时使用yoloV8算法进行目标识别与检测,并且识别的准确率还是较高的。
经过博主的整体测试,香橙派AIpro的计算能力完全可以可以用来作为边缘计算平台来承担大众化场景的目标检测任务。相信这款高性价比的开发板会为人们快速验证部署自己的人工智能算法提供性价比高、提高开发效率的完美方案。后续博主也会通过自己制作数据集打标签的方式,在香橙派AIpro上来尝试训练一下模型。

相关文章:

香橙派AIpro测评:yolo8+usb鱼眼摄像头的Camera图像获取及识别

一、前言 近期收到了一块受到业界人士关注的开发板"香橙派AIpro",因为这块板子具有极高的性价比,同时还可以兼容ubuntu、安卓等多种操作系统,今天博主便要在一块832g的香橙派AI香橙派AIpro进行YoloV8s算法的部署并使用一个外接的鱼眼USB摄像头…...

大华设备接入GB28181视频汇聚管理平台EasyCVR安防监控系统的具体操作步骤

智慧城市/视频汇聚/安防监控平台EasyCVR兼容性强,支持多协议接入,包括国标GB/T 28181协议、GA/T 1400协议、部标JT808协议、RTMP、RTSP/Onvif协议、海康Ehome、海康SDK、大华SDK、华为SDK、宇视SDK、乐橙SDK、萤石云SDK等,并能对外分发RTMP、…...

Laravel包开发指南:构建可重用组件的艺术

标题:Laravel包开发指南:构建可重用组件的艺术 Laravel不仅是一个强大的Web应用框架,它的包(Package)系统也为开发者提供了构建和共享可重用组件的能力。通过包开发,开发者可以轻松地扩展Laravel的功能&am…...

JavaDS预备知识

集合框架 Java 集合框架 Java Collection Framework ,又被称为容器 container ,是定义在 java.util 包下的一组接口 interfaces和其实现类 classes 。 其主要表现为将多个元素 element 置于一个单元中,对数据进行创建(Create)、读取(Retrieve…...

日常学习--20240705

1、IO流 按照IO操作的数据类型分为字节流和字符流: 字节流:又分为输入流(其他程序传递过来的数据,读取流中的数据)和输出流(往流中写数据,传递给其他程序);可以操作二进制文件&…...

Java中初始化一个List的多种方式

1.最原始的方式&#xff1a;先创建&#xff0c;然后再添加元素 List<String> list new ArrayList<>(); list.add("apple"); list.add("banana"); list.add("cherry");2.使用Arrays.asList 这是一种快速方便的方式&#xff0c;直接…...

BeikeShop多国语言多货币商城系统源码基于Laravel框架

BeikeShop是基于 Laravel 开发的一款开源商城系统&#xff0c;支持多语言商城 多货币商城 100%全开源 ChatGPT OpenAI B2C商城系统 H5商城 PHP商城系统 商城源码 PC商城 跨境电商系统 跨境商城系统 电商商城系统 Laravel 10 框架开发系统&#xff0c;支持插件市场。 Event 机制…...

gradle构建工具

setting.gradle // settings.gradle rootProject.name my-project // 指定根项目名称include subproject1, subproject2 // 指定子项目名称&#xff0c;可选jar包名称 方式一 jar {archiveBaseName my-application // 设置 JAR 文件的基本名称archiveVersion 1.0 // 设置…...

Java需要英语基础吗?

Java编程语言本身并不要求必须有很强的英语基础&#xff0c;因为Java的语法和逻辑是独立于任何特定语言的。我收集归类了一份嵌入式学习包&#xff0c;对于新手而言简直不要太棒&#xff0c;里面包括了新手各个时期的学习方向编程教学、问题视频讲解、毕设800套和语言类教学&am…...

14-36 剑和诗人10 - 用LLM构建 AI 代理平台

介绍 在当今快速发展的技术环境中&#xff0c;大型语言模型 (LLM) 和 AI 代理正在改变我们与信息交互、实现流程自动化以及应对不同行业复杂挑战的方式。随着这些强大的模型不断发展&#xff0c;对能够无缝集成和协调它们的强大平台的需求变得越来越重要。 让我们深入研究设计…...

如何在Java中实现批量数据处理

如何在Java中实现批量数据处理 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 1. 引言 在大数据时代&#xff0c;处理大量数据是许多应用程序中必不可少的需…...

项目部署_持续集成_Jenkins

1 今日内容介绍 1.1 什么是持续集成 持续集成&#xff08; Continuous integration &#xff0c; 简称 CI &#xff09;指的是&#xff0c;频繁地&#xff08;一天多次&#xff09;将代码集成到主干 持续集成的组成要素 一个自动构建过程&#xff0c; 从检出代码、 编译构建…...

如何选择TikTok菲律宾直播网络?

为了满足用户对于实时互动的需求&#xff0c;TikTok推出了直播功能&#xff0c;让用户能够与粉丝即时交流。本文将探讨如何选择适合的TikTok菲律宾直播网络&#xff0c;并分析OgLive是否是值得信赖的选择。 TikTok菲律宾直播网络面临的挑战 作为全球领先的短视频平台&#xff…...

Pseudo-Label : The Simple and Efficient Semi-Supervised Learning Method--论文笔记

论文笔记 资料 1.代码地址 https://github.com/iBelieveCJM/pseudo_label-pytorch 2.论文地址 3.数据集地址 论文摘要的翻译 本文提出了一种简单有效的深度神经网络半监督学习方法。基本上&#xff0c;所提出的网络是以有监督的方式同时使用标记数据和未标记数据来训练的…...

信息收集-arping

信息收集-arping 简介 arping 是一个用于发送 ARP 请求和接收 ARP 回复的工具。它通常用于检查网络中的 IP 地址是否被使用&#xff0c;或发现网络中的重复 IP 地址。arping 工具类似于 ping 命令&#xff0c;但它使用的是 ARP 协议而不是 ICMP 协议。在 Kali Linux 中&#…...

一文了解常见DNS问题

当企业的DNS出现故障时&#xff0c;为不影响企业的正常运行&#xff0c;团队需要能够快速确定问题的性质和范围。那么有哪些常见的DNS问题呢&#xff1f; 域名解析失败&#xff1a; 当您输入一个域名&#xff0c;但无法获取到与之对应的IP地址&#xff0c;导致无法访问相应的网…...

TCP/IP 网络协议族分层

TCP/IP协议族 TCP/IP不单是TCP和IP两个协议&#xff0c;TCP/IP实际上是一组协议&#xff0c;它包括上百个各种功能的协议&#xff0c;如&#xff1a;远程登录、文件传输和电子邮件等&#xff0c;当然&#xff0c;也包括TCP、IP协议 它将软件通信过程抽象化为四个抽象层&#…...

Qt:5.QWidget属性介绍(Enabled属性-控件可用性设置、geometry属性-控件位置/大小设置)

目录 一、 QWidget属性的介绍&#xff1a; 二、Enabled属性-控件可用性设置&#xff1a; 2.1Enabled属性的介绍&#xff1a; 2.2获取控件当前可用状态的api——isEnabled()&#xff1a; 2.3设置控件当前的可用状态的api—— setEnabled() &#xff1a; 2.4 实例&#xff…...

NoSQL 非关系型数据库 Redis 的使用:

redis是基于内存型的NoSQL 非关系型数据库&#xff0c;本内容只针对有基础的小伙伴&#xff0c; 因为楼主不会做更多的解释&#xff0c;而是记录更多的技术接口使用&#xff0c;毕竟楼主不是做教学的&#xff0c;没有教学经验。 关于redis的介绍请自行搜索查阅。 使用redis数据…...

python库(5):Psutil库实现系统和硬件监控工具

1 psutil简介 psutil&#xff08;process and system utilities&#xff09;是一个跨平台库&#xff0c;用于检索运行中进程和系统利用率&#xff08;包括 CPU、内存、磁盘、网络等&#xff09;的信息&#xff0c;可以提供丰富的系统监控功能。 2 psutil安装 pip install -i …...

实验四 图像增强—灰度变换之直方图变换

一&#xff0e;实验目的 1&#xff0e;掌握灰度直方图的概念及其计算方法&#xff1b; 2&#xff0e;熟练掌握直方图均衡化计算过程&#xff1b;了解直方图规定化的计算过程&#xff1b; 3&#xff0e;了解色彩直方图的概念和计算方法 二&#xff0e;实验内容&#xff1a; …...

使用el-col和el-row布局,有版心,一页有两栏布局 三栏布局 四栏布局 使用vue动态渲染元素

使用Vue结合Element UI的el-row和el-col组件来实现版心布局&#xff0c;并动态渲染不同栏数的布局&#xff0c;可以通过以下步骤实现&#xff1a; 定义版心容器&#xff1a;使用el-container来定义整个页面的容器&#xff0c;其中el-header、el-main、el-footer分别定义头部、主…...

中软国际加入龙蜥社区,促进“技术+生态”双向赋能

近日&#xff0c;中软国际有限公司&#xff08;简称“中软国际”&#xff09;签署了 CLA&#xff08;Contributor License Agreement&#xff0c;贡献者许可协议&#xff09;&#xff0c;正式加入龙蜥社区&#xff08;OpenAnolis&#xff09;。 中软国际创立于 2000 年&#x…...

adobe pdf设置默认打开是滚动而不是单页视图

上班公司用adobe pdf&#xff0c;自己还不能安装其它软件。 每次打开pdf&#xff0c;总是默认单页视图&#xff0c;修改滚动后&#xff0c;下次打开又 一样&#xff0c;有时候比较烦。 后面打开编辑->首选项&#xff0c; 如下修改&#xff0c;下次打开就是默认滚动了...

React Hooks 深度解析

Hooks简介 诞生背景&#xff1a; 在React 16.8之前的版本中&#xff0c;组件主要分为函数组件和类组件两大类。函数组件简单轻量&#xff0c;但不支持状态&#xff08;state&#xff09;和生命周期方法&#xff1b;而类组件虽然功能强大&#xff0c;但编写和维护起来相对复杂。…...

14-32 剑和诗人6 - GenAI 重塑 SRE 和云工程实践

在不断发展的软件开发和运营领域&#xff0c;各种学科的融合催生了新的范式和实践&#xff0c;旨在简化流程、加强协作和推动创新。DevSecOps、站点可靠性工程 (SRE)、平台工程和云工程已成为支持现代软件系统的重要支柱&#xff0c;每个支柱都解决了独特的挑战和要求。 然而&…...

Towards Deep Learning Models Resistant to Adversarial Attacks

这篇论文的主要内容是关于开发对抗攻击具有抗性的深度学习模型。对抗攻击是通过对输入数据进行微小且精心设计的扰动&#xff0c;诱使深度学习模型做出错误的预测。这种攻击在图像识别、语音识别和自然语言处理等任务中尤为突出。 这篇论文的主要内容是关于开发对抗攻击具有抗…...

2、Key的层级结构

Key的层级结构 Redis的key允许有多个单词形成层级结构&#xff0c;多个单词之间用’:隔开。 举个例子: 我们有一个项目project&#xff0c;有user和product俩种不同的数据类型&#xff0c;那么我们可以这么定义key&#xff1a; user相关的key&#xff1a;project:user:1 pr…...

如何在Qt使用uchardet库

如何在 Qt 中使用 uchardet 库 文章目录 如何在 Qt 中使用 uchardet 库一、简介二、uchardet库的下载三、在Qt中直接调用四、编译成库文件后调用4.1 编译工具下载4.2 uchardet源码编译4.3 测试编译文件4.4 Qt中使用 五、一些小问题5.1 测试文件存在的问题5.2 uchardet库相关 六…...

G9 - ACGAN理论与实战

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 目录 环境步骤环境设置数据准备工具方法模型设计模型训练模型效果展示 总结与心得体会 上周已经简单的了解了ACGAN的原理&#xff0c;并且不经实践的编写了部分…...