ブロックリファレンス

Block Reference

機械学習

ML ボード予測(オンライン)

2017/4/12 より前のトレーニングは、2017/6/1 以降は使えなくなります。予測で使用するトレーニングは、2017/4/12 以降にトレーニングしたものをお使いください。

このブロックはベータ版です。正式版リリース後、本ブロックは利用できなくなります。ご注意ください。
※正式版リリース後は、正式版のブロックをご利用ください。

また、ベータ版での提供となるため、一部の機能が正常に動作しない可能性があります。機能改善や不具合などのフィードバックは、フォーラムやお問い合わせで情報提供をお願いします。フィードバックの内容は MAGELLAN BLOCKS の品質向上のために利用いたします。

概要

このブロックは、ML ボードでトレーニングした結果と予測因子データ使って、予測を行います。

対応する ML ボードは、以下の 4 種類です。

  • 数値分類タイプ
  • 数値回帰タイプ
  • 画像分類タイプ
  • 画像物体検出タイプ

このオンライン予測は、変数から予測因子データを読み込んで予測します。予測した結果は、変数へ出力します。

オンライン予測概略図

大量の予測データを使って予測したい場合は、「ML ボード予測(バッチ)」ブロックの使用をおすすめします。

  • BigQuery のクエリー結果を使って予測する場合は、1000 件までの上限があります。
  • 予測因子データの容量が多すぎるとオンライン予測ができないことがあります。

このブロックで使用する ML ボードのトレーニングは、適用を済ませておいてください。

予測因子データの形式

予測因子データは、このブロックを実行する前に、変数に設定しておきます。

変数に設定する内容は、「数値分類タイプ・数値回帰タイプ」と「画像分類タイプ」で異なります。

ここでは、オブジェクト生成ブロックと JSON というデータを表現するための記法を使って、どのようなデータを変数に設定すれば良いかを説明します。

数値分類タイプ・数値回帰タイプの場合

予測に使うデータとキーをセットにして、変数に設定します。

  • オブジェクト生成」ブロックの例:

    予測因子データが単一のケース

    上図のように、Value の種類に Object を選択し、その内容として(Object 横の + ボタンをクリックして)キーと予測データを以下のルールで列挙します。

    • キー用のデータを必ず指定します。このデータのキーは、Key に key を指定し、Value は予測データを特定するキーとなる値を指定します。Value の種類は、必ず String にします。
    • キー以外の予測に使うデータは、Key にトレーニングデータ設定で指定した項目名を指定し、Value に予測に使うデータを指定します。Value の種類は、予測に使うデータの型に合わせます。

    数値型、月および曜日については、数値を文字列にしたデータも受け付けます。たとえば、数値型の場合、"99" や "1.5" などは、99 と 1.5 として扱います。月や曜日の場合、"0" や "6" などは、0 と 6 として扱います。

  • info_outline 時系列型の場合は、配列で指定します。

    時系列型は、下図のようなデータの並び順に意味がある場合(この例の場合は過去 7 日間の気象データの並び)に使用しますが、ここではこの例を使って配列で指定する方法を解説します。

    過去 7 日間の気象データの例

    この時系列型のデータを ML ボードのトレーニングデータとして使用するときは、下図のようにそのままカンマ(,)区切りでデータを並べます。

    時系列型を ML ボードのトレーニングデータで使用する例

    これと同じ要領で、予測では配列データとして、時系列型のデータを列挙します。

    下図は、[オブジェクト生成]ブロックを使って配列(Array)で時系列型のデータを列挙している様子です。

    時系列型の例

    (予測因子データの変数に、_.data を指定し、時系列型のデータ項目名が weather と想定した例。)

    下図は、JSON テキストの例です。

    "weather": [21, 35, 0, 20, 34, 0, . . . , 18, 32, 20]
    

    (時系列型のデータ項目名が weather と想定した例。)

  • 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 形式の画像ファイルを指定します。この画像の指定には、いくつかの方法があります。

