橙派探险记:开箱香橙派 AIpro 与疲劳驾驶检测的奇幻之旅
目录
引子:神秘包裹的到来
第一章:香橙派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 卡上。以下是具体步骤:
- 准备 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 tfmodel = 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 都将是我不可或缺的伙伴。
🍻同时欢迎大家关注和订阅我的频道,让我们一起探索科技的无尽可能。如果你有任何问题或建议,也欢迎在评论区留言,我会尽力解答。
相关文章:

橙派探险记:开箱香橙派 AIpro 与疲劳驾驶检测的奇幻之旅
目录 引子:神秘包裹的到来 第一章:香橙派AIpro初体验 资源与性能介绍 系统烧录 Linux 镜像(TF 卡) 调试模式 登录模式 第二章:大胆的项目构想 系统架构设计 香橙派 AIpro 在项目中的重要作用 第三章…...

云计算期末复习(1)
云计算基础 作业(问答题) (1)总结云计算的特点。 透明的云端计算服务 “无限”多的计算资源,提供强大的计算能力 按需分配,弹性伸缩,取用方便,成本低廉资源共享,降低企…...
frp转发服务
将内网服务转发到外网,我准备了一台阿里云ubuntu22.04服务器,两台内网ubuntu22.04服务器 下载frpc和frps以及配置文件 链接: https://pan.baidu.com/s/1auvcWWnyfpYPYatYhHFYag?pwdqkgh 提取码: qkgh 复制这段内容后打开百度网盘手机App,操作…...

【主流分布式算法总结】
文章目录 分布式常见的问题常见的分布式算法Raft算法概念Raft的实现 ZAB算法Paxos算法 分布式常见的问题 分布式场景下困扰我们的3个核心问题(CAP):一致性、可用性、分区容错性。 1、一致性(Consistency):…...

spring cloud config server源码学习(一)
文章目录 1. 注解EnableConfigServer2. ConfigServerAutoConfiguration2.1 ConditionalOnBean和ConditionalOnProperty2.2 Import注解2.2.1. EnvironmentRepositoryConfiguration.class2.2.2. CompositeConfiguration.class2.2.3. ResourceRepositoryConfiguration.class2.2.4.…...

人脸识别——探索戴口罩对人脸识别算法的影响
1. 概述 人脸识别是一种机器学习技术,广泛应用于各种领域,包括出入境管制、电子设备安全登录、社区监控、学校考勤管理、工作场所考勤管理和刑事调查。然而,当 COVID-19 引发全球大流行时,戴口罩就成了日常生活中的必需品。广泛使…...

磁盘管理后续——盘符漂移问题解决
之前格式化磁盘安装了文件系统,且对磁盘做了相应的挂载,但是服务器重启后挂载信息可能有问题,或者出现盘符漂移、盘符变化、盘符错乱等故障,具体是dev/sda, sdb, sdc 等等在某些情况下会混乱掉 比如sda变成了sdb或者sdc变成了sdb等…...

