機械学習
記事内に商品プロモーションを含む場合があります

物体検出のためのアノテーションツール | labelImgの使い方を説明

LabelImgの使い方
tadanori

それぞれの物体に枠をつける物体検出のアノテーションは結構面倒です。この記事では、簡単に使えるアノテーションツールlabelimgについて解説します。YOLO/PascalVOC/CreateMLフォーマットの結果を読み込み・出力することができます。

現在、labelimgの開発は積極的に行われておらず、LabelStudioに統合されています。より高機能なアノテーションツールLabel Studioについては以下の記事を参考にしてください。

あわせて読みたい
LabelStudioの使い方を説明|おすすめの多機能アノテーションツール
LabelStudioの使い方を説明|おすすめの多機能アノテーションツール

また、YOLOv8と組み合わせてアノテーションを効率化する方法も紹介しています。こちらについては以下の記事を参考にしてください。

あわせて読みたい
物体検出のアノテーションで楽する方法(YOLOv8+labelImg)
物体検出のアノテーションで楽する方法(YOLOv8+labelImg)

物体検出のアノテーションとは?

ディープラーニングにおいて、アノテーション(annotation)とは、テキストや音声・画像といったデータに、ラベル・タグやメタデータを付ける作業のことを指します。

画像のクラス分類のアノテーションは、画像に対して「犬」や「猫」といったラベルを付ける作業となります。

物体検出の場合は、画像のクラス分類と似ていますが、「ここにが写っている」といったラベル付けが必要になります。この例の場合、猫の部分を囲む枠情報が必要となります。

物体検出でのアノテーションとは、「ターゲットとする物体を囲む枠と名前(ラベル)をつける」作業になります。

annotation example

やってみるとわかりますが、クラス分類と比べて物体検出のアノテーション(枠で囲む)作業はツールなしではかなり面倒です。

このため、物体検出のアノテーションには、専用のアノテーションツールを利用します。

アノテーションツールを使えば、マウス操作で直感的にターゲットのオブジェクトを囲うことができるので、枠とラベルをつける作業がかなり楽になります。

操作が簡単なアノテーションツールとしてlabelImgがあります。この記事では、labelImgの使い方について解説します。

アノテーションしたデータはYOLOなどで利用することが可能です。YOLOv8を使って学習する方法については、以下の記事を参考にしてください。

YOLO v8で物体検出|独自(カスタム)データの学習と推論を実践
YOLO v8で物体検出|独自(カスタム)データの学習と推論を実践

※labelImgで枠をつけた場合は、フォーマットの変換をせずに直接学習させることが可能です。

labelImgとは

labelImgは、物体検出タスクのためのオープンソースのアノテーションツールです。主に機械学習の訓練データを作成するために利用されますが、推論結果のビューアーとしても利用可能です。

labelImgを利用すると、マウス操作で画像内のオブジェクトに対して枠をつけ、ラベル付けをすることが可能です。

既に開発は終了している(積極的な開発は行われていない)のですが、シンプルで使いやすく、ちょっとしたアノテーションがやりやすいので、私自身は、いまだに、少量のアノテーションで活用しています。

なお、labelImgが対応するフォーマットは、PASCAL VOC形式、YOLO形式、CreateML形式です。

LabelImgの開発は止まっているようです(LabelStudioのコミュニティに吸収)

labelimgのgithugのリポジトリ
引用元:https://github.com/HumanSignal/labelImg

上で書いたように、開発は終了しているようです

labelimgを取り込んだ先のツールで「LabelStudio」は、非常に多機能なツールです。Label Studioについては以下の記事を参考にしてください。

LabelStudioの使い方を説明|おすすめの多機能アノテーションツール
LabelStudioの使い方を説明|おすすめの多機能アノテーションツール

labelImgをインストール

Python環境があるのであれば、以下のpipコマンドでインストールできます。

pip3 install labelimg
m1 Mac以降の場合

m1 macでインストールでエラーが発生する場合は、PySide6を使ったバージョンのインストールを試してみてください

ネットにいくつか情報がありましたが、このやり方でうまくいきました。

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

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

labelImgの利用手順

ここでは、labelImgの利用手順を説明します。ここに書いた手順以外でも使うことができますが、個人的にはこのやり方が一番ミスが少なかったです。

labelImgを起動する前に、アノテーションを行う画像を入れた画像フォルダを作り、アノテーション結果を格納するためのフォルダも作成しておいてください。