画像物体検出タイプで、複数画像の予測を一度に行うな場合は、予測に使用する画像のサイズを合わせる必要があります。

  • 画像ファイルへの GCS URL (gs://バケット名/画像ファイル名 のような形式) を文字列で指定します。

    • オブジェクト生成」ブロックの例:

      画像分類タイプ予測因子データの文字列のみのケース

      上図のように、Value の種類に String を選択します。

      このとき、「オブジェクト生成」ブロックの「結果を格納する変数」が _ の場合は、_.data が予測因子データです。

    • JSON テキストの例:

      "gs://my-bucket/sample01.jpg"

      文字列値("...")で、画像ファイルへの GCS URL を指定します。

  • 複数の画像を使って予測する場合は、画像ファイルへの GCS URL を配列で指定します。

    • オブジェクト生成」ブロックの例:

      画像分類タイプ予測因子データが文字列のみの配列のケース

      上図のように、Value の種類に Array を選択し、その内容として(Array 横の + ボタンをクリックして)画像ファイルへの GCS URL を文字列(String)で列挙します。

      このとき、「オブジェクト生成」ブロックの「結果を格納する変数」が _ の場合は、_.data が予測因子データです。

    • JSON テキストの例:

      ["gs://my-bucket/sample01.jpg", "gs://my-bucket/sample02.jpg"]

      • 配列値([...])で指定します。
      • 各要素は、文字列値で画像ファイルへの GCS URL を指定します。
  • 数値分類タイプや数値回帰タイプのように、画像ファイルごとにキーの指定ができます。複数の画像で予測する場合、キーにより、それぞれの予測結果と予測画像ファイルを対応づけやすくなります。

    • オブジェクト生成」ブロックの例:

      画像分類タイプ予測因子データがオブジェクトのケース

      上図のように、Value の種類に Object を選択し、その内容として(Object 横の + ボタンをクリックして)キーと GCS URL を文字列(String)で列挙します。列挙するキーと画像ファイルへの GCS URL の Key には、それぞれkeyimage を指定します。

    • JSON テキストの例:

      {"key": "sample01", "image": "gs://my-bucket/sample01.jpg"}

      • オブジェクト値({...})で指定します。
      • キー用のメンバーを必ず指定します。このメンバーの名前は、必ず "key" とし、値は画像ファイルを特定するキーとなる文字列値を指定します。
      • もうひとつのメンバーで、画像ファイルの情報を指定します。このメンバーの名前は、必ず "image" とし、画像ファイルへの GCS URL を文字列値で指定します。

    複数の画像ファイルを指定する場合は、配列を使います。

    • オブジェクト生成」ブロックの例:

      画像分類タイプ予測因子データが複数オブジェクトのケース

      上図のように、Value の種類に Array を選択し、その内容として(Array 横の + ボタンをクリックして) 各画像ファイルの情報を列挙します。各画像ファイルの情報は、先に紹介したとおりです。

      このとき、「オブジェクト生成」ブロックの「結果を格納する変数」が _ の場合は、_.data が予測因子データです。

    • JSON テキストの例:
      [
        {
          "key": "sample01",
          "image": "gs://my-bucket/sample01.jpg"
        },
        {
          "key": "sample02",
          "image": "gs://my-bucket/sample02.jpg"
        }
      ]
      
      • 配列値([...]) で指定します。
      • 配列の各要素は、画像ファイルの情報をオブジェクト値で指定します。各オブジェクト値の形式は、先に紹介したとおりです。
  • キーを指定する場合の画像ファイルへの GCS URL 部分は、以下の形式で画像ファイルを渡すこともできます。

    • 画像ファイルの内容を Base64 でエンコードしたデータ
    • 画像ファイルの内容そのままのデータ(バイナリデータ)

予測結果の形式

予測結果は、変数に出力します。ここでは、その変数の内容を「ログへ出力」ブロックを使って出力した例(JSON 形式)を使って、予測結果の内容を解説します。

数値分類タイプの場合

以下は、数値分類タイプの例です。

{
  "predictions": [
    {
      "score": [
        8.715780131751671e-05,
        0.9995228052139282,
        0.00039013021159917116
      ],
      "key": "1",
      "label": 1
    },
    {
      "score": [
        9.230815578575857e-08,
        0.007054927293211222,
        0.9929450154304504
      ],
      "key": "2",
      "label": 2
    },
    {
      "score": [
        0.9998869895935059,
        0.00011299729521851987,
        1.5803254260760013e-09
      ],
      "key": "3",
      "label": 0
    }
  ]
}
  • 全体がひとつの JSON オブジェクトです。
  • "predictions": 予測結果の配列です。予測結果は、以下のメンバーで構成するオブジェクトです。
    • "score": 分類ごとの予測の確からしさです。
      • 順に分類値 0 の確からしさ、分類値 1 の確からしさ、分類値 2 の確からしさ・・・を表しています。
      • 例えば、[8.715780131751671e-05, 0.9995228052139282, 0.00039013021159917116] の場合は、分類値 00.00871578 %、分類値 199.952280521 %、分類値 20.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_box_xmin"
  • "detection_box_ymin"
  • "detection_box_xmax"
  • "detection_box_ymax"
"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" に対応しています。

プロパティ

プロパティ名 説明
ブロック名 ブロックの名前を指定します。ブロックに表示されます。
GCP サービスアカウント このブロックで使用する GCP サービスアカウントを選択します。
ML ボード名 ML ボード名を指定します。
予測因子データの変数 予測因子データを格納している変数を指定します。
予測結果変数 予測結果データを格納する変数を指定します。
ブロックメモ ブロックに対するコメントを指定します。