个人防护装备检测

建筑业是事故发生率最高的行业之一。确保工人始终佩戴个人防护装备对于保障其人身安全、减少事故和遵守监管标准有着至关重要的意义。

您可以考虑使用以下几种解决方案：

人工检查：优点是可以直接进行核查，但其效果会受到人力和时间的限制。此外，人工检查还容易出错，而且无法大规模执行。

CCTV监控：优点是覆盖范围更大，可提供更加广阔的视野。然而，该方案需要人工查看录像；这个过程不仅耗时，而且感觉自己时刻处于监视之下可能会引发人们对隐私问题的担忧。

可穿戴传感器：此类传感器可提供实时数据，从而提升人员对各类事件的响应能力。不过，此类装备通常价格不菲，而且员工可能因为需要连续佩戴传感器而产生抵触情绪。

这些挑战正是引入边缘AI的原因所在。与其他解决方案相比，边缘AI具有支持实时检测、成本效益高、保护隐私和支持扩展等优点。该解决方案可以提供事故率下降和成本节约情况等定量证据，且可以根据员工提供的定性反馈来验证安全观念的改善程度。

方法

该用例基于一个公共数据集，其中包含大量关于员工穿戴个人防护装备（头盔、安全背心、安全鞋和安全手套）的图像。该解决方案的目标是检测出人员穿戴了哪些个人防护装备，并在每件装备周围画出一个边界框。

在这个项目中，我们使用了STM32 Model Zoo，可提供针对STM32进行了优化的预训练模型，以及用于重新训练和定制模型的脚本。

首先，我们复制了GitHub资源库并创建了项目环境。该项目涉及个人防护装备的检测，因此我们主要使用的是“Object detection”文件夹中的资源。您可以根据具体用例使用其他文件夹中的资源。STM32 Model Zoo支持多种应用。

下载数据集后，我们将文件导入到STM32 Model Zoo的指定文件夹 (stm32ai-modelzoo/object detection/datasets)。数据集中的每个样本都由一个图像和一个txt文件组成，且该文件会给出图像中每件装备的位置。

然后，我们使用配置文件 (stm32ai-modelzoo/object detection/src/user_config.yaml) 为模型设置了训练参数。该文件可用于：

从STM32 Model Zoo中选择一个预训练模型：本例中为SSD mobilenet v1。

定义运行模式：此处的“chain_tqeb”表示训练、量化、评估和基准测试。*

定义要检测的类别：人员、头盔、防护服、防护鞋、手套。

输入训练、验证、测试和量化文件夹路径（建议使用部分训练集）。

将图像调整为模型输入大小：224x224x3。

其他参数可保留为默认值。不过，您也可以对其进行修改，以提升模型的训练效果。

然后，我们只需通过“python stm32ai_main.py”命令执行Python脚本即可开始训练（请确保该命令位于stm32ai-modelzoo/object_detection/src文件夹中）。

训练完成后，我们可以在“experiment_outputs”文件夹 (stm32ai-modelzoo/object_detection/src/ experiment_outputs) 中检索结果。在该文件夹中，我们可以找到.h5训练模型及其.tflite量化版本、每个模型的执行时间和内存占用，以及每个待检测目标的混淆矩阵。

我们将在下方的视频中向您展示所有相关步骤。

* 量化和基准测试均可通过意法半导体边缘AI开发者云完成。

数据

数据集：个人防护装备检测
数据格式：
5类：人员、头盔、防护服、防护鞋、手套
RGB图像：4.2K训练、584验证、292测试

结果

模型：SSD mobilenetv1量化神经网络

输入大小：图像调整为224x224x3

内存占用：
188.6 KB Flash存储器用于权重
131.42 KB RAM用于激活

精度：量化后平均精度均值为78.96%

头盔类AP = 79.85%

手套类AP = 50.61%

人员类AP = 91.32%

防护鞋类AP = 82.73%

防护服类AP = 90.29%

基于STM32H747l-DISCO 400 MHz（高性能）的性能
推理时间：74.98 ms
STM32CubeAI 8.1.0