Tensorflow 对象检测 API 错误:ValueError: ssd_mobilenet_v2 is not supported

时间:2021-01-28 13:51:40

标签: python tensorflow tensorflow2.0 object-detection-api

我正在使用 TF 对象检测 API。我使用的是 TF2.4.1,python 3.6,想训练 mobilenet_v2

我下载了官方的 SSD MobileNet v2 320x320 here

运行训练时
/tensorflow/model/research/object_detection/model_main_tf2.py

我收到以下错误:

<块引用>

... 文件 "/home/base/anaconda3/envs/AIOD/lib/python3.6/site-packages/object_detection/builders/model_builder.py", 第 251 行,在 _check_feature_extractor_exists 'Tensorflow'.format(feature_extractor_type))

<块引用>

值错误:不支持 ssd_mobilenet_v2。见model_builder.py 用于兼容不同版本的特征提取器 张量流

在我的 pipeline.config 文件中,特征提取器未更改为:

feature_extractor {
  type: 'ssd_mobilenet_v2'
...
      }

... /model_builder.py 中,我发现 SSD_FEATURE_EXTRACTOR_CLASS_MAP 包括 ssd_mobilenet_v2(model_builder 中的第 185 行)。

之前,我遇到了一个问题,即使我给出了确切的位置,也无法找到 pipeline.config 文件。将 pipeline.config 文件复制到 tensorflow/models/own_model_Dir 使该错误消失。所以也许,我必须把我下载的模型放到一个特定的文件夹中?

问题


有人知道如何解决这个问题吗?

你知道我要把模型放在哪里吗?我还必须将它放入 tensorflow/models 目录吗?

1 个答案:

答案 0 :(得分:0)

解决方案是 SSD_FEATURE_EXTRACTOR_CLASS_MAPif tf_version.is_tf1(): 之下 当我使用 TF2.4.1 运行时,我不是 tf1。

为了避免这种情况,请使用 TF<2(即使它在名称中说明 model_main_tf2.py)或

您在 pipeline.config 中选择作为特征提取器 例如,ssd_mobilenet_v2_keras。我仍然需要弄清楚哪个是合适的,但这将是一个解决方案,因为这个提取器位于 SSD_KERAS_FEATURE_EXTRACTOR_CLASS_MAP 中,它位于 if tf_version.is_tf2():

...在我们这些中,我遇到了她的问题,但这不是针对此线程的。

编辑: 另一种解决方案是下载并使用正确的模型文件。不知何故,我设法下载了一个 TF2 模型,但使用了以前下载的 TF1 文件:-S。以上都是对的。