見出し画像

【Python】ラベリングツール「labelimg」 エラー対策(応急処置)

はじめに

  • YOLOv8のDetection用には「labelimg」というpythonライブラリがシンプル、かつ使いやすくて超おすすめ!

  • ただし、2023/10/28現在、そのままだと操作した際に、エラーで落ちてしまう…残念!

  • とりあえず、応急処置する方法がわかったのでメモがてら記事にしておきます

動作環境

PCスペック(かなり古い子です!)
python 3.11.5   labeliImg 1.8.6

1. 仮想環境の作成(推奨)

元のソースコードを直接修正するため、仮想環境内で作業したほうがなにかと安全なので、作って入ります

本記事では 環境名:test_labelimg

2. labelimg導入

pipコマンドで簡単に導入できます(楽でいいよね!)

python -m pip install labelimg
出力

3. デバッグの時間だぁ!

とりあえず起動してみましょう
環境内でlabelimgコマンドを打つと、起動できます

labelimg
起動はするのですよ、起動は…

3.1 Zoom機能のエラー修正

ctrl+マウスホイールで操作(Zoom)すると、labelimgが落ちます…

幸いエラーが出力されるので、修正内容はわかりそうなのが幸いです

エラー内容から以下のファイルでエラーが起きていることが判明
- C:\Users\Nagisa\.venv\test_labelimg\Lib\site-packages\labelImg\labelimg.py

Zoom機能関連で修正するのは、以下の2か所です

  • 971行目

  • 1025行目, 1026行目

setValue関数がfloat型の引数を受け付けてエラー(意訳)なので、
引数をint型にキャストする修正をします
(小数点の誤差が気になる方は、別の修正してください)

変更前:ハイライトは修正する行
変更後:ハイライト部が修正後

修正後、labelimg.pyを上書き保存して、再度起動するとZoomしても落ちなくなります

Zoom機能はよく使うので、直しておきましょう

4. CreateRectangleのエラー修正

CreateRectangleを押して、画面上へマウスカーソルを移動すると、落ちます

またfloat型が拒否られて(unexpected)ますね…

今度は以下のファイルですね…
- C:\Users\Nagisa.venv\test_labelimg\Lib\site-packages\libs\canvas.py

DrowRectangle関連で修正するのは以下の行です

  • 530行目, 531行目

  • 526行目

修正前:引数がいっぱい…
修正後:引数をintにキャストします

修正後、canvas.pyを保存して、再度起動するとDrawRectangle機能でBoundingBoxを作成しても落ちなくなります

やったね!

5. まとめ

  • labelimgがエラーで落ちるため、プログラムの修正を行った

  • 応急処置的な修正なので、float型->int型の誤差が気になる人は、元の変数やライブラリまでさかのぼって真因追及してください

  • 以下、おそらくの真因(予想)
    - 依存ライブラリの仕様変わった(int型->float型)
    - labelimg側の依存ライブラリ指定がされていない

以上!




この記事が気に入ったらサポートをしてみませんか?