画像フォルダ(images)と、アノテーション結果フォルダ(labels)の配置例です。以下のような感じでフォルダを作成しておくと良いです。

labelImgを起動

コマンドラインで、以下のコマンドを実行すると起動します。

labelImg

起動すると、下記のような画面が表示されます(画面はMacです)。

フォルダを設定する

保存先を変更するで、ラベルを格納するフォルダ(例ではlabelsフォルダ)を指定します

labelimg-save

ディレクトリを開くで、画像が入ったフォルダ(例ではImagesフォルダ)を指定します

labelimg-open

アノテーションデータのフォーマットを指定します。最初は、Pascal VOCになっていると思います。これを、Yoloに変更します

これで、準備はOKです。ここまでの操作後、フォルダ(Images)に入った画像が表示されていると思います。

labelimg-sample

アノテーションをしていく

画像の上で右クリックすると「矩形を作成する」と言うメニューが現れますので、これを選択します。

labelimg-02

猫の囲むように枠をつけるとウィンドウが表示されるので、ここにラベル(cat)を入れます。

labelimg-03

同じ要領で人にも、ラベル(human)をつけます。

これで人と猫それぞれに枠が作成できました。

右のウィンドウcathumanのラベルがついていることを確認してください。サンプルでは画像が1枚しかありませんが、フォルダ内に画像が複数枚ある場合は、左側の矢印アイコンをクリックすることで画像を変更できます。

また、画面右下の枠に「ファイル一覧」が表示されます。こちらに表示されたファイル名をクリックすることでも画像を変更できます。

labelimg-04

変更後は、左にある保存アイコンするをクリックして、アノテーションデータを保存します。

ちなみに、メニューの自動で保存するを設定しておけば、画像を切り替えるタイミングなどで自動で保存されるようになります。便利なので、ONにしておいた方が良いです。

labelimg-menu

保存されたファイルを確認する

Yoloフォーマットで保存した場合、保存先に指定したフォルダにclasses.txtと、画像ファイルと同名のtxtファイルが作成されます。classes.txtはクラス名が列挙したファイルで、上のアノテーション例では以下のようなものが作成されます。

cat
human

上からクラス0のラベル、クラス1のラベル・・・と並びます。

画像ファイルと同名のテキストファイルがアノテーション結果で、以下のようなフォーマットです。

0 0.296810 0.801875 0.540915 0.356250
1 0.742718 0.497500 0.514563 0.945000

今回は、Yoloフォーマットなので、(class number, center x, center y, width, height)の順に並びます。

座標や幅・高さは画像の幅、高さを1.0とした場合の値となります。例えば、100×100ピクセルのサイズの画像で、(20,20)で、幅と高さが10ピクセルの場合は、center x, center yは0.2,0.2で幅と高さは0.1, 0.1になります。

画像とアノテーションファイルを揃えたら、物体検出タスクの学習を行うことができます。

YOLOv8を使った学習については以下の記事を参考にしてください

あわせて読みたい
YOLO v8で物体検出|独自(カスタム)データの学習と推論を実践
YOLO v8で物体検出|独自(カスタム)データの学習と推論を実践

ショットカットキー(HotKeys)

labelImgのショットカットキーは以下になります。ショートカットを活用することで、アノテーションの効率が上がりますのでうまく活用しましょう。

linux/windosの場合macの場合説明
Ctrl + u⌘ + uディレクトリを開く
Ctrl + r⌘ + r保存先を変更
Ctrl + s⌘ + s保存
Ctrl + d⌘ + d選択した枠をコピー
Ctrl + Shift + d⌘ + shift + u現在の画像を削除
スペーススペース現在の画像に確認済みフラグをつける
ww枠を作成
dd次の画像
aa`前の画像
deldel選択した枠を削除
Ctrl + +⌘ + +拡大
Ctrl + -⌘ + -縮小
カーソルキーカーソルキー選択された枠を矢印キーで移動

まとめ

labelImgは手軽にインストール、操作ができるのでちょっとしたアノテーションに向いています。まとまった量のアノテーションを行う場合は、分担してアノテーションを行う場合などは、分担作業に向いたアノテーションツールを使う方が良いかと思いますが、個人でちょっと使うには便利です。

更新が止まりそうなので、Label Studioへ乗り換えてもよいかもしれません。こちらも、pip install label-studioでインストールできます。

おすすめ書籍

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

記事URLをコピーしました