【Python】ラベリングツール「labelimg」 エラー対策(応急処置)
はじめに
YOLOv8のDetection用には「labelimg」というpythonライブラリがシンプル、かつ使いやすくて超おすすめ!
ただし、2023/10/28現在、そのままだと操作した際に、エラーで落ちてしまう…残念!
とりあえず、応急処置する方法がわかったのでメモがてら記事にしておきます
動作環境
1. 仮想環境の作成(推奨)
元のソースコードを直接修正するため、仮想環境内で作業したほうがなにかと安全なので、作って入ります
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しても落ちなくなります
4. CreateRectangleのエラー修正
CreateRectangleを押して、画面上へマウスカーソルを移動すると、落ちます
今度は以下のファイルですね…
- C:\Users\Nagisa.venv\test_labelimg\Lib\site-packages\libs\canvas.py
DrowRectangle関連で修正するのは以下の行です
530行目, 531行目
526行目
修正後、canvas.pyを保存して、再度起動するとDrawRectangle機能でBoundingBoxを作成しても落ちなくなります
5. まとめ
labelimgがエラーで落ちるため、プログラムの修正を行った
応急処置的な修正なので、float型->int型の誤差が気になる人は、元の変数やライブラリまでさかのぼって真因追及してください
以下、おそらくの真因(予想)
- 依存ライブラリの仕様変わった(int型->float型)
- labelimg側の依存ライブラリ指定がされていない
以上!
この記事が気に入ったらサポートをしてみませんか?