我正在使用 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
目录吗?
答案 0 :(得分:0)
解决方案是 SSD_FEATURE_EXTRACTOR_CLASS_MAP
在 if 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。以上都是对的。