基本操作ガイド

Basic Guide

BLOCKS の機械学習を使った画像分類の方法

BLOCKS の機械学習を使った画像分類の方法

このドキュメントでは、写真に写っている動物が犬か猫を判定する例を使って、BLOCKS 機械学習の画像分類の使い方を解説します。

犬猫判定の概略図

BLOCKS で機械学習を使った画像分類を行うには、「モデルジェネレーター」と「フローデザイナー」を使用します。モデルジェネレーターで学習(トレーニング)を行い、フローデザイナーで予測(犬か猫の判定)を行います。対応する画像の形式は、JPEG のみです。

画像分類タイプの概略図

このドキュメントでは、BLOCKS の基本的な操作方法については、解説していません。BLOCKS の基本的な操作方法については、「基本操作ガイド」の「操作方法」の章を参照してください。

準備

もし、BLOCKS アカウントがない場合は、「トライアルご利用の流れ」を参考にして、無料トライアルを申し込んでください。

BLOCKS の機械学習をすぐ試せるように、必要なデータ一式を準備しました。以下のそれぞれの説明に沿って自身の環境に準備してください。

データ 説明
サンプルデータ

機械学習の画像分類で使用する画像ファイル一式です。学習(トレーニング)と予測で使用する 2 種類の画像ファイルを含んでいます。

  1. サンプルデータのダウンロード

    左のリンクをクリックして、サンプルデータをダウンロードします。サンプルデータは、ZIP 形式で複数のフォルダーやファイルをひとつにまとめています。

  2. ダウンロードしたファイルの解凍

    ダウンロードした ZIP 形式のファイルを解凍します。下図のフォルダー構成でフォルダーやファイルが解凍されます。

    サンプルデータのフォルダー構成図

    トレーニング用の画像ファイルは、分類する種類ごとでフォルダーに分けて配置します。フォルダー名が分類する種類の名称として扱われます。対応する画像ファイルの形式は、JPEG のみです。

    今回の例では、犬と猫に分類するため、それぞれ dog フォルダーと cat フォルダーに分けて、犬と猫の画像ファイルを配置しました(dogcat が分類する種類の名称)。

  3. Google Cloud Storage (GCS) へアップロード

    BLOCKS 機械学習の画像分類では、GCS から画像ファイルを読み取ります。「GCS へファイルをアップロードする方法」を参考にして、blocks_ml_image_example フォルダーを GCS へアップロードしてください。

サンプルフロー

サンプルフローは、「モデルジェネレーター予測(オンライン)」ブロックを使用した最もシンプルな予測フローを準備しました。

  1. サンプルフローのダウンロード

    左のリンクをクリックして、サンプルフローをダウンロードします。

  2. フローデザイナーへインポート

    ダウンロードしたサンプルフローをフローデザイナーへインポートします。

    サンプルフローのインポート方法については、「インポート」を参考にしてください。

トレーニング

まず、100 枚ずつ用意した犬と猫の画像データを使って学習(トレーニング)を行います。BLOCKS では、モデルジェネレーターを使ってこのトレーニングを行います。

モデルジェネレーターは、以下の手順で作成します。

  1. モデルジェネレーターがひとつもない場合は、「モデルジェネレーターとは?」の画面の「利用開始」ボタンをクリックします。

    モデルジェネレーターとは?の画面

    info_outline ライセンス不足の場合は、その旨のメッセージが表示されます(管理者の場合は、ライセンス購入画面を表示)。メッセージが表示された場合は、組織の管理者に問い合わせてください(管理者の場合は、ラインセンスを購入してください)。

  2. モデルジェネレーターがひとつ以上ある場合は、画面左上の「追加」ボタンをクリックします。

    モデルジェネレーター一覧画面

    info_outline ライセンス不足の場合は、その旨のメッセージが表示されます(管理者の場合は、ライセンス購入画面を表示)。メッセージが表示された場合は、組織の管理者に問い合わせてください(管理者の場合は、ラインセンスを購入してください)。

  3. 画像分類タイプ」を選択します。

    画像分類タイプの選択
  4. 名前を入力します。

    モデルジェネレーター(画像分類タイプ)作成の名前設定画面

