見出し画像

labelImg の使い方

物体検出のデータを作成するためのアノテーションツール「labelImg」の使い方をまとめました。

・macOS 11.4
・Python 3.7

1. labelImg

LabelImg」は、物体検出のデータセットを作成するためのアノテーションツールです。

画像1

以下のデータ形式をサポートしています。

・PascalVOC
・YOLO
・CreateML

2. インストール

macOSにインストールする手順は、次のとおりです。

(1) labelImgリポジトリをクローンしてルートに移動。

$ git clone https://github.com/tzutalin/labelImg.git
$ cd labelImg

(2) Pythonの仮想環境で依存パッケージのインストール。

$ brew install qt
$ brew install libxml2
$ pip install pyqt5 lxml
$ make qt5py3

(3) 起動。

$ python labelImg.py

画像2

3. 使い方

YOLOのデータ作成時の使い方は、次のとおりです。

(1) 「data/predefined_classes.txt」で学習に使用するクラスリストを定義。

dog
person
cat
tv
car
meatballs
marinara sauce
tomato soup
chicken noodle soup
french onion soup
chicken breast
ribs
pulled pork
hamburger
cavity

(2) ツールバー「保存する」の下にある「PascalVOC」をクリックして、「YOLO」に切り替える。

画像3

(3) ツールバー「ディレクトリを開く」で画像ファイルのフォルダを選択し、ツールバー「保存先を変更する」でアノテーションファイルのフォルダを選択。

画像5

(4) 右下の「ファイル一覧」でアノテーションを追加したい画像ファイルを選択。

(5) ツールバー「矩形を作成する」をクリックし、左マウスクリックで矩形を追加し、クラスを選択し、OKボタンを押す。
矩形四隅を左マウスクリックでサイズ変更、矩形の右マウスクリックで移動またはコピーもできます。

画像5

(6) ツールバー「保存する」をクリック。
アノテーションファイルが保存されます。毎回クリックが面倒な場合は、メニュー「表示 → 自動で保存」を選択します。

4. ホットキー

ホットキーを使うことで作業を効率化できます。

・Ctrl + u : フォルダからすべての画像をロード。
・Ctrl + r : デフォルトのアノテーションターゲットディレクトリを変更。
・Ctrl + s : 保存。
・Ctrl + d : 現在のラベルと四角形のボックスをコピー。
・Ctrl + Shift + d : 現在の画像を削除。
・Space : 現在の画像に確認済みのフラグを付加。
・w : 矩形を作成。
・d : 次の画像。
・a : 前の画像。
・del : 選択した矩形を削除。
・Ctrl++ : ズームイン。
・Ctrl-- : ズームアウト。
・↑→↓← : 選択した矩形を移動。

【おまけ】 複数のJSONをひとつにまとめる

CreateML形式で画像ごとのJSONを保存した時、CreateMLで学習させるには1つのJSONにまとめる必要があったため、書いたコード。

import json
import glob

# 複数のJSONをひとつにまとめる
result = []
filenames = glob.glob('annotation/*.json')
for filename in filenames:
    print(filename)
    with open(filename, 'r') as f:
        result.append(json.load(f)[0])

# ひとつにまとめたJSONの書き込み
with open('annotation.json', 'w') as f:
    json.dump(result, f, indent=2, ensure_ascii=False)


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