为了使用Tensorflow的预训练模型,我们为Tensorflow克隆了model Garden,然后在model Zoo中选择一个模型,例如Detection model Zoo:EfficientDet D0 512x512。
是否有任何方法可以检测到Tensorflow的正确版本,例如2.7.0
、2.7.1
或2.8.0
,在上述设置下,肯定会工作?
文档(README.md
(似乎没有提到这一要求。也许它是以某种方式暗示的?
我检查了setup.py
的对象检测,但仍然没有线索!
modelsresearchobject_detectionpackagestf2setup.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'
]
我不知道有什么正式/快速的方法来确定正确的Tensorflow版本,给定特定的Model Garden版本,master
分支。然而,我的解决方法是:
- 在上面的
REQUIRED_PACKAGES
中,我们看到了tf-models-official>=2.5.1
- 检查pypi.org上的包历史记录,截至2022年2月3日的最新版本为
2.8.0
- 因此,在安装这个
modelsresearchobject_detectionpackagestf2setup.py
文件时,由于>=
符号,pip
自然会获取tf-models-official
的最新版本,即2.8.0
- 然而,给定
tf-models-official
、v2.8.0
,其所需的包在tf-models-official-2.8.0tf_models_official.egg-inforequires.txt
中定义(注意:使用链接下载并提取包( - 在这里,我们发现:
tensorflow~=2.8.0
意味着所需的Tensorflow版本是CCD_ 18。
这可能不是所期望的,例如,在CoLab中,当前的版本是2.7.0
。
要解决此问题,我们应该使用
tf-models-official
、v2.7.0
。请注意,它与Tensorflow版本相匹配。在这个版本2.7.0
的requires.txt
中,我们应该看到tensorflow>=2.4.0
,它已经被CoLab的默认Tensorflow版本(2.7.0
(所满足。为了使这种变通方法成为可能,应将
modelsresearchobject_detectionpackagestf2setup.py
从例如'tf-models-official>=2.5.1'
修改为'tf-models-official==2.7.0'
。
Caveat:我认为这个破解不会影响对象检测API的功能,因为它最初需要任何tf-models-official
>=CCD_ 30。我们只是简单地将其修复为==2.7.0
。