無料トライアルおよびセルフサービスプランの場合は、画面の案内に沿って以下のステップを進めてください。

  1. GCP サービスアカウントの設定
  2. ストレージの設定

最後に、設定内容を確認し「完了」ボタンをクリックすると、モデルジェネレーターが作成されます。

引き続き、このモデルジェネレーターを使って、トレーニングを実施します。「トレーニング開始」ボタンをクリックします。

画像分類タイプのトレーニング開始画面

ここでは、以下の内容でトレーニング情報を設定します。

項目 内容
トレーニング名

トレーニングに名前を付けます。

例えば、「1 回目のトレーニング」などとします。

トレーニングデータアップロード
(フルサービスプランのみ)

フルサービスプランの場合、トレーニングデータのアップロード先に使用する Google Cloud Storage (GCS) の場所が「gs://バケット名」の形式で表示されます。

リンクをクリックすると、ウェブブラウザーの別タブで Google Cloud Console が開き、この GCS にアクセスできます(プロジェクト設定の GCP アクセスで登録した Google アカウントによるログインが必要)。

今回は、「準備」で既にトレーニングデータをアップロードしているため、使用しません。

画像フォルダー

トレーニングに使用する画像ファイルをアップロードしたフォルダーを指定します。

ここでは、gs://my-bucket/blocks_ml_image_example/training/ と指定します。

バケット名 my-bucket の部分は、ご自身の環境のバケット名に読み替えてください。

トレーニング用の画像ファイルは、分類する種類ごとでフォルダーに分けて配置します。フォルダー名が分類する種類の名称として扱われます。対応する画像ファイルの形式は、JPEG のみです。

今回の例では、犬と猫に分類するため、それぞれ dog フォルダーと cat フォルダーに分けて、犬と猫の画像ファイルを配置しました(dogcat が分類する種類の名称)。

トレーニングタイプ

トレーニングの種類を選択します。

  • スピード優先学習

    「精度優先学習」との比較において、トレーニングの時間が短い代わりに、予測精度が低くなる傾向にあります。

  • 精度優先学習

    「スピード優先学習」との比較において、トレーニングの時間が長い代わりに、予測精度が高くなる傾向にあります。

トレーニングの経過制限時間

トレーニングにかける最大の時間を指定します。

ここでは、初期値の 180 (3 時間)のままとします。

トレーニングの最大試行回数

トレーニングの最大試行回数を 110 から選択します。

ここでは、初期値の 10 のままとします。

「トレーニングの経過制限時間 × トレーニングの最大試行回数」が、トレーニングにかかるおおよその時間です。実際には、付加的・間接的な処理による時間もあるため、もう少し時間がかかる可能性もあります。

早期打ち切り判定を利用する

早期打ち切り判定を[利用する]か[利用しない]かを選択します。

早期打ち切り判定とは、トレーニング中にこれ以上の精度向上が見込めないと判断した場合に、トレーニングの経過制限時間に達していなくてもトレーニングを打ち切る機能です。ただし、精度向上の見込み判断の正確性を保証するのものではありません。ご利用は、ご自身の判断でお願いします。

このオプションは、[トレーニングタイプ]で[精度優先学習]を選択したときのみ表示されます。

マシンタイプ

トレーニングに使用するマシンの種類を選択します。

  • 単一ノード(GPU)

    単一のマシンで GPU (Graphic Processing Unit) を使ってトレーニングを行います。

  • 分散ノード(GPU)

    複数のマシンで GPU を使ってトレーニングを行います。[単一ノード(GPU)]のマシンタイプに比べて GCP の料金が割高になりますが、[単一ノード(GPU)]に比べて高速なトレーニングが望めます。

    分散ノード(GPU)]は、[トレーニングタイプ]で[精度優先学習]選択したときのみ表示されます。

トレーニングの説明

トレーニングの説明を記入します。

今回は、空欄のままとします。

開始」ボタンをクリックすると、トレーニングが始まり、トレーニング状況を確認できます。

モデルジェネレーター画像分類タイプ詳細画面

