機械学習
モデルジェネレーター予測(オンライン)
概要
このブロックは、モデルジェネレーターでトレーニングした結果と予測因子データ使って、予測します。
対応するモデルジェネレーターは、以下の 5 種類です。
- 数値分類タイプ
- 数値回帰タイプ
- 画像分類タイプ
- 画像物体検出タイプ
このオンライン予測は、変数から予測因子データを読み込んで予測します。予測した結果は、変数へ出力します。
info_outline 大量の予測データを使って予測したい場合は、「モデルジェネレーター予測(バッチ)」ブロックの使用をおすすめします。
- BigQuery のクエリー結果を使って予測する場合は、1000 件までの上限があります。
- 予測因子データの容量が多すぎるとオンライン予測ができないことがあります。
info_outline このブロックで使用するモデルジェネレーターのトレーニング結果(モデル)は、適用を済ませておいてください。
プロパティ
プロパティ名 | 説明 |
---|---|
ブロック名 |
編集パネルに配置した当該ブロックの表示名が変更できます。 ブロックリストパネル中のブロック名は変更されません。 |
GCP サービスアカウント | このブロックで使用する GCP サービスアカウントを選択します。 |
モデル | モデルジェネレーターでトレーニングした結果(モデル)を指定します。 |
予測因子データの変数 |
予測因子データを格納している変数を指定します。 予測因子データの形式は、「予測因子データの形式」を参照願います。 |
予測結果変数 |
予測結果を格納する変数を指定します。 予測結果の形式は、「予測結果の形式」を参照願います。 |
ブロックメモ | このブロックに関するメモが記載できます。このブロックの処理に影響しません。 |
予測に使うバージョン |
予測に、[本番用]と[検証用]のどちらのバージョンを使用するかを指定します。 |
物体検出タイプのスコアのしきい値 |
物体検出タイプの予測結果のスコア("detection_scores")として採用する値の基準値を指定します。ここで指定した数値より大きい値(基準値を含まない値)の結果のみ採用されます。 |
予測因子データの形式
予測因子データは、このブロックを実行する前に、変数に設定しておきます。
変数に設定する内容は、「数値分類タイプ・数値回帰タイプ・数値分類タイプ[特徴量出力]タイプ(アルファ版)」と「画像分類タイプ」で異なります。
ここでは、オブジェクト生成ブロックと JSON というデータを表現するための記法を使って、どのようなデータを変数に設定すれば良いかを説明します。
数値分類タイプ・数値回帰タイプ
予測に使うデータは、因子ごとに項目名と値をペアにして、変数に設定します。
- 「オブジェクト生成」ブロックの例:
上図のように、Value の種類に Object を選択し、その内容として(Object 横の + ボタンをクリックして)予測因子データを以下のルールで列挙します。
- キー用のデータ:
Key 欄 key
という固定名称を指定Value の種類欄 必ず String を指定 Value 欄 予測データを特定するキーとなるユニークな文字列値 - キー以外:
Key 欄 予測因子データの項目名を指定
(トレーニングデータ設定で指定した項目名)Value の種類欄 予測因子のデータの型を指定 Value 欄 予測因子データの値を指定
info_outline 数値型、月および曜日については、数値を文字列にしたデータも受け付けます。たとえば、数値型の場合、"99" や "1.5" などは、99 と 1.5 として扱います。月や曜日の場合、"0" や "6" などは、0 と 6 として扱います。
- キー用のデータ:
- JSON テキストの例:
{ "key": "1", "sepal_length": 5.9, "sepal_width": 3.0, "petal_length": 4.2, "petal.width": 1.5 }
- オブジェクト値(
{...}
)で指定します。 - キー用のメンバー:
名前 必ず "key"
という文字列を指定値 予測データを特定するキーとなるユニークな文字列値 - それ以外のメンバ:
名前 予測因子データの項目名を指定
(トレーニングデータ設定で指定した項目名)値 予測因子データの値を指定
- オブジェクト値(
複数の予測データを使って予測する場合は、以下のようにします。
- 「オブジェクト生成」ブロックの例:
上図のように、Value の種類に Array を選択し、その内容として(Array 横の + ボタンをクリックして)各予測データを列挙します。各予測データは、先に紹介したとおりです。
- JSON テキストの例:
[ { "key": "1", "sepal_length": 5.9, "sepal_width": 3.0, "petal_length": 4.2, "petal_width": 1.5 }, { "key": "2", "sepal_length": 6.9, "sepal_width": 3.1, "petal_length": 5.4, "petal_width": 2.1 }, { "key": "3", "sepal_length": 5.1, "sepal_width": 3.3, "petal_length": 1.7, "petal_width": 0.5 } ]
- 配列値(
[...]
)で指定します。 - 配列の各要素は、予測データをオブジェクト値で指定します。各オブジェクト値の形式は、先に紹介したとおりです。
- 配列値(
画像分類タイプ・画像物体検出タイプの場合
変数には、予測に使用する JPEG・PNG・GIF・BMP 形式の画像ファイルを指定します。
info_outline 画像ファイルの指定には、以下の留意点があります。
- 透過あり(RGBA)画像には、対応していません。RGBA 画像は、RGB(透過なし)画像に変換後、利用願います。
変換した RGB 画像の各画素の色がトレーニングや予測に及ぼす影響を統一させるため、統一した方法(同一ツール同一オプション)で変換処理することを推奨します。 - 画像ファイルサイズは、おおよそ 1.125 MB までです。この数値は目安であり、実際には若干前後します。
- 画像物体検出タイプで、複数画像の予測を一度に行う場合は、予測に使用する画像のサイズを合わせる必要があります。
この画像ファイルの指定方法には、いくつかあります。
-
画像ファイルへの GCS URL (
gs://バケット名/画像ファイル名
のような形式) を文字列で指定します。- 「オブジェクト生成」ブロックの例:
上図のように、Value の種類に String を選択します。
info_outline このとき、「オブジェクト生成」ブロックの「結果を格納する変数」が
_
の場合は、_.data
が予測因子データです。 - JSON テキストの例:
"gs://my-bucket/sample01.jpg"
文字列値(
"..."
)で、画像ファイルへの GCS URL を指定します。
- 「オブジェクト生成」ブロックの例:
-
複数の画像を使って予測する場合は、画像ファイルへの GCS URL を配列で指定します。
- 「オブジェクト生成」ブロックの例:
上図のように、Value の種類に Array を選択し、その内容として(Array 横の + ボタンをクリックして)画像ファイルへの GCS URL を文字列(String)で列挙します。
info_outline このとき、「オブジェクト生成」ブロックの「結果を格納する変数」が
_
の場合は、_.data
が予測因子データです。 - JSON テキストの例:
["gs://my-bucket/sample01.jpg", "gs://my-bucket/sample02.jpg"]
- 配列値(
[...]
)で指定します。 - 各要素は、文字列値で画像ファイルへの GCS URL を指定します。
- 配列値(
- 「オブジェクト生成」ブロックの例:
-
数値分類タイプや数値回帰タイプのように、画像ファイルごとにキーの指定ができます。複数の画像で予測する場合、キーにより、それぞれの予測結果と予測画像ファイルを対応づけやすくなります。
- 「オブジェクト生成」ブロックの例:
上図のように、Value の種類に Object を選択し、その内容として(Object 横の + ボタンをクリックして)予測データを指定します。
- キー用のデータ:
Key 欄 key
という固定名称を指定Value の種類欄 必ず String を指定 Value 欄 予測画像ファイルを特定するキーとなるユニークな文字列値 - 予測用のデータ:
Key 欄 image
という固定名称を指定Value の種類欄 必ず String を指定 Value 欄 予測画像ファイルへの GCS URL を文字列値で指定
- キー用のデータ:
- JSON テキストの例:
{"key": "sample01", "image": "gs://my-bucket/sample01.jpg"}
- オブジェクト値(
{...}
)で指定します。 - キー用のメンバー:
名前 必ず "key"
という文字列を指定値 予測画像ファイルを特定するキーとなるユニークな文字列値 - 予測用のメンバー(画像ファイルの情報を指定):
名前 必ず "image"
という文字列を指定値 予測画像ファイルへの GCS URL を文字列値で指定
- オブジェクト値(
複数の画像ファイルを指定する場合は、配列を使います。
- 「オブジェクト生成」ブロックの例:
上図のように、Value の種類に Array を選択し、その内容として(Array 横の + ボタンをクリックして) 各画像ファイルの情報を列挙します。各画像ファイルの情報は、先に紹介したとおりです。
info_outline このとき、「オブジェクト生成」ブロックの「結果を格納する変数」が
_
の場合は、_.data
が予測因子データです。 - JSON テキストの例:
[ { "key": "sample01", "image": "gs://my-bucket/sample01.jpg" }, { "key": "sample02", "image": "gs://my-bucket/sample02.jpg" } ]
- 配列値(
[...]
) で指定します。 - 配列の各要素は、画像ファイルの情報をオブジェクト値で指定します。各オブジェクト値の形式は、先に紹介したとおりです。
- 配列値(
- 「オブジェクト生成」ブロックの例:
- 画像ファイルの内容を Base64 open_in_new でエンコードしたデータ
- 画像ファイルの内容そのままのデータ(バイナリデータ)
キーを指定する場合の画像ファイルへの GCS URL 部分は、以下の形式で画像ファイルを渡すこともできます。
予測結果の形式
予測結果は、変数に出力します。ここでは、その変数の内容を「ログへ出力」ブロックを使って出力した例(JSON open_in_new 形式)を使って、予測結果の内容を解説します。
数値分類タイプの場合
以下は、数値分類タイプの例です。
{ "predictions": [ { "label_index": 1, "score": [ 8.715780131751671e-05, 0.9995228052139282, 0.00039013021159917116 ], "key": "1", "label": "Iris-versicolor" }, { "label_index": 2, "score": [ 9.230815578575857e-08, 0.007054927293211222, 0.9929450154304504 ], "key": "2", "label": "Iris-virginica" }, { "label_index": 0, "score": [ 0.9998869895935059, 0.00011299729521851987, 1.5803254260760013e-09 ], "key": "3", "label": "Iris-setosa" } ] }
- 全体がひとつの JSON オブジェクトです。
- "predictions": 予測結果の配列です。予測結果は、以下のメンバーで構成するオブジェクトです。
- "label_index": "score" 配列(分類ごとの予測の確からしさ)のどの値が、"label"(予測値)として採用されたかを示す値です。0 が先頭の配列要素、1 がその次の要素を示しています。
- "score": 分類ごとの予測の確からしさです。
- 順に分類値 0 の確からしさ、分類値 1 の確からしさ、分類値 2 の確からしさ・・・を表しています。
- 例えば、[8.715780131751671e-05, 0.9995228052139282, 0.00039013021159917116] の場合は、分類値 0 が 0.00871578 %、分類値 1 が 99.952280521 %、分類値 2 が 0.039013021 % の確からしさです。
- もっとも確からしい分類値が予測値となります。
- "key": 予測に使用した予測因子データの "key" の値です。
- "label": 予測値です。"score" の最も高い分類値が予測値となります。
数値回帰タイプの場合
以下は、数値回帰タイプの例です。
{ "predictions": [ { "output": 10261.9072265625, "key": "20170101" }, { "output": 12506.2861328125, "key": "20170102" }, { "output": 10304.1962890625, "key": "20170103" }, { "output": 10350.099609375, "key": "20170104" } ] }
- 全体がひとつの JSON オブジェクトです。
- "predictions": 予測結果の配列です。予測結果は、以下のメンバーで構成するオブジェクトです。
- "output": 予測値です。
- "key": 予測に使用した予測因子データの "key" の値です。
画像分類タイプの場合
以下は、画像分類タイプの例です。
{ "predictions": [ { "labels": [ "cat", "dog" ], "score": [ 1.0, 3.764146683238323e-08 ], "key": "gs://my-bucket/blocks_ml_image_example/prediction/sample_01.jpg", "label": "cat" }, { "labels": [ "cat", "dog" ], "score": [ 7.805689392625936e-07, 0.9999991655349731 ], "key": "gs://my-bucket/blocks_ml_image_example/prediction/sample_02.jpg", "label": "dog" } ] }
- 全体がひとつの JSON オブジェクトです。
- "predictions": 予測結果の配列です。予測結果は、以下のメンバーで構成するオブジェクトです。
名前 説明 "labels" 分類の種類のリストです。この例の場合、"cat"(猫)と "dog"(犬)の 2 種類です。
"labels" のリスト順序は、次の "score" のリスト順序に対応しています。
"score" 分類ごとの予測の確からしさです。
この例の場合、"score" の 1 番目の値は、"cat" に対応し、"score" の 2 番目の値は、"dog" に対応します。
"key" 予測にキーを指定した場合は、そのキーの値が出力されます。予測にキーを指定していない場合は、画像ファイルへの GCS URL が出力されます。 "label" 予測値です。"score" の最も高い分類値が予測値となります。
画像物体検出タイプの場合
以下は、画像物体検出タイプの例です。
{ "predictions": [ { "detection_box_xmin": [ 0.465076744556427, 0.006737172603607178 ], "detection_classes": [ "cat", "dog" ], "detection_box_ymax": [ 0.7059540748596191, 0.932410717010498 ], "detection_scores": [ 0.991367757320404, 0.7089109420776367 ], "key": "gs://blocks-doc-samples/object-detection/prediction/bernese-mountain-dog-111878_1280.jpg", "num_detections": 2, "detection_box_xmax": [ 0.8645327687263489, 0.39152249693870544 ], "detection_box_ymin": [ 0.0, 0.2869449853897095 ] } ] }
- 全体がひとつの JSON オブジェクトです。
- "predictions": 予測結果の配列です。予測結果は、以下のメンバーで構成するオブジェクトです。
名前 | 説明 |
---|---|
"key" |
予測にキーを指定した場合は、そのキーの値が出力されます。予測にキーを指定していない場合は、画像ファイルへの GCS URL が出力されます。 |
"num_detections" |
検出した物体の数です。 |
"detection_classes" |
検出した物体のリストです。この例の場合、"cat" と "dog" の 2 種類です。 ここでリストアップされている順序は、以下の各メンバーのリスト順序と対応しています。
|
"detection_scores" |
検出した物体ごとの予測の確からしさです。 リストアップされている数値は、"detection_classes" のリスト順と対応しています。この例の場合、1 番目の数値が "cat"、2 番目の数値が "dog" に対応しています。 |
"detection_box_xmin" |
検出した物体を囲む矩形の左上 X 座標です。 数値は、画像の幅を 1 としたときの比率です。ピクセル値に変換するには、この数値に幅を掛けてください。 リストアップされている数値は、"detection_classes" のリスト順と対応しています。この例の場合、1 番目の数値が "cat"、2 番目の数値が "dog" に対応しています。 |
"detection_box_ymin" |
検出した物体を囲む矩形の左上 Y 座標です。 数値は、画像の高さを 1 としたときの比率です。ピクセル値に変換するには、この数値に高さを掛けてください。 リストアップされている数値は、"detection_classes" のリスト順と対応しています。この例の場合、1 番目の数値が "cat"、2 番目の数値が "dog" に対応しています。 |
"detection_box_xmax" |
検出した物体を囲む矩形の右下 X 座標です。 数値は、画像の幅を 1 としたときの比率です。ピクセル値に変換するには、この数値に幅を掛けてください。 リストアップされている数値は、"detection_classes" のリスト順と対応しています。この例の場合、1 番目の数値が "cat"、2 番目の数値が "dog" に対応しています。 |
"detection_box_ymax" |
検出した物体を囲む矩形の右下 Y 座標です。 数値は、画像の高さを 1 としたときの比率です。ピクセル値に変換するには、この数値に高さを掛けてください。 リストアップされている数値は、"detection_classes" のリスト順と対応しています。この例の場合、1 番目の数値が "cat"、2 番目の数値が "dog" に対応しています。 |