×

使用AI在运输过程中保护包裹

消耗积分:0 | 格式:zip | 大小:0.00 MB | 2023-06-12

张桂英

分享资料个

描述

包裹的安全运输是所有在线零售商都头疼的问题,因为在运输过程中会发生许多损坏。这些损坏会导致更多的产品退货、糟糕的客户体验以及零售商的声誉。由于我们不知道在交付过程中发生了什么,因此可能很难证明包裹的内容物在运输过程中被毁坏,而不是在转移到承运人之前或之后。鉴于目前的情况,既有不公正的指控,也有蓄意造假的可能。

作为解决方案,我们正在设计一种可以监控包裹在运输过程中安全处理的设备。该设备使用 Nano 33 BLE Sense 和 GSM 模块以及 Edge Impulse 来识别包裹处理不当发生的位置。使用加速度计数据,设备可以识别在传输过程中发生的所有可能的不安全处理。一旦设备检测到不安全的处理,我们的系统就会生成警报,记录事件的当前时间。零售商可以分析日志作为内部审计的一部分,以分析快递服务的性能。用户还可以使用提供的网络界面跟踪包裹的安全处理。

该设备在运输带有护理包的手柄时非常有用,需要小心处理。

它是如何工作的?

Arduino Nano 33 BLE Sense 有一个 9 轴 IMU(3 轴加速度计 + 3 轴陀螺仪 + 3 轴磁力计),非常适合识别手势。在从 IMU 摄取数据后,AI 模型将这些动作分为五类——重摔、剧烈摇晃、投掷、正常携带和空闲。重摔、剧烈摇晃和投掷被归类为不安全处理,其余属于安全处理。一旦 AI 模型检测到不安全处理,GSM 模块就会被激活,并在 firebase 中记录不安全处理事件。用户和内部审计团队可以跟踪这些事件,以分析运营商的绩效。

poYBAGSBT1OAMgYCAADoxiCldlU661.png
 

软件设置

1.新建一个项目

第一步也是最重要的一步是创建一个新的 Edge Impulse 项目。如果您已经有一个帐户,您可以按照下面显示的步骤创建一个新项目。如果您没有 Edge Impulse 帐户,请注册一个新帐户并按照以下步骤操作。

pYYBAGSBT1eAQeChAAHksd9GJ7I149.png
 
poYBAGSBT1uANX5SAAKUa3uPzi8862.png
 

在我们的案例中,我们在分析来自 IMU 的加速度计数据后对手势进行分类。因此,请确保从列表中选择 ** Accelerometer Data **

pYYBAGSBT2CAQ0RxAASBw9TA7wY184.png
 

2.连接设备

为了直接从 Arduino Nano 33 BLE sense 收集加速度计数据,我们应该先将设备连接到 Edge Impulse studio。按照此处给出的步骤将设备与工作室连接。

完成上述所有步骤后,请确保您在“设备”选项卡中看到您的设备。

pYYBAGSBT2WAJSIBAAH-07JIk_w289.png
 

3. 数据收集

机器学习从您提供的数据开始。收集干净的数据至关重要,这样您的机器学习模型才能识别正确的模式。您的模型的准确性取决于您提供给计算机的数据质量。不准确或过时的数据将导致不准确的结果或不相关的预测。

由于它会直接影响模型的结果,因此请务必从信誉良好的来源获取数据。好的数据是相关的,几乎没有重复和缺失的信息,并且准确地代表了所有的分类和子类别。

在构建运动识别模型时,我们正在从 IMU 收集加速度计数据。

要收集数据,请导航至“数据采集”选项卡。

poYBAGSBT2mAQrX0AAQQPlWoKZk216.png
 

在那里您可以看到一个记录新数据选项卡,我们可以在其中从连接到 Edge Impulse 的受支持设备收集数据。如图所示设置所有数据采样参数,现在是时候收集一些数据了。根据您的需要改变采样参数。

我们将 Arduino Nano 33 BLE Sense 嵌入到垫子上以收集训练所需的数据。

poYBAGSBT3KAKDn1ABA_Xy4GIJQ48.jpeg
 

4.数据准备

最后,我们有 28 分钟的加速度计数据。数据是在 5 个不同的类别下收集的 - 重摔、剧烈摇晃、投掷、正常携带、空闲。

获得数据后,我们必须准备它。为此,我们可以执行以下操作。

  • 可视化数据

可视化数据以了解其结构并了解可能有助于我们设计脉冲的各种变量之间的关系。

pYYBAGSBT3WATtJlAACdbL1vDOc014.png
 
  • 清除不需要的数据

将数据可视化后,我们可以确定数据是否对模型训练有用。删除不需要的数据以创建干净的数据集。

  • 拆分数据

一旦我们有了一个干净的数据集,就把它分成训练和测试数据集。在这里,我们将它们以 80:20 的比例分成两部分。如果您的数据未拆分,请从数据采集选项卡仪表板执行测试/训练拆分

pYYBAGSBT46AYHstAAR7gURmy9s199.png
 
poYBAGSBT5KAZQJZAAIW747BHVQ275.png
 

5. 冲动设计

通过在 Edge Impulse 中创建 Impulse,您正在创建自己的机器学习管道。导航到Impulse 设计 > 创建 Impulse

一个脉冲包含 3 个块:输入块、处理块和学习块我选择了时间序列数据作为我的输入块,光谱分析作为处理块,分类(Keras)作为学习块。如果你对检测异常运动感兴趣,你可以添加一个异常块,我暂时忽略它。

pYYBAGSBT5aAJiYNAANllVDWLXs392.png
 

