コンテンツへスキップ

LabelImg利用方法(アノテーション)

YOLO/Darknetの学習向け教師データ準備

「教師データの間違いはないように!」

画像検出や画像認識では、教師データが必要となります。対象の難しさにもよりますが、数百・数千枚という画像が必要となります。
本サイトで紹介しているめざましじゃんけん画像検出システムでは、YOLO/Darknetを利用しており、教師データのラベリングに、LabelImgを利用しました。

ラベリングのイメージですが、左の画像において、この対象が「janken_won」ですよ、この対象が「janken_goo」ですよと、実際の画像を用いて、検出させたい対象にレベルをつけて、機械学習時の教師データとして登録します。

一つの画像ファイルに、一つのラベリング情報を記録したテキストファイルを準備します。
以下が、ラベリング情報を記載したテキストファイルとなります。

オブジェクト(クラス)番号 オブジェクトの中心X座標 オブジェクトの中心Y座標 オブジェクトの幅 オブジェクトの高さ
3 0.501563 0.351042 0.365625 0.056250
6 0.571875 0.303125 0.140625 0.031250

クラス番号は、「janken_won」や「janken_goo」などの学習対象の分類番号となります。LabelImgを利用する際は、「classes.txt」というファイルを作成し、学習させたい対象の定義を行います。

LabelImgインストール

インストール方法は、色々な方法があります。
準備したPythonの実行環境にも依存すると思います。

  • Anaconda環境への導入
  • 通常のWindows環境へ導入

ここでは、通常のWindows環境への導入方法を紹介します。

PythonをWindows環境にインストールします。リンクより必要ファイルをダウンロードし、インストールを実行して下さい。
インストールしたPythonのpip3コマンドを用いて、「PyQt5」および「lxml」をインストールします。

C:\Users\user\AppData\Local\Programs\Python\Python37>pip3 install pyqt5
Collecting pyqt5
Downloading https://files.pythonhosted.org/packages/3b/d3/76670a331935f58f9a2ebd53c6e9b670bbf15c458fa6993500af5d323160/PyQt5-5.13.0-5.13.0-cp35.cp36.cp37.cp38-none-win_amd64.whl (49.7MB)
100% |████████████████████████████████| 49.7MB 128kB/s
Collecting PyQt5_sip<13,>=4.19.14 (from pyqt5)
Downloading https://files.pythonhosted.org/packages/cf/c8/1e9eda4ba09a84fc528d4c87001de2d7a8cbbe04c2a834af3eb81a0ecd88/PyQt5_sip-4.19.18-cp37-none-win_amd64.whl (51kB)
100% |████████████████████████████████| 61kB 6.8MB/s
Installing collected packages: PyQt5-sip, pyqt5
Successfully installed PyQt5-sip-4.19.18 pyqt5-5.13.0

C:\Users\user\AppData\Local\Programs\Python\Python37>pip3 install lxml
Collecting lxml
Downloading https://files.pythonhosted.org/packages/c6/22/a43126b87020c325fac159bb3b7f4e7ea99e7b2594ce5b8fa23cfa6ee90d/lxml-4.3.4-cp37-cp37m-win_amd64.whl (3.6MB)
100% |████████████████████████████████| 3.6MB 6.9MB/s
Installing collected packages: lxml
Successfully installed lxml-4.3.4

GitHubよりLabelImgをダウンロードし、https://github.com/tzutalin/labelImg

labelImg-master.zipを解凍したフォルダまたはGitHubをクローンしたフォルダへコマンドラインで移動し、以下のコマンドを実行します。

pyrcc5 -o line/resources.py resources.qrc

インストールは以上となります。

LabelImg起動

以下のコマンドラインより、LabelImgを起動します。
1行目も2行目も起動コマンドとなります。
IMAGE_PATHには、学習対象画像フォルダ、PRE-DEFINED CLASS FILEには、学習させたい対象の分類(クラス)定義ファイル「classes.txt」を指定します。

python labelImg.py
python labelImg.py [IMAGE_PATH] [PRE-DEFINED CLASS FILE]

めざましじゃんけん画像システムの「classes.txt」は、以下となっております。
上からゼロとなり、クラス0がjanken_active、クラス1がjanken_goo、・・・、クラス6がjanken_drawと全7クラスを画像検出対象としています。

janken_active
janken_goo
janken_choki
janken_pa
janken_won
janken_lose
janken_draw

LabelImgの利用方法は、画像つきで各種サイトで紹介されております。
特に共有しておきたいポイントは、以下です。

  • YOLO向けのテキストファイル出力を設定する
  • 絶対にラベル指定を間違えない
  • 「D」「W」「A」のショートカットキーを利用する
  • 基本的に「Auto Save Mode」「Single Class Mode」でラベリングを基本に作業実施

ラベリングが完了すると、用意した画像ファイルと対にラベリング情報の記載されたテキストファイルが作成されます。

参考にさせて頂いたサイト

機械学習に必要なアノテーションツールをwindowsにインストールする方法

labelImgとChainerCVを使ってアノテーション作業を楽にする

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA