在本文中,将探讨如何在自定义数据集上训练目标检测模型,并将其转换为TensorFlow Lite格式,以便在性能较低的硬件上快速部署。无论是在移动电话还是物联网设备上,优化都是部署前的重要步骤,因为这些设备的计算能力有限。如果不确定在流程中使用哪种模型和设备,请参考指南来帮助弄清楚。
TensorFlow Lite简介
TensorFlow Lite是TensorFlow官方为小型设备提供的推理框架,旨在避免服务器往返。这有许多优点,例如更大的实时检测能力、增强的隐私性以及不需要互联网连接。请注意,TensorFlow Lite不用于训练模型,而是用来将它们投入生产。幸运的是,与本文相关的Colab笔记本包含了所有代码,既可以在TensorFlow中训练模型,也可以将其转换为TensorFlow Lite格式投入生产。
准备目标检测数据
TensorFlow模型需要以TFRecord格式提供数据以进行训练。幸运的是,Roboflow可以为将任何数据集转换为这种格式。请注意,如果有未标记的数据,首先需要在对象周围绘制边界框,以便教计算机检测它们。
使用Roboflow免费标记和注释数据
使用Roboflow管理数据集,标记数据,并将其转换为26多种格式,以使用不同的模型。Roboflow免费提供高达10,000张图像的服务,基于云,并且团队使用起来非常简单。
使用自己的数据
要为本次教程导出自己的数据,请注册Roboflow并创建一个公共工作区,或者在现有的帐户中创建一个新的公共工作区。如果数据是私有的,可以升级到付费计划以导出数据,以便使用像本教程这样的外部训练程序,或者尝试使用Roboflow的内部训练解决方案。
训练自定义TensorFlow模型
由于TensorFlow Lite缺乏训练能力,将事先训练一个TensorFlow 1模型:MobileNet Single Shot Detector (v2)。而不是从头开始编写训练代码,本教程中的训练基于之前的一个帖子:如何训练TensorFlow MobileNet目标检测模型。它解释了选择MobileNet架构的原因:“这种特定的架构由Google研究,针对轻量级推理进行了优化,使其能够在计算受限的移动和嵌入式设备上表现良好。”
将SavedModel转换为TensorFlow Lite
一旦拥有一个SavedModel(来自提供的Colab笔记本或自己的来源),请使用TensorFlow LiteConverter。Google建议使用其Python API,尽管它也提供了一个命令行工具来完成这项工作。在笔记本中使用命令行转换器,因为它更简单。