Search code examples
pythontensorflowdependenciesobject-detection-apiapple-m1

Tensorflow Object Detection Api M1 Macbook Conflict Error


Machine: MacBook Air M1 2020

OS: macOs BigSur 11.4

Python version of venv: Python 3.8.6

Tensorflow version: ATF Apple Tensorflow 0.1a3

Pip version: 21.2.4

I have installed Tensorflow from github using this guide.


Now, my pip list is this.

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

I want install Object Detection Api from Tensorflow in that link.


I cloned the repo and them I follow the guide. (Python Package Installation)


When I execute this command

python -m pip install --use-feature=2020-resolver .

It starts to download, and start a print very long errors.

At the end of the operations, it gives me this error.

  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


Solution

  • I successfully install it with.

    python -m pip install --force --no-dependencies . 
    

    My list of commands for install correctly tf2.0 for m1

    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__))
    

    NOW USE CONDA INSTALL

    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
    

    Tensorflow Test : ok

    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 . 
    

    Object detection api have some dependencies i had installed. (Pyarrow and apache-beam are not supported at the moment, but I think this isn't essential for general working of 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
    

    I don't know if is it the perfect installation of Tensorflow and TensorFlow object-detection-api, but at the moment this worked for me.