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

操作系统:ma​​cOs 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 冲突错误的主要内容,如果未能解决你的问题,请参考以下文章

TensorFlow 对象检测 API 中未检测到任何内容

具有奇怪检测结果的 TensorFlow 对象检测 api

Tensorflow 对象检测 API 中的过拟合

Tensorflow 对象检测 API - 验证丢失行为

Tensorflow 2 对象检测 API:Numpy 版本错误

TensorFlow对象检测API教程中获取边界框坐标