橙派探险记:开箱香橙派 AIpro 与疲劳驾驶检测的奇幻之旅
分享了使用香橙派 AIpro 开发疲劳驾驶检测系统的全过程。从开箱体验到登录香橙派OS,硬件设计,再到软件开发和模型训练,每一个步骤都详细记录了我的探索和发现。香橙派 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 卡上。以下是具体步骤:
准备 TF 卡和读卡器:使用容量至少为 32GB 的 TF 卡(建议使用 64GB 或以上),并准备一个 TF 卡读卡器。
下载镜像和烧录工具:从香橙派官网 下载镜像 和 balenaEtcher 烧录工具。
烧录镜像:将 TF 卡插入读卡器并连接到电脑。
打开 balenaEtcher,选择下载的 Linux 镜像文件和 TF 卡,然后点击“Flash”开始烧录。
烧录完成后,将 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 |
登录模式
其实上面介绍的调试方法就已经是登录上了香橙派的系统了,除此之外,再介绍两种登录方式。
远程登录模式:
使用网线连接电脑,再通过ssh远程连接香橙派,以下是连接实物图,红色框出来的是电源接口,黄色框出来的是电源接通后的指示灯,蓝色框出来的是网线接口,紫色框出来的是网线接口指示灯:
使用 SSH 远程登录重新拍。确保开发板已连接以太网或 Wi-Fi,获取 IP 地址后,通过 SSH 连接到开发板(默认用户名:HwHiAiUser,密码:Mind@123)。
本机登录(HDMI)模式:
将 HDMI0 接口连接到显示器,通过 USB 接口连接键盘和鼠标,开机后进入 Linux 系统桌面。以下是连接实物图,红色框出来的是HDMI0,黄色框出来的是USB接口:
第二章:大胆的项目构想
在我收到香橙派 AIpro 后,便萌生了一个大胆的构想——利用这块强大的开发板,实现一个基于深度学习与 OpenCV 的疲劳驾驶检测系统。香橙派 AIpro 不仅为该项目提供了强大的计算能力和丰富的接口支持,更在多个环节中发挥了关键作用。
随着汽车数量的增加和交通事故的频发,疲劳驾驶已成为道路交通安全的重大隐患。为了减少因疲劳驾驶引发的事故,我决定构建一个智能疲劳驾驶检测系统。该系统将基于香橙派 AIpro 硬件平台,结合深度学习与 OpenCV 技术,对驾驶员的疲劳状态进行实时监测和预警。
系统架构设计
该系统的整体架构如下:
硬件平台 |
香橙派 AIpro |
摄像头与智能补光灯 |
用于实时捕捉驾驶员面部图像与根据环境补偿亮度 |
数据预处理 |
|
人脸检测 |
采用 Haar 特征级联分类器 |
特征提取与分类 |
基于卷积神经网络(CNN)的深度学习模型 |
疲劳状态评估 |
|
疲劳判断模型 |
结合预设的阈值和规则,生成专属的疲劳驾驶判断模型 |
报警系统 |
当检测到驾驶员疲劳时,通过声音、图像或文字发出警报和提醒 |
香橙派 AIpro 在项目中的重要作用
香橙派 AIpro 作为该系统的核心硬件平台,发挥了至关重要的作用:
强大的计算能力:香橙派 AIpro 搭载了昇腾 AI 处理器,提供 8TOPS INT8 的计算能力,为深度学习模型的实时推理提供了强大的算力支持。这使得系统能够快速处理和分析大量的面部图像数据,实时评估驾驶员的疲劳状态。
丰富的接口支持:香橙派 AIpro 提供了多种接口,包括 HDMI、MIPI CSI 摄像头接口、USB 接口等,极大地简化了硬件连接和数据传输。通过这些接口,可以轻松连接摄像头、显示器和其他外设,保证系统的高效运行。
稳定的系统支持:香橙派 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 都将是我不可或缺的伙伴。
🍻同时欢迎大家关注和订阅我的频道,让我们一起探索科技的无尽可能。如果你有任何问题或建议,也欢迎在评论区留言,我会尽力解答。
更多推荐
所有评论(0)