橙派探险记:开箱香橙派 AIpro 与疲劳驾驶检测的奇幻之旅

news2024/11/18 13:36:17

目录

引子:神秘包裹的到来

第一章:香橙派AIpro初体验

资源与性能介绍

系统烧录 Linux 镜像(TF 卡)

调试模式

登录模式

第二章:大胆的项目构想

系统架构设计

香橙派 AIpro 在项目中的重要作用

第三章:开发过程中的奇幻旅程

总体设计

系统功能

模型训练

第四章:系统测试与魔法调试

结尾:奇幻之旅的终点与新篇章


🎊【香橙派】专题正在持续更新中,内含香橙派调试,登录,模型训练,昇腾AI等内容✨,欢迎大家前往订阅本专题,获取更多详细信息哦🎏🎏🎏

🪔本系列专栏 -  ​​​​​​香橙派

🍻欢迎大家  🏹  点赞👍  评论📨  收藏⭐️

📌个人主页 - 勾栏听曲_0的博客📝

🔑希望本文能对你有所帮助,如有不足请指正,共同进步吧🏆

🎇粗缯大布裹生涯,腹有诗书气自华

引子:神秘包裹的到来

        在很久很久以前......在一个阳光明媚的下午,我终于收到了期待已久的包裹——香橙派 AIpro。这份礼物辗转两次才到我的手上,每一天我都怀着满心的期待,频繁地查看快递状态。终于,当门铃响起时,我几乎是飞奔到门口,迫不及待地签收了包裹。

        小心翼翼地拆开包装,香橙派 AIpro 闪耀着橙色的光芒,仿佛在向我招手,邀请我踏上一场全新的科技冒险之旅。看着这块小小的开发板,我的心中充满了无限的可能性和期待。接下来和我一起来揭开她的神秘面纱吧!

第一章:香橙派AIpro初体验

        收到香橙派 AIpro 后,我迫不及待地打开包裹,眼前的开发板闪耀着科技的光芒。板上的每个接口、每个芯片,都让我充满了探索的欲望。以下是香橙派 AIpro 开箱的实物图展示,一个C口的充电口,一根电源线,一个OrangePi AIpro:

        进一步打开后,映入眼帘便是充满着科技感的香橙派了,红色框出来的是电源接口,黄色框出来的是散热模块,蓝色框出来的是天线模块,这里要注意的是天线不能折叠贴到香橙派,这样很可能会烧掉香橙派的。

资源与性能介绍

        香橙派 AIpro 搭载了昇腾 AI 处理器,提供 8TOPS INT8 的计算能力,内存有 8GB 和 16GB 两种版本。以下是开发板的详细硬件规格:

  • 处理器:4核 64 位 Arm 处理器 + AI 处理器
  • AI 算力:半精度(FP16):4 TFLOPS
    • 整数精度(INT8):8 TOPS
  • 内存:LPDDR4X,8GB 或 16GB
  • 存储:板载 32MB 的 SPI Flash
    • Micro SD 卡插槽
    • eMMC 插座
    • M.2 M-Key 接口(支持 NVMe SSD 和 SATA SSD)
  • 网络:10/100/1000Mbps 以太网,支持 2.4G 和 5G 双频 Wi-Fi,BT4.2
  • 接口:2 个 USB3.0 Host 接口
    • 1 个 Type-C 接口
    • 2 个 HDMI 接口
    • 2 个 MIPI CSI 摄像头接口
    • 1 个 MIPI DSI 显示接口
  • 音频:1 个 3.5mm 耳机孔,2 个 HDMI 音频输出
  • 扩展接口:40 pin 扩展口(用于 UART、I2C、SPI、PWM 和 GPIO)
  • 电源:支持 Type-C 供电,20V PD-65W 适配器

系统烧录 Linux 镜像(TF 卡)

        要在香橙派 AIpro 上运行 Linux 系统,需要先将 Linux 镜像烧录到 TF 卡上。以下是具体步骤:

  1. 准备 TF 卡和读卡器:使用容量至少为 32GB 的 TF 卡(建议使用 64GB 或以上),并准备一个 TF 卡读卡器。
  2. 下载镜像和烧录工具:从香橙派官网 下载镜像 和 balenaEtcher 烧录工具。
  3. 烧录镜像:将 TF 卡插入读卡器并连接到电脑。
    1. 打开 balenaEtcher,选择下载的 Linux 镜像文件和 TF 卡,然后点击“Flash”开始烧录。
    2. 烧录完成后,将 TF 卡插入香橙派 AIpro 的 TF 卡槽。

