M1 mac に labelImg を(きれいに)インストールする方法
データコースの yuji です。現在、画像処理のプロジェクトに参加しています。この記事では、M1 mac に labelImg をインストールする手順を紹介します。M1 mac だと単純に pip でインストールしようと失敗してしまいますが、公式リポジトリに M1 mac をサポートしているリリース前バージョンがあるので、手元の環境をいじらずにインストールすることができます。
labelImg とは
画像データの調査やモデルを学習する際にアノテーションされたデータがたくさん欲しい場合があります。このとき、役に立つのがアノテーション専用のツールです。中でも、labelImg はインストールが簡単で、慣れてくると素早くアノテーションを作成することができます。
発生した問題
僕がもともと使っていた Macbook Air intel 2019 では、
pip install labelImg
を実行するだけでインストールすることができていました。GUI ソフトなのに手軽にインストールできるのが labelImg が愛される理由の一つだと思います。
しかし、最近 M1 mac を買って環境を再現しようとしていた際に、エラーが発生してインストールできませんでした。
Collecting labelImg
Using cached labelImg-1.8.6.tar.gz (247 kB)
Preparing metadata (setup.py) ... done
Collecting pyqt5
Using cached PyQt5-5.15.6.tar.gz (3.2 MB)
Installing build dependencies ... done
Getting requirements to build wheel ... done
Preparing metadata (pyproject.toml) ... error
error: subprocess-exited-with-error
この原因は labelImg が依存している pyqt5 が M1 に対応していないためです。
対応策
labelImg では、GUI の実装する際に使用する外部ライブラリを pyqt5 ではなく pyside6 に移行する動きがあります。これが pyside6 ブランチで開発されていてすでに動く状態になっているようです。これを以下の手順でセットアップすると起動できます。
- リポジトリをクローンする。最新の pyside6 ブランチのソースコードだけあればいいので shallow clone しています。
- リポジトリに移動する。
- labelImg の依存ライブラリである
pyside6, lxml
をインストールする。 make pyside6
でビルドする。labelImg.py
を実行する。
git clone --depth=1 --branch pyside6 --single-branch https://github.com/tzutalin/labelImg.git
cd labelImg
pip install pyside6 lxml
make pyside6
python labelImg.py
一次ソース:https://github.com/tzutalin/labelImg/tree/pyside6#macos
.zshrc
にエイリアスを定義すると、labelImg
をコマンドのように呼び出すことができます。この場合でもコマンドライン引数は使えます。
alias labelImg='python path/to/labelImg/labelImg.py'
(ショートカットが使えなくなっているので、作業効率が悪くなりそうです。まだ開発中かもしれないので今後のアップデートに期待です。)