見出し画像

YOLO用の学習データをつくろう!!

#YOLO #ラベリング #VoTT #機械学習 #画像認識

今日はYOLO用の学習データを作る方法についてご紹介します。

画像認識を行うための学習データを用意するには、ラベリングという作業が必要になります。
用意した画像のどこに、認識させようとしている物体が写っているか、を教示する作業のことです。
例えば、画像から人を認識するシステムを作る場合、人が写っている画像を大量に用意し、各画像のどこに人が写っているかを示す必要があります。

ここで気づいた方もいらっしゃると思いますが、
ラベリングは全学習データに対して、一枚ずつ作業を行う必要があるので、大変時間がかかります。
大変な作業ではありますが、画像認識のシステムを作るには避けては通れないことなので、ぜひやり方を身につけていただければと思います。

1.ラベリングプログラム、VoTT

無料で使えるラベリングプログラムとしては、VoTTとlabelImgがよく使われます。
今日はVoTTというプログラムを使ってラベリングを行う方法について紹介したいと思います。

VoTTは、1.XXと2.XXの2つのバージョンがあります。
残念ながら、2.XX以降のバージョンではYOLO用の学習データの作成がサポートされなくなりました。
今回は1.7.1バージョンを使ってみます。

上のサイトから1.7.1バージョンをダウンロードしてください。
Windowsユーザーは「vott-win.exe」を、Macユーザーは「vott-mac.dmg」をダウンロードしてください。
あとは、ダウンロードしたファイルを実行するだけです。

2.学習データの準備

次には、学習データを集め、1つのフォルダに入れておいてください。
画像ファイルの形式は、pngかjpgをおすすめします。
その他のファイル形式によっては、VoTTが対応できないこともあります。

私はポケモンを認識するプログラムを作ってみます。
ピカチュ、ヒトカゲ、ゼニガメを認識させたいので、それぞれ10枚ずつ用意しておきました。

学習データの準備

ちなみに、ファイル名は任意で問題ありません。

3.ラベリング

いよいよ、ラベリングを行います。
VoTTを実行すると、次のような画面が表れます。
今回は画像を使うので、左のアイコンを選択してください。

左のアイコンを選択

次には、学習データが保存されているフォルダを指定してください。
すると、次のような画面が出てきます。

ラベリングの設定画面

Labelsのところに、認識対象のラベル名を入力してください。
そのあと、コンマ(,)を入れれば、上のように入力されます。
私の場合、「pikachu, hitokage, zenigame」の3つのラベル名を入れました。
入力が終わりましたら、下のContinueボタンを押してください

ここからは一枚ずつ認識対象が写っている範囲をマウスのクリック&ドラッグで指定していきます。
そのあと、左下にあるラベル名から該当するものを選択してください。

認識対象の範囲を指定

ラベリングが終わりましたら、右向きの矢印ボタンを押せば次の画像に移ります
あとは、頑張って全データに対して同じ作業を繰り返すだけです。

4.ラベリング結果の出力

ラベリングが終わりましたら、作業の結果をファイル形式で出力します。
左上のメニューから「Object Detection」→「Export Tags」をクリックしてください。
すると、次のような画面が出てきます。

出力フォーマットの設定

Export Formatを「YOLO」に、Export Untilのところを「Last Frame」に変更してください。
最後に左下のExportボタンを押してください

すると、学習データを保存したフォルダがあるところに「XXX_output」という名前のフォルダが生成されます。
XXXは学習データが入っているフォルダ名です。
「XXX_output」→「data」→「obj」のフォルダに移動してみてください。
すると、次の図のように、学習データと同じ名前のtxtファイルが生成されているかと思います。

ラベリングの出力ファイル

お疲れ様でした。
これでラベリングは終了となります。
あとは、このデータを使ってYOLOを学習させるだけです。
それについては、後日またノートを書きたいと思います。

長文のノートを読んでいただき、ありがとうございました。

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