Tensorflow 对象检测 Api M1 Macbook 冲突错误
Posted
技术标签:
【中文标题】Tensorflow 对象检测 Api M1 Macbook 冲突错误【英文标题】:Tensorflow Object Detection Api M1 Macbook Conflict Error 【发布时间】:2021-10-26 21:39:57 【问题描述】:机器:MacBook Air M1 2020
操作系统:macOs BigSur 11.4
venv 的 Python 版本:Python 3.8.6
Tensorflow 版本:ATF Apple Tensorflow 0.1a3
Pip 版本:21.2.4
我已经使用 this guide 从 github 安装了 Tensorflow。
现在,我的点子列表是这样的。
Package Version
----------------------- ---------
absl-py 0.13.0
appnope 0.1.2
astunparse 1.6.3
backcall 0.2.0
cached-property 1.5.2
cachetools 4.2.2
certifi 2021.5.30
charset-normalizer 2.0.4
cycler 0.10.0
Cython 0.29.24
debugpy 1.4.1
decorator 5.0.9
entrypoints 0.3
flatbuffers 2.0
gast 0.5.2
google-auth 1.35.0
google-auth-oauthlib 0.4.5
google-pasta 0.2.0
grpcio 1.33.2
h5py 2.10.0
idna 3.2
ipykernel 6.2.0
ipython 7.26.0
ipython-genutils 0.2.0
jedi 0.18.0
jupyter-client 7.0.1
jupyter-core 4.7.1
Keras-Preprocessing 1.1.2
kiwisolver 1.3.1
Markdown 3.3.4
matplotlib 3.4.3
matplotlib-inline 0.1.2
nest-asyncio 1.5.1
numpy 1.18.5
oauthlib 3.1.1
opt-einsum 3.3.0
packaging 21.0
parso 0.8.2
pexpect 4.8.0
pickleshare 0.7.5
Pillow 8.3.1
pip 21.2.4
prompt-toolkit 3.0.20
protobuf 3.17.3
ptyprocess 0.7.0
pyasn1 0.4.8
pyasn1-modules 0.2.8
Pygments 2.10.0
pyparsing 2.4.7
python-dateutil 2.8.2
pyzmq 22.2.1
requests 2.26.0
requests-oauthlib 1.3.0
rsa 4.7.2
setuptools 57.4.0
six 1.16.0
tensorboard 2.6.0
tensorboard-data-server 0.6.1
tensorboard-plugin-wit 1.8.0
tensorflow-addons 0.1a3
tensorflow-estimator 2.6.0
tensorflow-hub 0.12.0
tensorflow 0.1a3
termcolor 1.1.0
tornado 6.1
traitlets 5.0.5
typeguard 2.12.1
typing-extensions 3.10.0.0
urllib3 1.26.6
wcwidth 0.2.5
Werkzeug 2.0.1
wheel 0.37.0
wrapt 1.12.1
我想在 link 中安装来自 Tensorflow 的 Object Detection Api。
我克隆了 repo,我关注 guide。 (Python包安装)
当我执行这个命令时
python -m pip install --use-feature=2020-resolver .
它开始下载,并开始打印很长的错误。
在操作结束时,它给了我这个错误。
Using cached scipy-1.2.3.tar.gz (23.3 MB)
Collecting pandas
Using cached pandas-1.3.2-cp38-cp38-macosx_11_0_arm64.whl
Collecting tf-models-official>=2.5.1
Using cached tf_models_official-2.6.0-py2.py3-none-any.whl (1.8 MB)
Collecting kaggle>=1.3.9
Using cached kaggle-1.5.12-py3-none-any.whl
Collecting py-cpuinfo>=3.3.0
Using cached py_cpuinfo-8.0.0-py3-none-any.whl
Requirement already satisfied: numpy>=1.15.4 in /Users/stefan/Desktop/Studio/TFOD/tf-m1/lib/python3.8/site-packages (from tf-models-official>=2.5.1->object-detection==0.1) (1.18.5)
Collecting opencv-python-headless
Using cached opencv_python_headless-4.5.3.56-cp38-cp38-macosx_11_0_arm64.whl (10.7 MB)
Collecting tf-models-official>=2.5.1
Using cached tf_models_official-2.5.1-py2.py3-none-any.whl (1.6 MB)
Collecting tensorflow-datasets
Using cached tensorflow_datasets-4.4.0-py3-none-any.whl (4.0 MB)
Collecting google-api-python-client>=1.6.7
Downloading google_api_python_client-2.18.0-py2.py3-none-any.whl (7.4 MB)
|████████████████████████████████| 7.4 MB 3.4 MB/s
Collecting oauth2client
Using cached oauth2client-4.1.3-py2.py3-none-any.whl (98 kB)
Collecting tensorflow-model-optimization>=0.4.1
Using cached tensorflow_model_optimization-0.6.0-py2.py3-none-any.whl (211 kB)
Collecting pyyaml>=5.1
Downloading PyYAML-5.4.1.tar.gz (175 kB)
|████████████████████████████████| 175 kB 31.3 MB/s
Installing build dependencies ... done
Getting requirements to build wheel ... done
Preparing wheel metadata ... done
Collecting gin-config
Using cached gin_config-0.4.0-py2.py3-none-any.whl (46 kB)
Collecting sacrebleu
Using cached sacrebleu-2.0.0-py3-none-any.whl (90 kB)
INFO: pip is looking at multiple versions of <Python from Requires-Python> to determine which version is compatible with other requirements. This could take a while.
INFO: pip is looking at multiple versions of object-detection to determine which version is compatible with other requirements. This could take a while.
ERROR: Cannot install object-detection because these package versions have conflicting dependencies.
The conflict is caused by:
tf-models-official 2.6.0 depends on tensorflow-text>=2.5.0
tf-models-official 2.5.1 depends on tensorflow-addons
To fix this you could try to:
1. loosen the range of package versions you've specified
2. remove package versions to allow pip attempt to solve the dependency conflict
ERROR: ResolutionImpossible: for help visit https://pip.pypa.io/en/latest/user_guide/#fixing-conflicting-dependencies
【问题讨论】:
【参考方案1】:我在我的 MacBook Air M1 2020 上从源安装 Tensorflow 2 (OD API) 的对象检测 API 时遇到了同样的问题。它开始查找/下载所有可用的依赖项,但错误很长,几个小时后,这个过程耗尽了所有可用 RAM 并强制笔记本电脑重新启动。我认为问题在于 arm64 的不兼容依赖项。我尝试为 Tensorflow 1 构建/安装 OD API,它成功了!我成功地训练了一个启用了 TensorFlow 2 和 GPU 的模型。
在安装 OD API 时使用tf1
文件夹而不是tf2
:
cd models/research
# Compile protos.
protoc object_detection/protos/*.proto --python_out=.
# Install TensorFlow Object Detection API.
cp object_detection/packages/tf1/setup.py .
python -m pip install --use-feature=2020-resolver .
或仅使用本指南安装 OD API:https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/tf1.md
顺便说一句,
这是在 Apple M1 芯片上使用最新 TensorFlow 版本和 Metal GPU 加速的有效 TensorFlow 设置:https://github.com/ctrahey/m1-tensorflow-config 物体检测最佳指南:https://neptune.ai/blog/how-to-train-your-own-object-detector-using-tensorflow-object-detection-api【讨论】:
【参考方案2】:我成功安装了。
python -m pip install --force --no-dependencies .
我为 m1 正确安装 tf2.0 的命令列表
conda create —-name=tf-m1
conda activate tf-m1
conda install python=3.8.6 -y
sh Desktop/PATH TO GITHUB DIR OF TENSORFLOW MAC(i used 0.1a3)/install_venv.sh /Users/stefan/miniforge3/envs/tf-m1
python -m pip install --upgrade pip
pip install ipykernel jupyter
python -m ipykernel install --user --name=tensorflow-m1.0
Tensorflow Test : ok (import tensorflow as tf; print(tf.__version__))
现在使用 CONDA 安装
conda install -c conda-forge matplotlib -y
conda install -c conda-forge scikit-learn -y
conda install -c conda-forge opencv -y
conda install -c conda-forge pandas -y
张量流测试:好的
cd Desktop/PATH/
mkdir -p Tensorflow/models
git clone https://github.com/tensorflow/models Tensorflow/models
cd Tensorflow/models/research && protoc object_detection/protos/*.proto --python_out=. && cp object_detection/packages/tf2/setup.py . && python -m pip install --force --no-dependencies .
对象检测 api 有一些我已经安装的依赖项。 (目前不支持 Pyarrow 和 apache-beam,但我认为这对于 api 的一般工作不是必需的)
pip install tf-slim
pip install pycocotools
pip install lxml
pip install lvis
pip install contextlib2
pip install --no-dependencies tf-models-official
pip install avro-python3
pip install pyyaml
Pip install gin-config
我不知道这是否是 Tensorflow 和 TensorFlow object-detection-api 的完美安装,但目前这对我有用。
【讨论】:
【参考方案3】:如果您升级到 OS Monterey 并从 miniforge 和下面列出的软件包安装 conda,事情应该会更好。
截至 2021 年 10 月 25 日,macOS 12 Monterey 为 generally available。
将您的机器升级到 Monterey。
如果您安装了 conda,请将其卸载。
然后按照 Apple here 的说明进行操作。
在下面清理:
从 Miniforge 下载并安装 Conda:
chmod +x ~/Downloads/Miniforge3-MacOSX-arm64.sh
sh ~/Downloads/Miniforge3-MacOSX-arm64.sh
source ~/miniforge3/bin/activate
在 conda 环境中,安装 TensorFlow 依赖项、基础 TensorFlow 和 TensorFlow metal:
conda install -c apple tensorflow-deps
pip install tensorflow-macos
pip install tensorflow-metal
你应该很高兴。
【讨论】:
以上是关于Tensorflow 对象检测 Api M1 Macbook 冲突错误的主要内容,如果未能解决你的问题,请参考以下文章