LoginSignup
14
13

More than 1 year has passed since last update.

M1 MacでTensorFlow(Keras),OpenCVを動かすようにする(Miniforge)

Last updated at Posted at 2021-07-08

はじめに

M1を搭載したMacbook Airを導入して2ヶ月くらいが経ちました.
日頃はローカルで開発は,ほぼしないのですが,
Macのカメラを使って,OpenCVやTensorFlowを動かさないといけなくなったので,
環境構築してみました.

しかし,M1(Arm)だけあって,環境構築にかなり苦労したので,
備忘録として残しておきます.
(2021年7月8日現在)

どうしても動かしたいもの

・OpenCV
・Keras(TensorFlowに付随するKeras)

基本的には,OpenCVでカスケードファイルを用いて,Face Detectionと
VGG16を用いたPredictionを動けば合格です.

一応,M1 Macでいろいろ環境構築を試したので,メモしておきます.
(動かなかったことを詳しくメモしても...と思ったので大雑把です.)

試したこと

  • Docker + pyenv

    • Armモードでビルド(なんか動かない)
    • AMDモードでビルド(なんか動かない+すごく重い)
      pyenv --helpのコマンドですら,重い)
  • Anaconda(Homebrewで入れてRossetaで起動)
    動かない:Illegal hardware instruction pythonやgccがないやら,いろんなエラーに巻き込まれました.

⭐️ Miniforge(参考記事:https://kazumaxneo.hatenablog.com/entry/2021/05/07/073418)
Anacondaより小容量かつArm(M1)にネイティブ対応しているので,
高速かつ安定的に動かせるのでは...と思い,brewでインストールしました.
結果的には,うまくいきました.
(以下の方法は,Appleの公式に書いてあります.)

①まず,brewでminiforgeを入れます.

(参考:シェルスクリプトを使ってインストールする方法)

brew install miniforge

②仮想環境を作り,activateします.

・ターミナル等の再起動をして,プロンプトに(base)と出てきていることを確認してください.M1 Macに対応した
・TensorFlowはPython 3.8だと,うまく動きました.

conda create -n python38 python=3.8
conda activate python38

③TensorFlowとOpenCVをインストール

! ②で仮想環境の中に入ってることを確認してください.!

conda install -c apple tensorflow-deps
python -m pip install tensorflow-macos
python -m pip install tensorflow-metal

conda install opencv

さいごに

以上で,環境構築は完了です.

ベンチマークが出てましたが,
確かにIntelのMacよりも早いです.

余談ですが,VGG16などでPredictionをしている時に,GPUのリソースを確認したところ,フルで使ってくれていました!
リースモニター->ウィンドウ(メニューバー)->GPUの履歴

参考になれば幸いです.

追記(2021/10/5)

python -m pip install tensorflow-macosのインストールができない事象があるみたいなので,一度成功しているenvironment.ymlを公開します.

https://gist.github.com/yasu-kun/30b57b85e8116c8bfff545f706a60b9a
このymlファイルを用いて,仮想環境を作成することができます.

conda env create --file=environment.yml --name m1_mac_tensorflow
14
13
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
13