调试模式

        TTL调试模式:

        开发板默认使用 uart0 做为调试串口。需要注意的是,uart0 的 tx 和 rx 引脚同时接到了两个地方:

        根据上图可知uart0 的 tx 和 rx 引脚接到了 40 pin 扩展接口中的 8 号和 10 号引脚,此种方式需要准备一个 3.3v 的 USB 转 TTL 模块和相应的杜邦线,然后才能正常使用开发板的调试串口功能。连接的实物图如下:

        串口调试模式:

        uart0 的 tx 和 rx 引脚又接到了开发板的 CH343P 芯片上,再通过 CH343P 芯片引出到 Micro USB 接口上。此种方式只需要一根 Micro USB 接口的数据线将开发板连接到电脑的 USB 接口就可以开始使用开发板的调试串口功能了,无需购买 USB 转 TTL 模块。连接的实物图任如下:

        以上两种方法连接成功后,进入MobaXterm旋转串口连接,选择设备到的串口号,波特率设置为115200,就可以登录我们的香橙派啦,第一次登录用户名和密码是默认的,自己可以去修改。

初始账号

初始密码

root

Mind@123

HwHiAiUser

Mind@123

登录模式

        其实上面介绍的调试方法就已经是登录上了香橙派的系统了,除此之外,再介绍两种登录方式。

  1. 远程登录模式

        使用网线连接电脑,再通过ssh远程连接香橙派,以下是连接实物图,红色框出来的是电源接口,黄色框出来的是电源接通后的指示灯,蓝色框出来的是网线接口,紫色框出来的是网线接口指示灯:

        使用 SSH 远程登录重新拍。确保开发板已连接以太网或 Wi-Fi,获取 IP 地址后,通过 SSH 连接到开发板(默认用户名:HwHiAiUser,密码:Mind@123)。

  1. 本机登录(HDMI)模式

        将 HDMI0 接口连接到显示器,通过 USB 接口连接键盘和鼠标,开机后进入 Linux 系统桌面。以下是连接实物图,红色框出来的是HDMI0,黄色框出来的是USB接口:

第二章:大胆的项目构想

        在我收到香橙派 AIpro 后,便萌生了一个大胆的构想——利用这块强大的开发板,实现一个基于深度学习与 OpenCV 的疲劳驾驶检测系统。香橙派 AIpro 不仅为该项目提供了强大的计算能力和丰富的接口支持,更在多个环节中发挥了关键作用。

        随着汽车数量的增加和交通事故的频发,疲劳驾驶已成为道路交通安全的重大隐患。为了减少因疲劳驾驶引发的事故,我决定构建一个智能疲劳驾驶检测系统。该系统将基于香橙派 AIpro 硬件平台,结合深度学习与 OpenCV 技术,对驾驶员的疲劳状态进行实时监测和预警。

系统架构设计

        该系统的整体架构如下:

硬件平台

香橙派 AIpro

摄像头与智能补光灯

用于实时捕捉驾驶员面部图像与根据环境补偿亮度

数据预处理

  • 图像灰度转换
  • 图像缩放与旋转
  • 图像平滑与增强

人脸检测

采用 Haar 特征级联分类器

特征提取与分类

基于卷积神经网络(CNN)的深度学习模型

疲劳状态评估

  • 面部表情评分:眼睑闭合、口腔张合等
  • 头部姿态分析:通过人脸 3D 模型计算欧拉角,判断是否有瞌睡点头行为

疲劳判断模型

结合预设的阈值和规则,生成专属的疲劳驾驶判断模型

报警系统

当检测到驾驶员疲劳时,通过声音、图像或文字发出警报和提醒

香橙派 AIpro 在项目中的重要作用

        香橙派 AIpro 作为该系统的核心硬件平台,发挥了至关重要的作用:

  1. 强大的计算能力:香橙派 AIpro 搭载了昇腾 AI 处理器,提供 8TOPS INT8 的计算能力,为深度学习模型的实时推理提供了强大的算力支持。这使得系统能够快速处理和分析大量的面部图像数据,实时评估驾驶员的疲劳状态。
  2. 丰富的接口支持:香橙派 AIpro 提供了多种接口,包括 HDMI、MIPI CSI 摄像头接口、USB 接口等,极大地简化了硬件连接和数据传输。通过这些接口,可以轻松连接摄像头、显示器和其他外设,保证系统的高效运行。
  3. 稳定的系统支持:香橙派 AIpro 支持多种操作系统,包括 Ubuntu 和 openEuler。这为开发和调试提供了灵活性和便利性,使得系统的搭建和优化过程更加顺利。