6.特征生成

接下来,选择Save Impulse ,然后通过单击导航到 Impulse 设计面板中的Spectral Features 。生成参数后,稍等片刻,然后单击“保存参数”

poYBAGSBT6SAKndiAAPhmUuGWaw857.png
 

现在转到Generate features选项卡,然后单击Generate features 该过程完成后,功能浏览器选项卡将允许您查看数据集。这使您可以快速验证您的数据是否正确聚类。

pYYBAGSBT6qASdG_AAM10EkN2sI668.png
 

7.模型训练

模型训练是神经网络尝试将权重和偏差的最佳组合拟合到机器学习算法以最小化损失函数的阶段。

NN 分类器选项卡中,在脉冲设计菜单下,我们可以配置影响神经网络训练过程的各种参数。如图所示,我更改了默认值以获得更高的准确性。

poYBAGSBT7CAZrTUAAKIPovGq80876.png
 

完成后,您会看到一些训练性能指标,例如准确性和损失。我们经过训练的模型的准确率为 95.4%,足以满足我们的所有需求。

pYYBAGSBT7eAPxSDAAT8VXg5kJo092.png
 

8.模型测试

训练好模型后,我们现在可以对其进行测试,看看它如何处理新数据。选择Model Testing下的Classify All 模型在我们的测试数据上的性能显示在“模型测试结果”选项卡中。我们的准确率为 91.3%,相当不错。您还可以查看混淆矩阵以确定哪些标签最容易出错。在此基础上,您可以使用附加项扩展这些类的训练数据集。

poYBAGSBT7yAVu8pAAVLTCnfTvo099.png
 

除了对测试数据进行分类外,我们还可以使用Live Classification来收集实时数据并进行实时分类。这将确保模型能够完美地处理真实世界的数据。

pYYBAGSBT8GAQPUAAARGPeuTDWo368.png
 

9. 将模型部署到设备

一旦模型经过训练和测试,就可以将其部署回设备。为此导航到Deployment > Build Firmware 选择Arduino Nano 33 BLE Sense and Build 它将生成模型并将其下载为 zip。将下载的 zip 添加到 arduino 库中,一切顺利。

poYBAGSBT8aAONYiAAMkuSpgmJ8141.png
 

在 Edge Impulse 中有选择 NN 分类器优化的选项。我们可以通过选择最佳选项来提高设备性能。Edge Impulse 将建议最适合我们需求的选项。如果启用编译器,我们将以更少的内存实现相同的精度。

pYYBAGSBT8mAed1TAAG5BFIeUY4618.png
 

10. Firebase 实时数据库

Firebase 是一个用于创建移动和在线应用程序的平台。感谢 Firebase,开发人员现在可以专注于创造令人惊叹的用户体验。无需服务器管理,无需创建 API。Firebase 是您的服务器、API 和数据存储,所有这些都是以一种通用的方式构建的,您可以根据大多数需求调整它们。在我们的项目中,我们使用 Firebase 实时数据库来即时发布和检索数据。

查找 Firebase 配置

  • 去火力地堡
  • 然后转到设置>项目设置
  • 在您的应用程序 > SDK 设置和配置 > 配置下(示例如下)
const firebaseConfig = {
apiKey: "",
authDomain: "",
databaseURL: "",
projectId: "",
storageBucket: "",
messagingSenderId: "",
appId: ""
};

12. 网页界面

Web 界面的设计方式可以反映 Firebase 数据库中更新的所有事件。不安全的处理事件直接从 Nano 33 BLE Sense 在 firebase 中更新,其他发布的更新可以使用 API 进行更新。

poYBAGSBT-mAQ49SAAKCfDITxfU015.png
 

硬件

Package tracker的核心是 Arduino Nano 33 BLE sense。我们之所以选择这款板,是因为它外形小巧,功能强大。它带有一系列嵌入式传感器,这里我们使用 LSM9DS1 传感器,这是一个 9 轴惯性模块。它带有一个额外的硬件串行端口,用于连接 GSM 模块。

pYYBAGSBT_CATGpNAA18OAQeiPI66.jpeg
 

该设备的电源是 3.7V 18650 锂离子电池,电流为 2000mah。

pYYBAGSBUBmAeueJAA71GbgFheE14.jpeg
 

该电池可以通过微型 USB 端口充电。本项目使用的充电控制器为TP4056。

pYYBAGSBUEOAeU9XAAn2FueEGPo51.jpeg
 

TP4056 模块输出的功率对于Arduino 的Vin实际上是不够的所以我们使用了这个微型升压转换器模块。

pYYBAGSBUEyAQcA7AA4nlsakuf421.jpeg
 

为了向 firebase 发送通知,我们实际上使用了 sim800l GSM 模块。该模块来自 Simcom,可为任何微控制器提供 GSM 功能,这意味着它可以连接到移动网络以接听电话和发送和接收文本消息,还可以使用 GPRS、TCP 或 IP 连接到互联网。Arduino 和 GSM 模块之间的通信是串行的。

pYYBAGSBUFWARR0dABMADgu525Q46.jpeg
 

我们设计并 3D 打印了这些微型外壳,用于固定所有硬件元件。这可以很容易地连接到使用接线带的任何包装上。

poYBAGSBUF-AdV-3ABJIo3yuLVA26.jpeg
 

然后我们将所有的元素一一固定在盒子里,并绑在包裹上。

pYYBAGSBUGqAG1YfABZy1D0kyrg83.jpeg
 
poYBAGSBUHKACZc1AA2pRTMPxG028.jpeg
 

 

 

 

 


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !