はじめに
物体検出サービスを利用すると、指定されたJPEG形式の画像内にある複数のオブジェクトの検出ができます。
物体検出では、おおまかに以下の機能を提供します。
-
指定された画像内にある複数のオブジェクトを検出し、各オブジェクトごとの種類(事前に定義したラベル)と矩形領域の位置と大きさを示します。これらの情報は、BigQueryテーブルに格納します。
-
ポジティブサンプル画像とネガティブサンプル画像を使ったトレーニングにより、より精度の高いオブジェクトの検出が可能です。
- ポジティブサンプル画像:アノテーション付きの画像
- ネガティブサンプル画像:アノテーションなしの画像で、ポジティブサンプル画像でアノテーションされたオブジェクトが写っていない画像
-
高解像度の画像から大小さまざまなオブジェクトを適切に検出するために、トレーニングの前後に以下の処理を行う機能を持ちます。
- 前処理1:固定サイズ(300ピクセル)で画像を分割(小さなオブジェクトの検出が可能)
- 前処理2:分割前の画像を縮小(縮小しても潰れない大きなオブジェクトの検出が可能)
- 後処理:前処理1・2の画像群をトレーニングした結果を統合して1枚の画像の検出結果としてまとめる(大小さまざまなオブジェクトの検出が可能)
info_outline一般的に画像検出のトレーニングや予測においては、低解像度の画像しか扱えないため、高解像度の画像はトレーニング時に自動的に縮小して利用されています。このため、縮小すると潰れてしまうようなオブジェクトは、検出できなくなります。本機能により、この問題を解決しています。
-
トレーニングで生成したモデルを使って、アノテーションなしの画像からアノテーション情報の自動生成も可能です。
- 扱える画像は、JPEG形式のみです。
事前準備
物体検出の利用にあたっては、以下に挙げる準備が必要です。
- トレーニングの場合
- アノテーションに用いるラベルセット
画像アノテーションツールを使って作成します。 - アノテーション情報
画像アノテーションツールを使って作成したものか、物体検出のアノテーションで自動生成したものが必要です。
- アノテーションに用いるラベルセット
- アノテーションの場合
- アノテーションに利用するトレーニング済みのモデル
- アノテーション対象の画像群(JPEG画像)を保存したフォルダー(GCS上)
- アノテーション情報を保存する空フォルダー(GCS上)
- 予測の場合
- 予測に利用するトレーニング済みのモデル
- 予測に用いる画像(GCS上)
おおまかな流れ
新規利用時のおおまかな流れ
- ラベルセットの作成
画像アノテーションツールを使って、物体検出させたい物体種別(「自動車」や「歩行者」などのラベル)のラベルセットを作成します。
- アノテーション情報を生成
作成したラベルセットを使って、手動でトレーニング用画像群の各物体にタグ付け(アノテーション)します。画像ごとにアノテーションが完了すると、アノテーション情報が自動生成されます。
info_outline トレーニング用の画像群は、Google Cloud Storage(GCS)上にフォルダーを作成し、そこに配置します。画像群を追加して再トレーニングする場合は、追加画像群は別フォルダーに配置しなければなりません。このため、トレーニング用画像群を配置するフォルダー名は、このことに配慮した名前を付けることをおすすめします(例:training_images_v1やtraining_images_20220303など)。
- 物体検出モデルを構築(トレーニング)
物体検出サービスのトレーニング機能を使って、アノテーション時の画像群と生成されたアノテーション情報でトレーニングして、物体検出モデルを構築します。
- 予測/推論
- 運用時:
フローデザイナーの物体検出(バッチ)ブロックを使って、物体検出したい画像群から各物体を検出します。結果はBigQueryのテーブルに格納します。
- 検証時:
物体検出サービスの予測機能を使って、物体検出したい画像群から各物体を検出します。結果はBigQueryのテーブルに格納します。
フローデザイナーの物体検出(バッチ)ブロックを使用しても構いません。
- 運用時:
info_outline ここでは、分かりやすいようにラベルセットに日本語のラベルを用いていますが、実際には半角英数字と半角アンダースコア(_)のみが利用可能です。
再トレーニング時のおおまかな流れ
追加のトレーニング画像群で再トレーニングして、物体検出モデルを更新したい場合は、以下のような流れになります。
- アノテーション情報の自動生成
物体検出サービスのアノテーション機能を使って、トレーニング済みの物体検出モデルと追加のトレーニング画像群から、追加のアノテーション情報を生成します。
info_outline 追加画像群は、トレーニング済みの画像群とは別のフォルダーに配置してください。
- アノテーション情報を確認・修正
画像テーションツールを使って、追加生成されたアノテーション情報の内容を手動で確認して、必要に応じて修正します。
- 物体検出モデルを再構築(再トレーニング)
物体検出サービスのトレーニング機能を使って、既存のアノテーション情報に追加のアノテーション情報を加えて、再トレーニングします。
予測・推論のステップは、「新規利用時のおおまかな流れ」と同様です。
はじめ方
物体検出は、BLOCKSにログイン後、以下の操作で使い始めます。
- menuをクリック
- [物体検出]をクリック
- [追加]ボタンをクリック
- [物体検出タイプ[自動アノテーション可]]ボタンをクリック
- 名前を入力
- GCPサービスアカウントを選択
エラーメッセージが表示される場合は、「GCPサービスアカウント選択時のエラー対応」の解説を参照願います。 - 本サービスで使用するGCS上のフォルダーを指定
- 画像アノテーションツールで作成済みのラベルセットを選択
- [作成]ボタンをクリック
- [戻る]ボタンをクリック
- 使用する物体検出の名前をクリック
この画面から、物体検出の各機能にアクセスできます。
GCPサービスアカウント選択時のエラー対応
GCPサービスアカウント指定時に、以下のようにエラー表示となる場合があります。
この場合は、以下の手順で操作してください。
- リンクをクリック
別タブに上記画面が表示されます。
- [続行]ボタンをクリック
この画面が表示されたら画面(タブ)を閉じて、BLOCKSの画面に戻ります。
機能紹介
物体検出には、以下の機能があります。ここでは、これらについて解説します。
トレーニング
トレーニングタブでは、トレーニングの実行やトレーニング一覧の確認ができます。トレーニングの実行に成功するとモデルが作成されます。
トレーニング実行の手順は、以下のとおりです。
- [トレーニング開始]ボタンをクリック
下図のようなトレーニング画面が表示されます。
- トレーニングの名前を入力
- 作成済みのアノテーションを選択
複数選択が可能です。画像アノテーションツールで作成したアノテーションはもちろんのこと、本サービスで自動生成したアノテーションも加えてのトレーニングが可能です。
- 画像の分割幅を変更(デフォルト値:300ピクセル)もしくは追加
追加操作することで、複数の分割幅が指定可能です。これにより複数の分割サイズを使ったトレーニングが行えます。追加操作は、[追加]ボタンをクリックします。
info_outline変更・追加可能な分割幅の最低値は、300ピクセルです。
- 画像を分割するときのオーバーラップ幅(デフォルト値:20%)を変更
画像の分割は分割領域が重なり合うように行います。その重なり合った部分をオーバーラップ幅と呼びます。
このオーバーラップ幅を「画面の分割幅」に対する比率で指定します。
- [詳細設定]をクリック(オプション)
必要に応じて以下の各項目を変更もしくは指定します。
- 分割後の画像に含まれるアノテーション矩形領域が元の何割以上のときだけ残すかのしきい値を変更
- 分割後の画像に含まれるアノテーション矩形領域がなくなった場合、アノテーション矩形領域を含む画像の枚数に対して何枚まで残すかの比率を変更
- ネガティブサンプル画像を含むGCS上のフォルダーを指定
- [開始]ボタンをクリック
- [閉じる]ボタンをクリック
トレーニング一覧では、トレーニングの詳細情報の確認や実行中のトレーニングのキャンセルができます。
- more_vertをクリック
- [詳細]をクリック:トレーニングの詳細情報の確認
[キャンセル]をクリック:実行中のトレーニングをキャンセル
トレーニングの詳細情報は、トレーニングの名前をクリックすることでも確認できます。
モデル
モデルタブでは、トレーニングで生成されたモデルの一覧の確認ができます。
info_outlineモデルのダウンロードを希望される場合は、「お問い合わせ」のページより問い合わせをお願いします。なお、モデルのダウンロードに関しては、別途料金が発生します。
モデルの一覧では、モデルの削除ができます。
- more_vertをクリック
- [削除]をクリック
モデルのダウンロードが可能となっている場合は、以下の手順でモデルのダウンロードが可能です。
- more_vertをクリック
- [モデルダウンロード]をクリック
しばらくすると、ダウンロード先を指定する画面が表示されます。ダウンロード先を指定してPC上にダウンロードしてください(ファイルはZIP形式で圧縮されています)。
アノテーション
アノテーションタブでは、トレーニングで生成されたモデルを使って、指定した画像のアノテーション情報の自動生成と生成したアノテーションの一覧が確認できます。
アノテーションの生成手順は、以下のとおりです。
- [アノテーション情報生成]をクリック
下図のようなアノテーション情報生成の画面が表示されます。
- このアノテーション自動生成の名前を入力
- モデルを選択
- アノテーション情報を自動生成したい画像を含むフォルダーを指定
- アノテーション情報を出力する空のフォルダーを指定
- 生成するアノテーション情報の名前を入力
- 画像の分割幅を変更(デフォルト値:300ピクセル)もしくは追加
追加操作することで、複数の分割幅が指定可能です。これにより複数の分割サイズを使ったトレーニングが行えます。追加操作は、[追加]ボタンをクリックします。
info_outline変更・追加可能な分割幅の最低値は、300ピクセルです。
- 画像を分割するときのオーバーラップ幅(デフォルト値:20%)を変更
画像の分割は分割領域が重なり合うように分割します。その重なり合った部分をオーバーラップ幅と呼びます。
このオーバーラップ幅を「画面の分割幅」に対する比率で指定します。
- [詳細設定]をクリック(オプション)
- 結果を残すオブジェクト検出スコアのしきい値を変更
- IoUのしきい値(同一のオブジェクトに対して重複して検出された矩形を1つにする後処理の際のしきい値)を変更
- [開始]ボタンをクリック
- [閉じる]ボタンをクリック
アノテーション一覧では、アノテーションの詳細情報の確認や実行中のアノテーション生成のキャンセルができます。
- more_vertをクリック
- [詳細]をクリック:アノテーションの詳細情報の確認
[キャンセル]をクリック:実行中のアノテーション生成をキャンセル
アノテーションの詳細情報は、アノテーションの名前をクリックすることでも確認できます。
予測
予測タブでは、トレーニングで生成されたモデルを使った指定画像内のオブジェクトの検出(予測)と予測結果の一覧が確認できます。予測結果は、BigQueryテーブルに出力します。
予測の手順は、以下のとおりです。
- [予測開始]ボタンをクリック
下図のような予測開始の画面が表示されます。
- 名前を入力
- モデルを選択
- オブジェクトを検出したい画像を含むGCS上のフォルダーを指定
- オブジェクト検出結果を格納するBigQueryデータセットを指定
- オブジェクト検出結果を格納するBigQueryテーブルを指定
- 画像の分割幅を変更(デフォルト値:300ピクセル)もしくは追加
追加操作することで、複数の分割幅が指定可能です。これにより複数の分割サイズを使ったトレーニングが行えます。追加操作は、[追加]ボタンをクリックします。
info_outline変更・追加可能な分割幅の最低値は、300ピクセルです。
- 画像を分割するときのオーバーラップ幅(デフォルト値:20%)を変更
画像の分割は分割領域が重なり合うように分割します。その重なり合った部分をオーバーラップ幅と呼びます。
このオーバーラップ幅を「画面の分割幅」に対する比率で指定します。
- 必要に応じて[詳細設定]をクリック
- 結果を残すオブジェクト検出スコアのしきい値を変更
- IoUのしきい値(同一のオブジェクトに対して重複して検出された矩形を1つにする後処理の際のしきい値)を変更
- [開始]ボタンをクリック
- [閉じる]ボタンをクリック
予測結果の一覧では、予測の詳細情報の確認や実行中の予測のキャンセルができます。
- more_vertをクリック
- [詳細]をクリック:予測の詳細情報の確認
[キャンセル]をクリック:実行中の予測をキャンセル
予測の詳細情報は、予測の名前をクリックすることでも確認できます。
BigQueryテール部の予測結果のスキーマ情報は、以下のとおりです。
カラム名 | 型 | 説明 |
---|---|---|
image | STRING | 画像のGCS URL |
width | INTEGER | 画像の幅(ピクセル) |
height | INTEGER | 画像の高さ(ピクセル) |
objects | RECORD(REPEATED) | オブジェクト情報 |
objects.label_id | INTEGER | ラベルのID |
objects.label_name | STRING | ラベルの名称 |
objects.xmin | FLOAT | オブジェクト矩形領域の左上のX座標(画像の左上原点) |
objects.ymin | FLOAT | オブジェクト矩形領域の左上のY座標(画像の左上原点) |
objects.xmax | FLOAT | オブジェクト矩形領域の右下のX座標(画像の左上原点) |
objects.ymax | FLOAT | オブジェクト矩形領域の右下のY座標(画像の左上原点) |
objects.score | FLOAT | 検出したオブジェクトのスコア(確からしさ) |
設定
設定タブでは、本物体検出を作成した時の設定情報の確認と削除ができます。
削除は、以下の手順でできます。ただし、トレーニング実行中・アノテーション情報生成中・予測実行中の場合、削除操作は行えません。
info_outlineモデルのダウンロードを可能にしている場合も削除操作は行えません。
- [削除する]をクリック
- [削除]ボタンをクリック