0

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

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

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

任何帮助将不胜感激。谢谢

4

1 回答 1

0

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

为了执行微调,需要执行一些重要步骤。

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

    项目{名称:“交通灯”ID:1 display_name:“交通灯”}

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

假设你选择了 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 模型。

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

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

于 2019-05-06T14:09:37.937 回答