時間を見つけてはTensorFlow関係のあれこれをちまちま続けています。

先日は「なにわTECH道」で、TensorFlowを使ったイラスト顔検出について発表しました。

データセットの作成

これまで、機械学習に使う画像(データセット)の作成にはMacの「プレビュー」を使っていました。

1枚ずつ画像を読み込んでクロッピング(トリミング)していたのですが、1枚の画像に複数の顔があるときや、あとで領域を微調整(特に領域を拡大)したいときが面倒でした。

良さそうなツールがないか、少しばかり探してみたのですが、僕の思い描くような操作性のものがありませんでした。

なければ作れば良い。

そんなわけで、自分で画像の切り出しツールツール「Region Cropper」を開発しました。

1人で使うのももったいないので、GitHubで公開します。

Region Cropper

GitHub: https://github.com/keiji/region_cropper

set_region

GUIのフレームワークに、使い慣れたSwingではなくJava FXを使いました。

そのため、Java 8のUpdate40以降でしかきちんと動きません。

以下、Region CropperのREADME.mdから。


Region Cropper

Requirements

  • Java > 1.8.0_40

Download

Binary(Zip): https://github.com/keiji/region_cropper

使い方(Usage)

$ java -jar region_cropper_main.jar

処理するディレクトリの選択(Select Directory)

select_directory

領域の追加(Add)

ドラッグ&ドロップで領域を設定します。

領域の選択(Select)

現在選択中の領域は赤枠で示されます。

set_region

スペース(Space)キーを押すと、選択中の領域以外の場所がグレーアウトされます。

focus_region

キー 動作
Enter 次の領域へ移動。最後の領域であれば次のファイルを表示
Shift + Enter 前の領域へ移動。最初の領域であれば前のファイルを表示
Tab 次の領域へ移動
Shift + Tab 前の領域へ移動
End 次のファイルを表示
Home 前のファイルを表示

領域の編集(Edit)

キー 動作
方向(←↑→↓) 領域を移動
Alt または Option + 方向(←↑→↓) 領域を「拡大(Expand)」
Windows または Command + 方向(←↑→↓) 領域を「縮小(Shrink)」
削除(Delete) 領域を「削除(Delete)」

Shift を押すと、変化量が小さくなり微調整できます。

ラベルの設定(Label)

数字キーの「0〜9」を押すと、選択した領域にラベルを設定します。

追加した領域のラベルは、標準で 1 が設定されています。

set_label

また、ラベル 0 は負例として特別な意味を持ちます。

負例に設定した領域は、編集や削除ができません。

領域の切り出し(Crop)

領域の切り出しには「Quick crop」と「Crop to…」の2つの方法があります。

menu_crop

「Quick crop」を選択すると、設定している領域を、処理中の画像と同じディレクトリに切り出します。

出力先のディレクトリを設定したい場合は「Crop to…」を選択します。

[出力先のディレクトリ]/label-[ラベル]/[画像名]-[領域番号].png