基于GO 写的一款 GUI 工具,M3u8视频下载播放器-飞鸟视频助手
M3u8视频下载播放器-飞鸟视频助手 M3u8视频飞鸟视频助手使用m3u8下载m3u8 本地播放 软件下载地址m3u8嗅探 M3u8视频 M3u8视频格式是为网络视频播放设计,视频网站多数采用 m3u8格式。如腾讯,爱奇艺等网站。 m3u8和 mp4的区别: 一个 mp4是一个…...
关于EasyExcel导入数据时表格日期格式识别为数字问题
参考官方地址 自定义日期转字符串转换器 /*** 自定义excel日期转换器** author li* date 2024-05-29*/ public class CustomStringDateConverter implements Converter<String> {Overridepublic Class<?> supportJavaTypeKey() {return String.class;}Overridep…...
高通Android 12/13打开省电模式宏开关
1、添加到SettingsProvider配置项宏开关 默认节电助手自动开启百分比battery saver frameworks\base\packages\SettingsProvider\src\com\android\providers\settings\DatabaseHelper.java private void loadGlobalSettings(SQLiteDatabase db) {在该方法中添加 ......final i…...

2023年西安交通大学校赛(E-雪中楼)
E.雪中楼 如果算出按南北的序列,再转成从低到高的编号序列,岂不是太麻烦了,幸好,没有在这方面费长时间,而是意识到,本质就是要从低到高的编号序列,所以我就按样例模拟了一下,当a[i]0…...
如何在vue2中使用tailwind
查看官方文档,不要去看过时的文章! 使用官网推荐的第一个安装方法 Installation - Tailwind CSS vue版本:2.6.10 1. 安装tailwind的包 npm install -D tailwindcss npx tailwindcss init 2. tailwind.config.js 文件中的content是你需要…...

【OrangePi AIpro】开箱初体验以及OAK深度相机测试
1. 简介 Orangepi AIPRO 是一款采用昇腾AI技术路线,集成4核64位处理器AI处理器的单板计算机,集成图形处理器,支持8TOPS AI算力,拥有8GB/16GB LPDDR4X,可以外接eMMC模块,支持双4K高清输出。 Orange Pi AIpr…...
滑动窗口模板(Java)
题目描述 有一个长为 𝑛 的序列 𝑎,以及一个大小为 𝑘 的窗口。现在这个从左边开始向右滑动,每次滑动一个单位,求出每次滑动后窗口中的最大值和最小值。 例如,对于序列 [1,3,−1,−3,5,3,6,7] …...
transformers.BertTokenizer入门使用
教程link 示例代码 from transformers import OpenAIGPTLMHeadModel, GPT2LMHeadModel, BertTokenizer import torch tokenizer BertTokenizer.from_pretrained("thu-coai/CDial-GPT_LCCC-large") model OpenAIGPTLMHeadModel.from_pretrained("thu-coai/CD…...
快乐数-力扣
使用一个set来存储遇到的每个数,如果遇到的数在set中,那么说明这个数不是快乐数,否则一直循环下去,直到n 1结束循环,表示这个数是个快乐数。 需要注意的是,给定一个数 n, 怎样对这个数 n 进行每一位求和。…...
Git标签的使用
天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…...

【uni-app】Pinia 持久化
小程序端 Pinia 持久化 说明:Pinia 用法与 Vue3 项目完全一致,uni-app 项目仅需解决持久化插件兼容性问题。 持久化存储插件 安装持久化存储插件: pinia-plugin-persistedstate pnpm i pinia-plugin-persistedstate插件默认使用 localStor…...

Flink 窗口
窗口(Window) 窗口是处理无限流的核心。 窗口将流分割成有限大小的“桶”,我们可以计算窗口中的数据。 窗口程序一般有键控流(keyed streams)的窗口程序 和 非键控流(non-keyed streams)的窗口…...
基于大模型和RAG技术实现的开源项目
基于大模型和RAG技术实现的开源项目 为解决大模型的不足,使用RAG技术增强大模型生成内容的针对性和可读性能力,有很多不错的开源项目。例如下面的项目。 1 ragflow 优点:可以对文档和知识库进行管理,构建不同的知识库ÿ…...
Vim 调用外部命令学习笔记
Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...

网络六边形受到攻击
大家读完觉得有帮助记得关注和点赞!!! 抽象 现代智能交通系统 (ITS) 的一个关键要求是能够以安全、可靠和匿名的方式从互联车辆和移动设备收集地理参考数据。Nexagon 协议建立在 IETF 定位器/ID 分离协议 (…...
在软件开发中正确使用MySQL日期时间类型的深度解析
在日常软件开发场景中,时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志,到供应链系统的物流节点时间戳,时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库,其日期时间类型的…...

【入坑系列】TiDB 强制索引在不同库下不生效问题
文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...

关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案
问题描述:iview使用table 中type: "index",分页之后 ,索引还是从1开始,试过绑定后台返回数据的id, 这种方法可行,就是后台返回数据的每个页面id都不完全是按照从1开始的升序,因此百度了下,找到了…...
工程地质软件市场:发展现状、趋势与策略建议
一、引言 在工程建设领域,准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具,正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...

ardupilot 开发环境eclipse 中import 缺少C++
目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...
python报错No module named ‘tensorflow.keras‘
是由于不同版本的tensorflow下的keras所在的路径不同,结合所安装的tensorflow的目录结构修改from语句即可。 原语句: from tensorflow.keras.layers import Conv1D, MaxPooling1D, LSTM, Dense 修改后: from tensorflow.python.keras.lay…...
高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数
高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数 在软件开发中,单例模式(Singleton Pattern)是一种常见的设计模式,确保一个类仅有一个实例,并提供一个全局访问点。在多线程环境下,实现单例模式时需要注意线程安全问题,以防止多个线程同时创建实例,导致…...

技术栈RabbitMq的介绍和使用
目录 1. 什么是消息队列?2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...