トレーニングが終わるとステータスが成功に変わり、「適用」ボタンが表示されます。「適用」ボタンをクリックすると、フローデザイナーを使って予測が行えます。

予測

予測は、フローデザイナーで行います。今回用意したフローは、以下のとおりです。

画像分類オンライン予測フロー

予測は「モデルジェネレーター予測(オンライン)」ブロックを使用します。このブロックは、変数に設定された予測データとモデル(モデルジェネレーターのトレーニング結果)を使って予測を行います。今回は、「オブジェクト生成」ブロックを使って、予測に使う画像ファイルへの情報を変数に設定します。

予測データの設定方法は、「オブジェクト生成」ブロックを使用する方法以外にもいろいろとあります。「モデルジェネレーター予測(オンライン)ブロックを使ったいろいろな予測の方法」で紹介しています。実際の活用にあたっては、これらの中から適切な方法を選択してください。

以下に、各ブロックのプロパティの設定値を示します(初期値と異なる設定と重要なプロパティのみ)。提供のサンプルフローでは、「ブロックメモ」プロパティに各ブロックの動作説明を記載していますが、ここでは省略します。

ブロック
(カテゴリー)
プロパティ
オブジェクト生成
(基本)
結果を格納する変数

_

データ
画像分類タイプ予測データサンプル

バケット名 my-bucket の部分は、ご自身の環境のバケット名に読み替えてください。

モデルジェネレーター予測(オンライン)
(機械学習)
GCPサービスアカウント 複数の GCP サービスアカウントがある場合は、適切な GCP サービスアカウントを選択
モデル 先ほど作成したモデルジェネレーターのモデルを選択
予測因子データの変数 _.data
予測結果変数 _
ログへ出力
(基本)
ログへ出力する変数 _

このフローを実行するには、フローの開始ブロックのプロパティ内にある「」ボタンをクリックします。

実行が成功するとログに以下のような内容が出力されます。ログは、画面最下部の「ログ」と書かれた灰色のバーをクリックし、ステータスが「成功」の部分をクリックすると表示されます。

{
  "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"
    }
  ]
}

"labels""score""key""label" で 1 セットの予測結果です。1 セットで 1 つの画像の予測に対応しています。この例の場合、3 行目から 14 行目で 1 セット、15 行目から 26 行目でもう 1 セットの計 2 セットで 2 画像分の予測結果です。

"labels""score""key""label" のそれぞれの意味は、以下のとおりです。

名前 説明
"labels"

分類の種類のリストです。この例の場合、"cat"(猫) と "dog"(犬) の 2 種類です。

"labels" のリスト順序は、次の "score" のリスト順序に対応しています。

"score"

分類ごとの予測の確からしさです。以下は、1 セット目の解説です。

  • "cat" は、"score"1.0 に対応します("cat" の可能性が約 100%)。
  • "dog""score"3.764146683238323e-08 に対応します( "dog" の可能性が、約 0.00000004%)。
"key" 予測に使用した画像ファイルの GCS URL です。予測にキーを指定した場合は、そのキーの値が出力されます。
"label" 予測結果です。

以下は、この予測結果を整理した表です。

画像ファイル 予測結果
画像分類の予測サンプル画像(猫)
sample_01.jpg
  • 約 100% の確率でです。
  • 犬の可能性は、約 0.00000004% です。
画像分類の予測サンプル画像(犬)
sample_02.jpg
  • 約 99.99991655349731% の確率でです。
  • 猫の可能性は、約 0.0000008% です。

まとめ

このように、BLOCKS を使うと、画像ファイルをフォルダーごとに分けて準備するだけの手軽さで、機械学習による画像分類が利用できます。

最後に、BLOCKS の画像分類用に準備する画像ファイルの留意事項をまとめておきます。

  • 極端な縦横比の画像は、正しく分類できない可能性があります。
  • トレーニングに使用する画像ファイルは、分類する種類ごとにフォルダーを分けて配置します。
  • そのフォルダー内には JPEG 形式の画像ファイルのみを配置します(更にフォルダーを作って整理しない)。