有什么方法可以修改可用的 TensorFlow 模型架构(例如 ssd 或 fast r-cnn),使其仅针对一个对象检测进行优化?

Is there any way to modify available TensorFlow models architecture (such as ssd or fast r-cnn) so it is optimized for only one object detection?

我是机器学习和 TensorFlow 的新手,所以很抱歉,如果我的理解有误,请纠正我。我有这个项目,使用 TensorFlow 开发实时交通灯检测。

我一直在使用预训练的 TensorFlow 模型,例如 SSD Mobilenet 和 Faster R-CNN Resnet。但是,还没有达到预期的精度结果。我已经考虑向数据集添加更多数据(我的数据集包含 +/-1000 张图像),但因为添加更多数据需要更多工作(因为我必须进行另一次数据采集并标记所有图像),这可能需要天。我想考虑另一种选择。

有没有什么方法可以修改 TensorFlow 模型架构,以便我可以优化并使其仅专注于交通灯检测?我一直在查看 TensorFlow 模型文件夹,但找不到这些模型架构在哪个文件中定义。

如有任何帮助,我们将不胜感激。谢谢

您需要在交通灯数据集上微调预训练模型。鉴于您已经有大约 1000 张图像用于一个 class,这是一个下降数据集。

为了进行微调,有一些重要的步骤要做。

  1. 首先,您需要将数据转换为 tfrecord 格式。按照 this 教程生成 tfrecord 文件。这实际上是一个困难的步骤。
  2. 为您的模型创建一个label_map.pbtxt,因为它只是一个红绿灯,您需要的就是这个。 Here 是示例 label_map 个文件。

    项目{ 姓名:"traffic-light" 编号:1 display_name: "traffic-light" }

  3. 然后你需要为模型准备一个流水线配置文件。既然你要实时检测器,我建议你使用SSD-mobilenet模型。一些示例配置文件可用 here。您可以采用此示例配置之一并修改一些字段以获得模型的管道配置。

假设你选择ssd_mobilenet,那么你可以修改这个配置文件,ssd_mobilenet_v2_coco.config。具体需要修改这些字段:

  • num_classes: 你需要把90改成1,因为你只有红绿灯可以检测。
  • input_path:(在 train_input_readereval_input_reader 中),将其指向您创建的 tfrecord 文件。
  • label_map_path:(在 train_input_readereval_input_reader 中),将其指向您创建的 label_map 文件。
  • fine_tune_checkpoint:将此路径设置为下载的预训练 ssd-mobilenet 模型。

根据您的训练结果,您可能需要进一步调整配置文件中的某些字段,但在训练后您的模型将只关注交通灯 class 并且可能具有很高的准确性.

所有具体教程都可以在repo网站上找到。如果您还有其他问题,可以在 Whosebug 上提问,标签为:object-detection-api 很多人会提供帮助。