アノテーションツールLabelme編

前書き

最近Semantic Segmentationについて勉強してるので、
学習データの準備段階で行うアノテーションについてまとめてきました。

アノテーション

アノテーションとは特定の画像に対してメタデータを付与する作業です。
画像認識タスクでは画像内のオブジェクトの形状や座標を記録し、
情報としてjsonpngデータに出力できます。

アノテーションに関しては以下の記事で説明しています。
以下の記事ではLabelImgを活用しました。
しかしLabelImgでは矩形でのアノテーションしかできず、
ピクセルごとに画像分類を行うSemantic Segmentationには適応しづらいです。

Labelme

今回活用したのはLabelme。
ローカルの画像を読み込みメタデータJSON形式で出力してくれます。
アノテーションの種類としては複数あり、矩形や円、多角形などなんでもありです。
また1つの画像に対して、複数のアノテーションを行う場合にも向いています。

note.com

LabelmeにはWindowsUbuntuで導入方法が若干異なります。

Windowsの場合はConda環境を構築しますが、
labelmeをインストールはpip。
pipとcondaで導入したライブラリに重複があると、環境動作が怪しくなりますのでご注意ください。

Ubuntuの場合はpython3-pyqt5 を導入する作業を挟まなくてはなりません。
PyQt5はPythonで動作するGUIフレームワークです。
LabelmeではGUI操作が基本となりますので、PyQt5が必要になってくるのでしょうか。
ちなみにLabelMeではWIndows版の場合は大変導入部が簡単でした。

qiita.com

学習モデルへの繋げ方

U-Netではアノテーションによるメタデータpng形式で読み込むことがあります。
そこでJSONデータをpngに変換します。
教師データとしてpngを読み込むモデルを探しています。

deecode.net

上記の記事だと大変わかりやすいです。
JSONデータを格納したフォルダと出力先、ラベル情報を記載したtxtファイルの3点が必要になります。

python labelme_json_to_png.py <LabelmeのJSONファイルが入っているフォルダ> -o=<出力先フォルダ> -label_file=<ラベルファイルのパス>[