0

为了在 Tensorflow 中使用预训练模型,我们为 TensorFlow 克隆了 Model Garden,然后在 Model Zoo 中选择一个模型,例如Detection Model Zoo : EfficientDet D0 512x512

有没有办法检测到正确版本的 Tensorflow,例如2.7.0, or 2.7.1, or 2.8.0,这肯定会与上述设置一起使用?

文档 ( README.md) 似乎没有提到这个要求。也许它以某种方式暗示?

我检查setup.py了对象检测,但仍然没有任何线索!

\models\research\object_detection\packages\tf2\setup.py
REQUIRED_PACKAGES = [
    # Required for apache-beam with PY3
    'avro-python3',
    'apache-beam',
    'pillow',
    'lxml',
    'matplotlib',
    'Cython',
    'contextlib2',
    'tf-slim',
    'six',
    'pycocotools',
    'lvis',
    'scipy',
    'pandas',
    'tf-models-official>=2.5.1',
    'tensorflow_io',
    'keras'
]
4

1 回答 1

0

给定特定的 模型花园版本master分支,我不知道确定正确 Tensorflow 版本的正式/快速方法。但是,这是我的解决方法:

  1. REQUIRED_PACKAGES上面,我们看到tf-models-official>=2.5.1
  2. 检查 pypi.org 上的包历史记录,截至 03.02.2022 的最新版本是2.8.0.
  3. 所以在安装这个\models\research\object_detection\packages\tf2\setup.py文件的时候,pip自然会去获取最新版本的tf-models-official,也就是2.8.0,感谢>=symbol。
  4. 但是,给定tf-models-official, v2.8.0,其所需的包定义在tf-models-official-2.8.0\tf_models_official.egg-info\requires.txt(注意:下载包并解压,使用链接。)
  5. 在这里,我们发现:
tensorflow~=2.8.0

...表示所需的 Tensorflow 版本是2.8.*.

这可能不是所希望的,例如在 CoLab 中,当前版本是2.7.0.

  1. 要解决方法,我们应该使用tf-models-official, v2.7.0。请注意,它与 Tensorflow 版本匹配。在这个版本2.7.0requires.txt,我们应该看到tensorflow>=2.4.0,CoLab 的默认 Tensorflow 版本 ( ) 已经满足了这一点2.7.0

  2. 要使此解决方法成为可能,\models\research\object_detection\packages\tf2\setup.py应将 修改为,例如修改'tf-models-official>=2.5.1''tf-models-official==2.7.0'

警告:我认为这个 hack 不会影响对象检测 API 的功能,因为它最初需要任何tf-models-official>= 2.5.1。我们只是简单地修复它==2.7.0

于 2022-02-08T16:20:24.503 回答