第三章:开发过程中的奇幻旅程

总体设计

        疲劳驾驶检测系统作为控制终端,将智能补光灯辅助的摄像头采集到的图像数据传递给 OpenCV 进行图像数据处理,然后将数据处理结果交给 TensorFlow 中的卷积神经网络(CNN)进行分析与评分,并更新驾驶员专属数据库。最后,对分析结果进行判断驾驶员是否疲劳驾驶,并在判断为疲劳驾驶时进行对应的报警提醒。总体框架如下图所示:

        系统硬件连接图如下图所示,紫色框中的是摄像头,负责捕捉驾驶员图像;在其两侧淡蓝色框中的是智能红外补光灯,负责光线不足时的补光;蓝色框中的是智能语音播报器,负责播报指令与驾驶员进入疲劳状态后的听觉报警;红色框中的是电机(代替震动电机,凑合用一下啦),负责驾驶员进入疲劳状态后的触觉报警;黄色框中的是LED灯珠,负责驾驶员进入疲劳状态后的视觉报警:

系统功能

人脸识别检测

        系统通过摄像头捕捉并定位图像中的人脸区域,对其进行裁剪和归一化处理。将检测到的人脸与数据库中已录入的驾驶员人脸进行对比,如数据库中不存在此人脸,则建立新的数据库来收集新驾驶员的脸部特征信息;如存在,则加入该驾驶员的历史脸部特征数据来建立专属的疲劳驾驶检测模型。

眼部状态识别

        系统根据眼睛左右眼面部标志的特征点,计算眼睛长宽比(EAR)值,以判断是否眨眼或眯眼。眼睛长宽比 EAR 值是指眼睛垂直距离与水平距离的比值,反映眼睛的开合程度。系统通过深度神经网络模型从人脸区域中提取左右眼特征点,并使用公式计算 EAR 值。

嘴部状态识别

        系统根据嘴部张合程度(MAR)和张合时间,判断驾驶员是否打哈欠。打哈欠是指嘴部张开到一定程度并持续一定时间的行为。系统通过深度神经网络模型从人脸区域中提取嘴部轮廓和面积,并计算嘴部张合角度和持续时间。

头部状态识别

        系统根据头部的 XYZ 轴旋转角度,判断头部的俯仰程度。头部的俯仰程度是指头部相对于水平面的倾斜角度。通过计算眼睛、鼻子等特征点的中心坐标来实现头部中心和头部方向向量的计算,构建旋转矩阵,并计算出欧拉角以判断驾驶员是否有瞌睡点头行为。

疲劳程度评估

        系统根据眼部状态、嘴部状态和头部状态识别的结果,综合考虑时间和场景因素,结合数据库中每位驾驶员的脸部特征与日常习惯特征,对驾驶员的疲劳程度进行评估。

警报或提醒生成

        系统根据疲劳程度评估结果,通过视觉、听觉、触觉等方式给予驾驶员警报,提醒其休息或更换司机。

模型训练

1. 数据收集与标注

  • 收集大量的驾驶员面部图像,包含各种表情和姿态。
  • 对图像进行标注,标记出面部区域、眼睛状态(如开眼、闭眼)、打哈欠等信息。

2. 模型选择与训练

  • 选择卷积神经网络(CNN)作为深度学习模型,用于特征提取和分类。
  • 使用收集和标注好的数据集进行模型训练,调整模型参数以提高准确率和实时性。

3. 模型部署

  • 将训练好的模型部署到香橙派 AIpro 上,使用其强大的算力进行实时推理和分析。
  • 优化模型推理代码,确保在香橙派 AIpro 上能够高效运行。

import tensorflow as tf

model = tf.keras.models.load_model('fatigue_detection_model.h5')

def predict_fatigue(image):
    processed_image = preprocess_image(image)
    prediction = model.predict(processed_image.reshape(1, 224, 224, 1))
    return prediction

        香橙派 AIpro 在模型训练中的优势在于它强大的计算能力香橙派 AIpro 搭载了昇腾 AI 处理器,提供 8TOPS INT8 的计算能力,能够高效处理大量数据并快速进行深度学习模型的推理。这对于实时疲劳检测系统来说至关重要,因为系统需要在毫秒级别内处理并分析图像数据,以确保及时识别出驾驶员的疲劳状态并发出警报。之前也使用过树莓派去训练模型,但是这一次只能说香橙派AIpro太香了。

