国产派也不差|基于yolo8+usb鱼眼摄像头的Camera图像获取及识别

目录

一、前言

二、香橙派AIpro介绍

2.1香橙派简介

2.2香橙派硬件及接口介绍

三、实际场景应用体验

3.1鱼眼镜头介绍

3.2鱼眼镜头图像获取

3.2.1流程介绍

3.2.2相关驱动安装

3.2.3安装FFmpeg

3.2.4安装OpenCV

3.2.5编译样例源码

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

3.2.7检查从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/simple

pip 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 cv2

from 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_start
    total_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'):
        break

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

3.3.4最终识别结果

四、结语

作为一名机器视觉工程师,本次我使用香橙派AIpro来部署了yolo V8s的目标检测与识别算法,同时使用适合机器人使用的鱼眼摄像头进行真实图像获取,并将实时获取的图像传递给yoloV8算法进行图像中目标的检测与识别。经过测试香橙派AIpro可以实时使用yoloV8算法进行目标识别与检测,并且识别的准确率还是较高的。

经过博主的整体测试,香橙派AIpro的计算能力完全可以可以用来作为边缘计算平台来承担大众化场景的目标检测任务。相信这款高性价比的开发板会为人们快速验证部署自己的人工智能算法提供性价比高、提高开发效率的完美方案。后续博主也会通过自己制作数据集打标签的方式,在香橙派AIpro上来尝试训练一下模型。

### 在 Ubuntu 系统中安装和配置 YOLO 框架 #### 1. 明确系统需求并确认版本 在虚拟机或物理设备上安装的 Ubuntu 版本需保持更新维护状态,推荐使用官方支持的长期稳定版本(LTS),如 Ubuntu 20.04 或更高版本[^3]。这有助于减少因软件库过期而导致的兼容性问题。 #### 2. 配置 CUDA 和 cuDNN 路径 为了使 GPU 加速生效,在完成 NVIDIA 驱动程序以及对应版本的 CUDA 工具包安装之后,需要编辑 `~/.bashrc` 文件来设置环境变量。通过命令 `sudo gedit ~/.bashrc` 打开该文件,并添加如下内容: ```bash export PATH=/usr/local/cuda/bin:$PATH export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH ``` 保存退出后执行 `source ~/.bashrc` 让更改立即生效[^2]。 #### 3. 创建 Python 虚拟环境与依赖管理 创建独立的 Python 虚拟环境能够有效隔离同项目之间的依赖冲突。假设目标框架为 PyTorch 实现,则可按照以下方式操作: - **建立虚拟环境** ```bash python3 -m venv yolo_env source yolo_env/bin/activate ``` - **安装必要组件** 使用 pip 安装所需模块前先升级工具本身以获得最佳体验。 ```bash pip install --upgrade pip setuptools wheel ``` 接着依据具体实现加载相应的需求列表。对于基于 Flash Attention 的优化版本而言,由于 Windows 平台预构建二进制可能无法直接适用于 Linux 场景下,因此应当选取适配当前架构类型的轮子文件或者从源码重新编译[^1]。例如: ```bash pip install torch torchvision torchaudio flash-attn==2.7.3+cu118 -f https://download.pytorch.org/whl/torch_stable.html ``` #### 4. 下载 TensorRT 及其集成插件 (可选) 部分高性能推理场景可能会涉及 NVIDIA 提供的 TensorRT 库加速服务。此时应参照官方文档指引下载匹配本地硬件条件的发行版压缩包,并遵循标准流程完成解压部署工作[^4]。 #### 5. 测试 USB 摄像头连接状况 (视应用而定) 当计划利用实时视频流作为输入数据源时,有必要验证外接成像装置能否被正确识别及初始化成功。针对某些特定型号的产品线来说,额外引入第三方开源驱动可能是必要的解决方案之一[^5]: ```bash cd ~/catkin_ws/src/ git clone https://github.com/ros-drivers/usb_cam.git roscd usb_cam && mkdir build && cd build cmake .. make ``` 以上即是在典型情况下于 Ubuntu 发行版之上搭建 YOLO 类检测系统的常规步骤概述。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

通信汪的美好生活

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值