mac OSにおけるDeepLabCutのインストール方法

# はじめに
DeepLabCutは動物の姿勢推論に使われるオープンソースのPythonパッケージの1つで、簡単にインストールすることができる魅力的なソフトウェアです[[7]](http://www.mackenziemathislab.org/deeplabcut)。
開発元のMathis Laboratoryはインストールや使用方法などを詳細にいくつか紹介しており、[ガイド[5]](http://www.mackenziemathislab.org/deeplabcut)に沿って操作するだけで、ほとんどの設定が完了します。
しかしながら、手持ちのMacBookでガイド通りに設定を行い、DeepLabCutの起動を試みると、いくつかエラーが発生してしまい、起動ができませんでした。当記事では、ガイドの内容からMacに関わる内容のみを抽出するとともに、エラーを解消するために行った操作を紹介します。
当記事の構成は次の通りです。2節では公式のガイドに沿ったDeepLabCutのインストール方法について説明します。3節では、発生した2つのエラーの詳細と参考記事を元にした解決策について述べます。
手持ちのMacBookの実行機環境は次の通りです。
プロセッサ：3.1GHz デュアルコア Intel Core i5
グラフィックス：Intel Iris Plus Graphics 650 1536MB
メモリ：8GB 
OS:macOS Montery バージョン 12.3.1
# DeepLabCutのインストール
Mathis Laboratryが作成した[How To Install DeepLabCut[5]](https://deeplabcut.github.io/DeepLabCut/docs/installation.html)の"CONDA: The installation process is as easy as this figure!"節を参考にインストール手法について説明します。
## Pythonのインストール
ガイドにおけるStep1に該当する内容であるAnacondaを利用したインストールを説明します。AnacondaはPythonのパッケージ管理によく用いられるシステムで、DeepLabCut以外のソフトウェアにも広く用いられます。

![スクリーンショット 2023-01-16 5.43.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3103723/176e8aac-4a5b-5cbc-abdd-5b50ab655443.png)
[Hintのボックスに記載されているリンク[2]](https://www.anaconda.com/distribution/)にアクセスし、Download🍎ボタンをクリックすると、Anacondaがダウンロードされます。
![スクリーンショット 2023-01-16 6.24.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3103723/3496e531-148f-9e86-c94c-6f072b32d380.png)
Anacondaのダウンロードが終わったら、ターミナルに次のコードを入力し、実行する。
```
wget https://repo.anaconda.com/miniconda/Miniconda3-py39_4.12.0-MacOSX-arm64.sh -O ~/miniconda.sh
bash ~/miniconda.sh -b -p $HOME/miniconda
source ~/miniconda/bin/activate
conda init zsh
```
以上の操作でPythonのインストールが完了です。
## Anacondaの環境構築
ガイドにおけるStep2に該当する内容であるAnacondaの環境構築について説明します。
![スクリーンショット 2023-01-16 6.43.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3103723/5c374eb1-884c-1ed9-f815-8a391a09603c.png)
[ガイドにおいて示されたURL](https://github.com/DeepLabCut/DeepLabCut)にアクセスし、Codeボタンをクリックし、Download ZIPボタンをクリックします[2]。
![スクリーンショット 2023-01-16 6.47.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3103723/bbbcd911-9448-8c69-144b-fd9c660b1266.png)
ガイドではDeepLabCutとなっているフォルダはDeepLabCut-mainという名前でダウンロードされます。
ダウンロードしたDeepLabCut-mainはどこにおいても構わないが、ガイドに従って、デスクトップに置くことにします。デスクトップへの移動が終わったら、次のコードを入力します。
```
cd C:\Users\YourUserName\Desktop\DeepLabCut-main\conda-environments
```
ただし、YourUserNameにはお手持ちのPCのユーザー名をご入力ください。実行が終わったら、次のコードを入力
```
conda env create -f DEEPLABCUT.yaml
```
お手持ちのPCがM1チップ搭載の場合は
```
conda env create -f DEEPLABCUT_M1.yaml
```
と入力。
以上でAnacondaの環境構築は終了です。本来であれば、これで、DeepLabCutの起動ができるはずですが、ガイド通りの起動方法では正常に起動できませんでした。
# 発生したエラー
発生したエラーは2種類であり、いずれも起動に関するエラーでした。解決にあたり、参考にさせていただいた記事はすべて一番下の参考記事欄に記載しています。MathisLabご本人や先ほどのリポジトリの作成者であるjeylau氏の記事を参考にさせていただきました。
## 起動コマンドに関するエラー
DeepLabCut起動の前に、DeepLabCut環境を有効にするため、
```
conda activate DEEPLABCUT 
```
を入力する。ただし、M1チップ搭載の場合は、
```
conda activate DEEPLABCUT_M1
```
を入力する。[6]によると、DeepLabCut環境が有効になったら、DeepLabCut起動用コマンドである。
```
python -m deeplabcut
```
を入力すると、DeepLabCutが起動すると記載されていますが、下記のようなエラーが発生し、起動ができなかった。
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.
（中略）
zsh: abort      python -m deeplabcut
調査すると、同様のエラーが発生したというレポートに対して、MathisLabが解答している[Webページ](https://github.com/DeepLabCut/DeepLabCut/issues/1742)があった[8]。
解答によると、DeepLabCutがサポートされているのはpythonwコマンドとのことであり、正しい起動コマンドは
```
pythonw -m deeplabcut
```
のようでした。手持ちのPCでpythonwのバージョンが古かったため、[同様のエラーが出ているサイト](https://github.com/DeepLabCut/DeepLabCut/issues/1307)を参考に次のコマンドを実行した[3]。
```
conda install python.app
```
上記コマンドを入力後、pythonwコマンドが使用可能となる。
## OpenCVに関するエラー
pythonwコマンドを使用すると、次のようなエラーが発生した。
ModuleNotFoundError: No module named 'cv2'
OpenCV関連のパッケージが存在しないというエラーであったので、パッケージのリストを確認する。
```
conda list
```
を入力し、インストール済みパッケージを確認すると、下図のようになっていた。
![スクリーンショット 2023-01-16 10.33.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3103723/18fa6949-a10d-6d81-9690-a09ab6cafb27.png)
一見問題なくインストールされているように思えるが、これら2つに加えて、opencv-contrib-pythonというパッケージも必要であるという[レポート](https://github.com/DeepLabCut/DeepLabCut/issues/636)があった[4]。そこで、
```
conda install opencv-contrib-python
```
を実行し、
opencv-contrib-pythonをインストール後、pythonwコマンドで起動すると無事DeepLabCutが起動できた。
![スクリーンショット 2023-01-16 11.12.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3103723/07f0ea95-5701-81e1-90ee-c5f147508ccc.png)
# まとめ
当記事では、DeepLabCutインストール方法を公式のガイドに沿って説明した。最終的に実行するべき操作は、
STEP1.ガイド通りにPythonをインストールし、Anacondaの環境を構築する。
STEP2.pythonwを使用するため、
```
conda install python.app
```
を実行。
STEP3.OpenCVに関するパッケージが十分にインストールされていなかった場合、
```
conda install opencv-contrib-python
```
などを実行し、OpenCVをDeepLabCutで使用できるようにする。

STEP4.実行する際のコマンドは、
```
conda activate DEEPLABCUT 
```
と入力してから、
```
pythonw -m deeplabcut
```
を入力。
となった。

# 参考記事

[1] [Anaconda, Anaconda, Anaconda Distribution, 2023, (参照 2023-1-16)](https://www.anaconda.com/distribution/)
[2] [jeylau, Github, DeepLabCut/DeepLabCut/ Official implementation of DeepLabCut/ Markerless pose estimation of, 2023, (参照 2023-1-16)](https://github.com/DeepLabCut/DeepLabCut)
[3] [jeylau, Github, Pythonw using an old version (2.7) · Issue #1307 · DeepLabCut-DeepLabCut · GitHub, 2023, (参照 2023-1-16)](https://github.com/DeepLabCut/DeepLabCut/issues/1307)
[4] [patoch01220, Github, Pythonw using an old version (2.7) · Issue #1307 · DeepLabCut/DeepLabCut, 2023, (参照 2023-1-16)](https://github.com/DeepLabCut/DeepLabCut/issues/636)
[5] [Mathis Lab, DeepLabCut, How To Install DeepLabCut, 2023, (参照 2023-1-16)](http://www.mackenziemathislab.org/deeplabcut)
[6] [Mathis Lab, DeepLabCut, Interactive Project Manager GUI](https://deeplabcut.github.io/DeepLabCut/docs/PROJECT_GUI.html)
[7] [Mathis Lab, DeepLabCut, Mathis Laboratory of Adaptive Motor Control, 2023, (参照 2023-1-16)](http://www.mackenziemathislab.org/deeplabcut)
[8] [MMathisLab, Github, DeepLabCut MacOS Pyenv Build Crashes on Label_Frames · Issue #1742 · DeepLabCut/DeepLabCut, 2023, (参照 2023-1-16)](https://github.com/DeepLabCut/DeepLabCut/issues/1742)