Shinonome Tech Blog

株式会社Shinonomeの技術ブログ
1 min read

M1 mac に labelImg を(きれいに)インストールする方法

データコースの yuji です。現在、画像処理のプロジェクトに参加しています。この記事では、M1 mac に labelImg をインストールする手順を紹介します。M1 mac だと単純に pip でインストールしようと失敗してしまいますが、公式リポジトリに M1 mac をサポートしているリリース前バージョンがあるので、手元の環境をいじらずにインストールすることができます。

データコースの yuji です。現在、画像処理のプロジェクトに参加しています。この記事では、M1 mac に labelImg をインストールする手順を紹介します。M1 mac だと単純に pip でインストールしようと失敗してしまいますが、公式リポジトリに M1 mac をサポートしているリリース前バージョンがあるので、手元の環境をいじらずにインストールすることができます。

labelImg とは

画像データの調査やモデルを学習する際にアノテーションされたデータがたくさん欲しい場合があります。このとき、役に立つのがアノテーション専用のツールです。中でも、labelImg はインストールが簡単で、慣れてくると素早くアノテーションを作成することができます。

demo3

発生した問題

僕がもともと使っていた 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 ブランチで開発されていてすでに動く状態になっているようです。これを以下の手順でセットアップすると起動できます。

  1. リポジトリをクローンする。最新の pyside6 ブランチのソースコードだけあればいいので shallow clone しています。
  2. リポジトリに移動する。
  3. labelImg の依存ライブラリである pyside6, lxml をインストールする。
  4. make pyside6 でビルドする。
  5. 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'

(ショートカットが使えなくなっているので、作業効率が悪くなりそうです。まだ開発中かもしれないので今後のアップデートに期待です。)