使用Python和TensorRT在Jetson Nano上运行的实时螺栓检测和计数系统-专为低功耗工业设置而构建
扫描二维码
随时随地手机看文章
工业自动化正在迅速发展,制造企业越来越多地采用工业4.0实践,以变得更智能、更高效。与此同时,硬件的进步使计算能力更容易获得,也更紧凑。
利用这两种趋势,我们利用NVIDIA Jetson Nano开发了一种实时螺栓检测和计数系统。该解决方案不仅涉及强大的机器学习模型的开发,还涉及在Jetson Nano等边缘设备上直接优化和部署这些模型,从而实现工业过程中的变革性自动化。
执行步骤
数据集采集:使用移动相机和USB相机采集数据集,采集工业螺栓排列在不同位置的图像。螺栓被放置在不同的角度和多种照明条件下,以模拟真实的工业环境。这种多样性确保了模型可以很好地概括,即使在外部条件发生变化时也能做出准确的预测,比如在低光照或不寻常的视角下。
数据注释:由于目标是检测和计数工业螺栓,我们使用Edge Impulse应用程序创建注释来标记图像中的每个螺栓。为了提高精度,每个螺栓周围使用矩形框进行手动标注。正确的标记对于训练能够识别和区分单个帧中的多个螺栓的目标检测模型至关重要。
特征提取:我们进行特征提取,将原始图像数据转化为有意义的特征。这一步包括规范化、调整大小和转换为RGB通道,具体取决于所选的模型管道。这些特征是训练目标检测模型的关键输入。
ML模型:我们使用MobileNetV2 SSD FPN-Lite 320x320训练模型,这是一种为边缘设备量身定制的高效目标检测架构。这种模型架构非常适合在复杂场景中检测像工业螺栓这样的小物体。
•MobileNetV2作为特征提取器,提供轻量级和快速的主干。
•SSD(单镜头多盒检测器)允许实时对象检测,通过预测边界框和类分数在单一的向前传递。
•FPN-Lite(特征金字塔网络Lite)通过聚合来自多个网络级别的特征来改进对小尺度目标的检测。
•320x320的输入图像分辨率平衡了边缘部署的检测精度和计算效率。
培训配置:
•训练周期:25
•学习率:0.15
•批量大小:32
•训练处理器:CPU
•验证集大小:总数据集的20%
•数据分割方式:随机分割
•量化:INT8
训练后,使用INT8量化对模型进行了性能分析,使其能够在边缘硬件上高效运行,进一步降低了其内存占用和推理延迟。这种配置使我们能够创建一个紧凑而准确的模型,能够在资源受限的设备上实时运行,如NVIDIA Jetson Nano。
ML模型转换:训练成功后,将模型转换为与边缘设备兼容的格式。根据部署目标,训练后的ML模型被转换为TensorFlow Lite和自定义c++库格式。在这种情况下,模型被转换为与tensorrt兼容的格式,以便在Jetson Nano上优化性能。
机器学习模型在Nvidia Jetson Nano上的部署:部署环境是通过使用Nvidia SDK Manager将Ubuntu 18.04加载到Nvidia Jetson Nano上准备的。这为AI模型推理提供了一个稳定、兼容的基础系统。
安装完操作系统后,安装并配置Python 3.6以支持模型的运行时需求。转换后的模型与自定义C和Python脚本集成在一起,可以直接在设备上进行实时推理。
该模型使用NVIDIA的高性能深度学习推理库TensorRT进行优化。这使得Jetson Nano可以利用其板载GPU加速处理。创建了一个轻量级推理应用程序来处理相机输入、图像预处理、模型执行和输出可视化——所有这些都是实时的。
这种部署设置确保系统在边缘自主运行,提供低延迟检测和螺栓计数,而无需互联网连接。
ML模型推理:一旦部署,模型对视频帧执行实时推理。它检测和计数存在于视场中的螺栓,并在其上覆盖边界框。输出包括螺栓数量及其位置,可进一步用于质量控制、自动检查或工业环境中的操作分析。
整体总结
延迟故障
产业整合准备情况
本文编译自hackster.io