第四章:系统测试与魔法调试

        激动人心的时候来啦,将训练好的模型部署在香橙派AIpro上后,运行代码,是骡子是马,该拉出来遛遛了。

        运行截图如下(视频就不展示啦,笔者害羞),效果还是可以的啦,人脸68个关键点都检测出来了,正常眨眼,打哈欠,瞌睡点头都很识别出来。到了设定的阈值也能及时报警:

结尾:奇幻之旅的终点与新篇章

        回顾这段旅程,真是一场充满挑战和乐趣的奇幻之旅。从最初收到香橙派 AIpro 时的兴奋,到一步步克服困难、实现目标的满足感,每一个瞬间都让我感受到了技术的魅力和创新的力量。

        香橙派 AIpro 不仅是一个工具,更像是我的伙伴,陪伴我走过了这段精彩的开发历程。它强大的计算能力、丰富的接口支持以及灵活的开发环境,使我能够顺利实现疲劳驾驶检测系统的构想。每当我遇到问题时,香橙派 AIpro 的性能总能让我找到解决的办法。无论是复杂的数据处理,还是实时的图像分析,它都表现得游刃有余。

        然而,这只是一个开始。通过这次项目,我积累了宝贵的经验和技能,也激发了我对未来更多项目的无限想象。我计划继续探索香橙派 AIpro 的更多可能性,尝试新的项目和挑战。无论是智能家居、物联网还是更多的人工智能应用,香橙派 AIpro 都将是我不可或缺的伙伴。

        🍻同时欢迎大家关注和订阅我的频道,让我们一起探索科技的无尽可能。如果你有任何问题或建议,也欢迎在评论区留言,我会尽力解答。

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

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

相关文章

C++模拟实现stack和queue

1 stack 1.1概念 stl栈 1.2栈概念 1.3代码 2 queue 2.1概念 stl队列 2.2队列概念 2.3代码

OLED显示一张图片

1.思路: void Oled_Show_Image(unsigned char *image) // { unsigned char i; //-128 ~ 127位 unsigned int j; //j要重新定义,因为要到达图片的最后一位 //行 i没有问题,j有问题 i为1时&am…

Ps系统教程03

选区工具的组合使用 先用魔棒将大致区域点击圈主 会发现一些零散的小区域 使用套索工具进行区域的加减(按住shift/alt键进行相关区域加减) 可以放大查看 基本处理完细节之后 如果把不用的填充背景直接按delete删除,那么原版图案就会…

QT C++ 读写mySQL数据库 图片 例子

在上篇文章中描述了怎样搭建读写数据库的环境。 本文更进一步,描述了读写mySQL数据库,字符、整型数字、图片。读写图片相对难点。 数据库的图片字段用BLOB,如果图片较大要用longblob,否则会报错。 另外,读写数据库都使用了短连…

DNS分离解析、多域名解析以及DNS子域试验

一、DNS分离解析 有些时候,对不同网络中的计算机进行DNS解析时,需要进行"区别对待",不同的主机请求服务器解析相同的域名,得到的IP地址也会不同。比如来自内网和外网的不同网段地址的客户机请求解析同一域名时&#xff…

简介有限面积和无限周长

前言 分形理论是一种非常重要的科学概念,它被广泛应用于物理学、数学、生物学等领域。分形理论描述了一种重复自相似的结构,这种结构在不同的尺度上都具有类似的形态。由于分形理论的应用广泛且深远,了解分形理论可以帮助人们更好地理解自然界和人造世界中的现象。 作为一…

docker占用磁盘空间大小排查

