资料介绍
描述
不良驾驶习惯导致危险的驾驶条件
我们的 10n2 项目旨在通过使用 Sony Spresense 和人工智能识别不良驾驶习惯。年轻的司机可以而且确实在很小的时候就养成了很多不良习惯。不良习惯的范围从不正确的手部位置到在控制车辆时使用移动设备。国家安全委员会报告称,手机使用每年导致160 万起车祸!随着新司机的诞生,我们非常有兴趣在不良驾驶习惯养成习惯之前帮助他们消除这种习惯。
人工智能和物联网来拯救
10n2 设备不仅会检测手机使用情况,还会检测手部位置不当、急转弯、短停快速加速和跳坑。所有这些都会导致危险的驾驶条件。当检测到违规行为时,司机会收到实时通知。
设备收集的信息用于在 Google 地球 KML 中生成报告,其中详细说明检测到的违规行为以及地理位置。收集违规行为,并在旅行的各个部分计算分数。司机可以回顾他们的行程并了解他们可以改进的地方。
构建设备
10n2 是 3d 打印材料、DiY 电气元件、Sony Spresense 板和摄像头、经过 Edge Impulse 训练的 CNN 和一些使其全部工作的代码的组合。
10n2 坐骑
首先要做的是打印 10n2 安装。将model.stl加载到切片软件(如Cura )中,生成许多3d打印机使用的gcode。获得 gcode 后,将其加载到 3d 打印机上,打印大约需要 1 小时。在 Ender3 Pro 上!
现场准备
现在是时候按照索尼网站上的精彩文档准备 Sony Spresense 了。启动并运行 Spresense 并安装 Sony 相机板后,就可以将电池插座焊接到主板上了。
安装组件
下一步是安装 MPU 和按钮开关。10n2 安装座具有 MPU 和按钮的安装座。MPU 使用 M3 螺丝固定,按钮使用 Velcro 直接安装到 10n2 安装座。
电线组件
现在组件已安装,您可以按照下面的接线图连接 MPU 和按钮。可以通过在相机带状电缆下方布设电线来实现电线管理。这样可以让电线远离您,并有助于 GPS 信号。
收尾工作
设备全部连接好后,我们现在可以安装电池外壳和 Velcro(用于将 10n2 设备安装到车顶)。电池外壳粘在相机支架的底部。这有两个目的;1) 固定电池 (duh) 和 2) 为相机捕捉图像和执行实时分类提供正确的角度。您还可以安装轻型 3.5 毫米。杰克扬声器作为这一点。
恭喜!你现在对硬件不满意了。
加载 10n2 软件
GitHub 上提供了所有 10n2 软件。要加载软件,建议您遵循 Spresense SDK 设置,克隆存储库并使用 VSCode 将软件直接安装到设备。
IDE准备
按照Sony Spresense IDE 指南为您的环境安装和配置软件。
10n2 准备和构建
现在您已经准备好一个 IDE,是时候克隆 10n2 存储库了。将存储库克隆到新的 VSCode 项目。10n2 存储库有一个 10n2 sdk.config ,其中包含运行 10n2 软件所需的所有 nuttx/spresense 配置。通过微型 USB 将您的 Spresense 设备连接到您的计算机,并确保它被 VSCode 识别。现在,您可以通过左键单击您的 VSCode 项目并选择Spresense:Build and Flash 来刷新您的设备。
如果一切顺利,没有任何问题,您应该可以使用 10n2 设备了!
挂载 10n2
10n2需要倒置安装在驾驶员头部后方约 12 英寸处,并在车门之间居中,向下倾斜约 15 度(由电池支架提供)。
训练
10n2 设备使用Edge Impulse在 10n2 的核心设计模型和训练 CNN。该模型是一个简单的 3 类(手/无手/细胞)2D 量化卷积模型。由于 Sony Spresense 的内存/计算限制,我们决定使用简单的 CNN。量化是必不可少的,因为它使模型达到可管理的大小。Edge Impulse 具有易于使用的量化模型方法,以及有关如何在目标硬件上使用量化模型的详细说明。
如您所见,该模型训练得相对较好并且表现出奇的好。
数据
该模型是在 96x96 位图像灰度 8 位图像上训练的。我们选择 96x96 是因为它刚好足以覆盖视野中的方向盘,又小到足以为我们的目标平台制作大小合适的模型,而 96x96 是许多流行的预训练模型中的常见尺寸。
数据采集
数据直接从 Spresense 和 Sony Camera 开发板收集*。对于我们的 96x96 下采样,我们使用相机 x 坐标中 192-288 的像素和相机 y 坐标中 12-108 的像素。它位于相机的右上象限,即覆盖方向盘和手部位置的象限。
* 所有数据均在 2007 年本田 CRV 中收集
安装 EI 模型
一旦你有了一个你喜欢的模型,你就可以使用很棒的 Edge Impulse 网站来构建一个可部署的模型。10n2项目采用C++模型部署方式。
获得 C++ 模型部署 zip 后,您需要做的就是将以下文件提取到 10n2 存储库中的等效文件:
model_metadata.h
tflite-resolver.h
tflite-trained.h //model weights
代码
任何项目中我最喜欢的部分是代码!完整的 10n2 代码可通过 GitHub 获得。本节将突出显示导入部件。首先,SMP是必需的,因为 10n2 对 Spresense 的要求很高。SMP 允许异步使用所有 6 个内核。10n2 将一个完整的核心专用于 TensorFlow 推理引擎,并将剩余的核心分配给相机捕捉、数据收集和 KML 生成等功能。
SMP 示例
您会注意到在使用 SMP 时设置 CPU 亲和性很重要。这告诉调度程序哪个 CPU 运行 p 线程。
bool imu_init(void)
{
printf("imu init\n");
imu_running = true;
cpu_set_t cpuset = 1 << 2;
pthread_create(&imu_th_consumer, NULL, &_imu_q_read, NULL);
int rc;
rc = pthread_setaffinity_np(imu_th_consumer, sizeof(cpu_set_t), &cpuset);
if (rc != 0)
{
printf("Unable set CPU affinity : %d", rc);
}
return true;
}
Edge Impulse 模型推理
EI生成的TFLM模型是量化的。必须对输入和输出进行量化和反量化以获得有意义的结果。
量化
int8_t quantize(uint8_t pixel_grayscale)
{
// ITU-R 601-2 luma transform
// see: https://pillow.readthedocs.io/en/stable/reference/Image.html#PIL.Image.Image.convert
int32_t gray = (iRedToGray * pixel_grayscale) + (iGreenToGray * pixel_grayscale) + (iBlueToGray * pixel_grayscale);
gray >>= 16; // scale down to int8_t
gray += EI_CLASSIFIER_TFLITE_INPUT_ZEROPOINT;
if (gray < -128)
gray = -128;
else if (gray > 127)
gray = 127;
return static_cast8_t>(gray);
}
反量化
for (int k = 0; k < NUM_CLASSES; k++)
{
//dequantized output
conf = (od[k] - EI_CLASSIFIER_TFLITE_OUTPUT_ZEROPOINT) * EI_CLASSIFIER_TFLITE_OUTPUT_SCALE;
}
急转弯、加速和减速都是根据 MPU 收集的数据计算得出的。MPU 安装在 10n2 的一侧,Z 轴朝上,Y 轴沿车辆的加速度轴,Z 轴垂直于 X 和 Y。
加速/减速
通过确定 Y 样本在 100 Hz 的 moving.35 秒窗口上的斜率来计算加速度和减速度。样品。如果坡度高于阈值,则认为车辆加速过快。如果坡度低于阈值 (± 500),则认为车辆减速过快。
急转弯
转弯的计算方式与加速度相同,但使用来自 MPU 的 X 加速度并使用小得多的斜率阈值 (+- 250)。
坑洞
通过对沿 Z 轴的加速度使用标准偏差阈值来识别坑洞。如果标准偏差 > 1800,那么我们认为这是一个底池持有。
收集的数据
10n2 记录原始传感器数据以及 csv 中的计算数据。当 10n2 处于“训练”模式时,也会收集图像数据。CSV 数据以以下 CSV 格式存储:
t slopex slopey slopez inf conf acx acy acz gyx gyy gyz y M d h m s us type lat lon
23915 -98 55.299999 -27 0 0.53125 4225 -210 644 205 -129 -54 2022 8 3 23 42 23 586585 1 39.513708 -104.764668
24016 17.1 44.599998 -15.6 2 0.589843 4949 -4 641 -71 -75 20 2022 8 3 23 42 24 817926 1 39.513708 -104.764668
24117 -11.2 -31.700001 -6.1 1 0.46875 4870 -99 713 -53 -196 32 2022 8 3 23 42 25 433078 1 39.513708 -104.764668
24218 -67.400002 -35.200001 -7.1 0 0.953125 4969 10 685 -60 -104 -2 2022 8 3 23 42 26 648016 1 39.513708 -104.764668
24321 -12.1 7.8 6.6 1 0.734375 5005 -44 704 -60 -120 15 2022 8 3 23 42 27 890861 1 39.513708 -104.764668
结论
如果你做到了这一点,谢谢。我们在开发我们认为有用的产品方面度过了愉快的时光。我们欢迎所有评论和问题,希望您喜欢 10n2。要查看更多信息,请在线访问我们。
- 2023年人工智能产业概况及应用趋势分析 6次下载
- 什么是人工智能 人工智能应用领域 0次下载
- 基于python人工智能算法的五官识别设计资料 3次下载
- 人工智能专题报告:生成式人工智能产业全梳理 3次下载
- Spresense智能浮标开源分享
- 基于人工智能驱动的关键信息基础设施防御 4次下载
- 基于迁移学习的驾驶分心行为识别模型 10次下载
- 智能系统的定义与识别:人造智能与人工智能资料下载
- 人工智能的伦理智能体应用及相关研究 7次下载
- 如何才能让人工智能更加智能 2次下载
- 人工智能到底是什么?什么工作需要学习人工智能 17次下载
- 为什么Python是人工智能最好的编程语言Python有什么优势 15次下载
- 人工智能及其产业发展如何?人工智能标准化白皮书(2018版)免费下载 0次下载
- 人工智能行业发展状况如何?人工智能行业研究报告详细资料免费下载 15次下载
- 电子书 中美人工智能行业生态比较 243次下载
- 人工智能的语音识别技术详解 681次阅读
- 人工智能的工作原理和特点 468次阅读
- 生成式人工智能和感知式人工智能的区别 1155次阅读
- aigc是什么意思和人工智能有什么区别 9178次阅读
- 什么是人工智能?人工智能的分类和应用介绍 1w次阅读
- 人工智能在自动驾驶应用中的5大关键技术分析 2.8w次阅读
- 浅谈人工智能中六大关键技术 2.8w次阅读
- 苹果将人工智能和面部识别系统应用于车头灯 4715次阅读
- 人工智能瞬间识别慢性疾病还有多远? 1481次阅读
- 破局人工智能:AI平台及智能语音应用解析 7035次阅读
- 关于人工智能领域最新的报告分析 4701次阅读
- 中国人工智能创业领军20人里_你认识几个 9661次阅读
- 人工智能技术有哪些_人工智能技术的原理 6.1w次阅读
- 人工智能为何这么热_人工智能价值与应用_无人机属于人工智能吗 7411次阅读
- 人工智能需要哪些知识_人工智能需要学什么_如何自学人工智能 4.4w次阅读
下载排行
本周
- 1山景DSP芯片AP8248A2数据手册
- 1.06 MB | 532次下载 | 免费
- 2RK3399完整板原理图(支持平板,盒子VR)
- 3.28 MB | 339次下载 | 免费
- 3TC358743XBG评估板参考手册
- 1.36 MB | 330次下载 | 免费
- 4DFM软件使用教程
- 0.84 MB | 295次下载 | 免费
- 5元宇宙深度解析—未来的未来-风口还是泡沫
- 6.40 MB | 227次下载 | 免费
- 6迪文DGUS开发指南
- 31.67 MB | 194次下载 | 免费
- 7元宇宙底层硬件系列报告
- 13.42 MB | 182次下载 | 免费
- 8FP5207XR-G1中文应用手册
- 1.09 MB | 178次下载 | 免费
本月
- 1OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 2555集成电路应用800例(新编版)
- 0.00 MB | 33566次下载 | 免费
- 3接口电路图大全
- 未知 | 30323次下载 | 免费
- 4开关电源设计实例指南
- 未知 | 21549次下载 | 免费
- 5电气工程师手册免费下载(新编第二版pdf电子书)
- 0.00 MB | 15349次下载 | 免费
- 6数字电路基础pdf(下载)
- 未知 | 13750次下载 | 免费
- 7电子制作实例集锦 下载
- 未知 | 8113次下载 | 免费
- 8《LED驱动电路设计》 温德尔著
- 0.00 MB | 6656次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935054次下载 | 免费
- 2protel99se软件下载(可英文版转中文版)
- 78.1 MB | 537798次下载 | 免费
- 3MATLAB 7.1 下载 (含软件介绍)
- 未知 | 420027次下载 | 免费
- 4OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 5Altium DXP2002下载入口
- 未知 | 233046次下载 | 免费
- 6电路仿真软件multisim 10.0免费下载
- 340992 | 191187次下载 | 免费
- 7十天学会AVR单片机与C语言视频教程 下载
- 158M | 183279次下载 | 免费
- 8proe5.0野火版下载(中文版免费下载)
- 未知 | 138040次下载 | 免费
评论
查看更多