【TensorFlow】VoTTをTensorFlow Object Detection APIで利用する方法を紹介します!
VoTTは画像と動画のオブジェクトをタグ付けするツールです。このページではVoTTをインストールして画像をタグ付けしてTensorFlow Object Detection APIで学習できるデータを準備するまでの流れを紹介します。
https://github.com/tensorflow/models/tree/master/research/object_detection
VoTTのインストール
VoTTリリースページからvott-2.2.0-win32.exeをダウンロードしてダブルクリックするとインストールが開始されます。
		プロジェクトの作成
今回は果物をタグ付けするのでfruitsというフォルダ名にしました。その下に画像を配置するsourceフォルダーとプロジェクトファイルやエクスポートデータを格納するtargetフォルダを作成します。
			
			新規プロジェクトを作成します。
			①表示名にfruitsを入力します。
			②ソース接続のAdd Connectionボタンをクリックします。
			
			③表示名にfruits sourceを入力します。
			④プロバイダーにローカルファイルシステムを選択します。
			⑤フォルダーパスのフォルダーを選択ボタンからsourceフォルダを選択します。
			⑥フォルダーパスを確認して下さい。
			⑦接続を保存ボタンをクリックします。
			
			⑧ソース接続をSelect Connectionからfruits sourceに変更します。
			
			⑨ターゲット接続もソース接続と同様に設定します。
			⑩プロジェクトを保存ボタンでプロジェクトを保存します。
			ターゲット接続したフォルダーにプロジェクトファイルが保存されます。
画像の対象をタグ付けする
タグ付けする前にソース接続したフォルダーに画像をコピーしておきます。
			
			①タグエディタータブをクリックします。
			②TAGSの⊕ボタンを押して入力フィールドにタグ名を入力してリターンキーを押します。
			
			③タグを必要なだけ追加します。
			
			④長方形を描くツールをクリックします。
			⑤対象をドラッグして長方形で囲います。
			⑥設定したいタグ名をクリックします。
			
			全ての対象をタグ付けします。
			
			全ての画像ファイルに対してタグ付けを行います。
		エクスポート
TensorFlowレコード(TFRecord)ファイルをエクスポートします。
①エクスポートタブをクリックします。
			②プロバイダーをTensorFlow レコードにします。
			③アセットの状態をタグ付きアセットのみにします。
			④エクスポート設定を保存ボタンを押して保存します。
			
			⑤タグエディタータブをクリックします。
			⑥プロジェクトをエクスポートボタンを押してエクスポートします。
			
			ターゲット接続したフォルダー以下にエクスポートされます。
			
			各画像のtfrecordファイルとtf_label_map.pbtxtが生成されます。
			各tfrecordファイルには画像とタグ付けしたデータが保存されています。
			tf_label_map.pbtxtはテキストファイルでタグデータが羅列されています。
item {
 id: 1
 name: 'apple'
}
item {
 id: 2
 name: 'orange'
}
item {
 id: 3
 name: 'grape'
}
item {
 id: 4
 name: 'strawberry'
}
...
		学習に必要なデータを準備する
TensorFlow Object Detection APIで学習できるようにデータを準備します。
			エクスポートされた個々のTFRecordファイルを結合して学習用と検証用のファイルを作成します。
| 学習に必要なファイル | |
|---|---|
| 学習用TFRecordファイル | train.tfrecord | 
| 検証用TFRecordファイル | val.tfrecord | 
| ラベルファイル | tf_label_map.pbtxt | 
tfrecordを結合して学習用と検証用ファイルを生成するPythonスクリプトをGitHubで公開していますのでご活用ください。
https://github.com/npedotnet/tf-utils/blob/main/tfod_traindata_generator.py
次のコマンドで学習用データを作成します。
python tfod_traindata_generator.py Z:\vott\fruits\target\fruits-TFRecords-export 0.8
			
			第1引数ははフォルダー名、第2引数は学習用データの比率です。
			第2引数が0.8の場合、8割は学習用データになり残りの2割は検証用データになります。
			学習用データはtrain.tfrecord、検証用データはval.tfrecordという名前で出力されます。
今回作成したデータをTensorFlow Object Detection APIで利用する記事を作りましたのでご覧下さい。
VoTTでタグ付けしてTensorFlow Object Detection APIで学習できるデータを作成しました。
				このデータを利用して物体検知できるプログラムの作成に挑戦してみてください。
ラベルファイルをJSON化する
ラベルマップファイル(tf_label_map.pbtxt)はPythonで使うのであれば問題ないのですが、他の言語から利用するには不便な形式なのでJSON化しておくと便利です。
オンラインコンバーターのうにぉ昆布ではラベルファイルをJSONにする機能がありますのでご利用ください。
			①tf_label_map.pbtxtを読み込ませます。
②メニューをTFラベルマップ、JSONにします。
③ダウンロードボタンからダウンロードします。
関連ページ
こちらのページも合わせてご覧下さい。