首先进入到 /var/lib/docker/overlay2 目录下,查看谁占用的较多 cd /var/lib/docker/overlay2/du -s ./* | sort -rn | more再通过目录名查找容器名 docker ps -q | xargs docker inspect --format {{.State.Pid}}, {{.Id}}, {{.Name}}, {{.GraphDriver.Data.WorkDir}} | gre…

基于Patroni+etcd+流复制搭建PostgreSQL高可用——筑梦之路

Patroni方案简介 Patroni是一个基于zk、etcd、consul等的pg ha模板,可以使用python来创建和定制高可用性解决方案。Patroni使用分布式key-value数据库作为数据存储,主节点故障时进行主节点重新选举。通过PG内置的流复制,支持同步和异步复制。…

java中,怎样用最简单方法实现写word文档

在跨平台环境中实现写word时,如果用现成的库,就会涉及跨平台兼容性问题,比如在安卓与java中实现写word的功能。还有一个问题就是,完全用程序生成word文档,工作量较大。所以采用了模板替换的方法。 docx文档本质就是一…

BUUCTF [GUET-CTF2019]zips 1

BUUCTF:https://buuoj.cn/challenges 题目描述: 得到的 flag 请包上 flag{} 提交。 密文: 得到一个attachment.zip文件 解题思路: 1、解压attachment.zip,得到222.zip文件。尝试解压需要密码,使用Ziperello爆破密码…

C语言学习笔记-- 3.4.2实型变量

1.实型数据在内存中的存放形式(了解) 实型数据一般占4个字节(32位)内存空间。按指数形式存储。 2.实型变量的分类(掌握) 实型变量分为:单精度(float型)、双精度&#…

在线思维导图编辑!3个AI思维导图生成软件推荐!

思维导图,一种以创新为驱动的视觉化思考工具,已经渗透到我们日常生活和工作的各个角落。当我们需要整理思绪、规划项目或者梳理信息时,思维导图总能提供极大的帮助。 近些年随着云服务等基础设施的完善,我们可以看到越来越多提供…

new CCDIKSolver( OOI.kira, iks ); // 创建逆运动学求解器

demo案例 new CCDIKSolver(OOI.kira, iks); 在使用某个特定的库或框架来创建一个逆运动学(Inverse Kinematics, IK)求解器实例。逆运动学在机器人学、动画和计算机图形学等领域中非常重要,它用于根据期望的末端执行器(如机器人的…

【IOT】OrangePi+HomeAssistant+Yolov5智能家居融合

前言 本文将以OrangePi AIpro为基础,在此基础构建HomeAssistant、YOLO目标检测实现智能家居更加灵活智能的场景实现。 表头表头设备OrangePi AIpro(8T)系统版本Ubuntu 22.04.4 LTSCPU4核64位处理器 AI处理器AI算力AI算力 8TOPS算力接口HDMI2、GPIO接口、Type-C、M.2…

复购率下降是什么原因导致的?三个步骤直击复购率下降根源

在商业运营中,回购率的波动往往能够直观地反映出客户对品牌和产品的忠诚程度。一个健康的回购率可以为企业带来稳定的收入流,同时也是品牌口碑和市场影响力的有力证明。但是,当企业面临回购率下降的情况时,这通常是一个警示信号&a…

c++(六)

c(六) 多态概念在c中是如何实现多态静态多态(绑定)动态多态(绑定) 动态多态的实现原理动态内存分配中遇到的问题 重载、重定义、重写的区别抽象类接口类---抽象类空类对象的内存大小explicitfinal修饰类修饰…

串口调试助手中文乱码 解决方案

输出乱码 一般,当串口调试助手输出乱码时,可能有以下几个原因: 波特率设置错误:串口通信需要保证发送和接收的设备使用相同的波特率。请检查串口调试助手和目标设备的波特率设置是否一致。 数据位、停止位或校验位设置错误&…

java Web开发中采用Servlet登录验证,中文用户名始终提示“用户名密码错误”以及输出中文乱码问题

采用Servlet登录验证,中文乱码问题解决 在Java Web开发中,往往采用Servlet完成前后端直接的控制和处理,例如:用户登录验证功能。 在采用如下Servle源码t完成用户名登录验证时,只要用户名涉及中文,对于正确…

kafka-偏移量图解

生产者偏移量:生产者发送消息时写入到哪个位置(主题的每个分区会存储一个 leo 即将写入消息的偏移量),每次写完消息 leo 会 1 消费者偏移量:消费者从哪个位置开始消费消息,小于等于 leo,每个组…

电脑怎么清理c盘垃圾文件 电脑运行内存不足怎么清理

和Windows系统电脑文件分区不同,苹果电脑并不分区,默认只有C盘,当C盘垃圾文件过多,电脑运行内存不足时,手动清理电脑垃圾文件毫无头绪,可以尝试使用苹果电脑清理软件——CleanMyMac来清理 。 一、电脑怎么…