M1 Macbook AirでDeepLearning学習環境を準備する
2021年11月、M1 Macbook Airが発売されてちょうど1年の現時点では、pipでTensorflowを簡単インストール、という訳にはまだ至っていません。
AppleからGitHubでM1用のTensorflowを公開していますが、説明されているやり方でインストールしたTensorflow環境では、opencvのインストールができないようです。opencvが使えないとDeep Learningの大きなサブジェクトの一つである画像認識に支障がでます。
そこで、いくつかのサイトを参考に、M1 MacbookAirでTensorflowの環境構築を行いました。その手順を備忘録としてまとめます。
ステップ 1 : 既存のPython環境の削除
僕のM1 MacbookAirには、公式Python(https://www.python.orgからダウンロードしたPython3.9)をインストールしていたため、まずはこれを削除します。
こちらのサイトで詳しい手順が紹介されています。大まかな手順としては、
1. アプリケーションフォルダにあるPythonフォルダを削除
2. 「/Library/Frameworks/Python.framework」にあるPython本体を削除
3. 「/usr/local/bin」にある上記フォルダへのシンボリックリンクを削除
となります。
ステップ 2 : MiniForgeをインストール
M1 Tensorflow環境構築にあたって、参考にさせて頂いたのはこちらのサイトとこちらのサイトです。どちらも仮想環境ツールとしてMiniForge(軽量版conda)を推奨していますので、素直にこれに従います。
現時点ではAnacondaはM1 Macでは動かず、GitHubにあるApple公式のTenserFlowのインストール方法(venv)ではOpenCVのインストールができないことがMiniForgeを選択する理由です。
MiniForgeのインストールはこちらのサイトの方法が簡単です。
MiniForgeをインストールしたら、Tensorflow用の仮想環境を作っておきます。
ステップ 3 : Brewをインストール
TensorFlowのサンプルプログラムのインストールなどにwgetが必要になるので、Brewをインストールし、Brewでwgetをインストールします。
Brewのインストールは公式サイトの方法に従い、以下のコマンドでwgetをインストールします。
$ brew install wget
ステップ 4 : Tensorflowをダウンロード、解凍
GitHubのApple公式ページからM1 Mac用のTensorFlowをダウンロード、解凍します。公式ページには、ダウンロードからインストールまで一括して行うコマンドが紹介されています。が、この方法で構築されるvenvの仮想環境ではOpenCVがインストールできません。よってダウンロード、解凍、インストールを個別で行います。
ダウンロードと解答は以下のコマンドです。これを実行するとtensorflow_macosというフォルダが出来上がり、その中に各種ファイルが展開されます。
$ curl -fLO https://github.com/apple/tensorflow_macos/releases/download/v0.1alpha2/tensorflow_macos-${VERSION}.tar.gz
$ tar xvzf tensorflow_macos-${VERSION}.tar
ステップ6 : Tensorflowのインストール
参考にさせて頂いたサイトのうち、片方のやり方ではなぜかうまいく行かなかったので、こちらのサイトのやり方でインストールを行いました。
まずはTensorflow用に作っておいた仮想環境をactivateしておいてから、以下のコマンドを実行します。
$ conda install -c apple tensorflow-deps
$ python -m pip install tensorflow-macos
$ python -m pip install tensorflow-metal
ステップ7 : 動作確認
まずの対話シェルでtensorflowがインポートできるか確認してみます。
>>> import tensorflow
>>> tensorflow.__version__
これでエラーがでず、tensorflowのバージョンが表示されれば、まずはOk。
次にサンプルプログラムを動作させてみます。
こちらのサイトに紹介されている物体認識プログラムを動かしてみます。
$ git clone https://github.com/karaage0703/object_detection_tools
$ cd object_detection_tools/models
$ ./get_efficientdet_d0_coco17_tpu-32.sh
$ cd ..
$ python3 scripts/object_detection_tf2.py -l='./models/coco-labels-paper.txt' -m='./models/efficientdet_d0_coco17_tpu-32/saved_model/'
初回起動時はカメラへのアクセス許可を求められます。
正常に動けばTensorflow環境の構築完了!