随着物联网技术的普及,智能设备如智能灯泡、智能插座、门窗传感器、运动检测传感器等已经成为日常生活中不可或缺的一部分。这些设备通过互联网连接,用户可以通过智能手机、平板电脑或传统电脑等其他设备查看这些传感器收集的数据。然而,查看收集的数据通常需要额外的操作,例如打开特定应用程序并搜索正确的菜单以查看数据,这些操作可能成为不熟悉此类技术的用户的障碍。
为了简化数据搜索过程并创建直观的用户界面,探索了对象检测技术,以减少用户与系统之间的交互步骤。通过对象检测界面,用户无需导航菜单即可找到他们想要的数据。只需查看目标对象,即可提供从目标传感器收集的数据。
为了构建一个能够识别四种不同物联网传感器的模型,从六个不同的室内背景中收集了328张源图像,这些背景是应用程序主要使用的环境。值得注意的是,收集了背景为白色的源图像,这些白色背景与物联网传感器的白色相似。预计背景为白色的源图像将影响检测性能;然而,在白色背景上表现良好很重要,因为室内环境中白色并不少见。
还从不同角度和距离捕获了每个目标对象,以收集足够多样化的源图像。所有328张源图像都使用LabelImg进行了标记。然后,使用Roboflow的Dataset Health Check检查了数据集的质量。健康检查使能够识别缺少注释的图像。然后可以确认为每个目标对象收集了多少源图像。一旦确定了哪些类别的代表性不足,就通过为该类别添加更多的源图像来解决“类别不平衡”问题。继续收集额外的数据,直到认为模型能够达到所需的性能水平。
在标记了所有源图像之后,使用Roboflow来提高数据的质量。这包括应用图像预处理技术,如自动定向,以及通过添加旋转和模糊等变化来增强图像。这个过程增加了图像的数量并提高了图像的多样性。增强后,有了557张图像。
由于原型目标平台是智能手机,使用了适合移动设备的检测模型进行训练。从SSD MobileNet V2开始。虽然对模型的速度感到满意,但需要更高的准确性。在Tensorflow 2 Detection Model Zoo中搜索,然后选择了SSD MobileNet V2 FPNLite 320x320模型,该模型具有相似的速度但更高的准确性。在Google Colab上运行了模型训练。由于之前没有使用TensorFlow 2在Google Colab上的经验,Roboflow模型库帮助轻松地训练了自己的模型。还阅读了另一篇博客文章,以了解如何在Google Colab上进行TensorFlow训练。
使用TensorFlow Lite Object Detection Android demo将定制模型部署到Android设备上。希望修改模型,以便在特定环境(例如,小型内存设备如IoTs)中使用,并调整了Android演示应用程序中的参数值。使用Netron来确定模型的输入大小以及需要调整哪些选项才能在Android上运行。在Android设备上测试运行TensorFlow Lite模型。