基本操作ガイド

Basic Guide

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

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

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

犬猫判定の概略図

BLOCKS で機械学習を使った画像分類を行うには、「ML ボード」と「Big Data ボード」を使用します。ML ボードで学習(トレーニング)を行い、Big Data ボードで予測(犬か猫の判定)を行います。対応する画像の形式は、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 へアップロードしてください。

サンプルフロー

サンプルフローは、「MLボード予測(オンライン)」ブロックを使用した最もシンプルな予測フローを準備しました。

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

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

  2. Big Data ボードへインポート

    ダウンロードしたサンプルフローを Big Data ボードへインポートします。

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

トレーニング

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

ML ボードは、以下の手順で作成します。

  1. BLOCKS ボード一覧から「新規ボード作成」ボタンをクリックします。

    新規ボード作成
  2. ML ボード」を選択します。

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

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

    ML ボード(画像分類タイプ)作成のボード名設定画面

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

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

最後に、設定内容を確認し「完了」ボタンをクリックすると、ML ボードが作成されます。

引き続き、この ML ボードを使って、トレーニングを実施します。「トレーニング開始」ボタンをクリックします。

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

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

項目 内容
トレーニング名

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

例えば、「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 のままとします。

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

マシンタイプ

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

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

  • BASIC:標準的なマシンを使ってトレーニングを行います。
  • BASIC GPU:GPU (Graphic Processing Unit) を使ってトレーニングを行います。GCP の料金が BASIC に比べて 3 倍ほどかかりますが、 BASIC に比べて高速なトレーニングが望めます。
    ただし、トレーニングデータの内容によっては、思ったほど高速にならないことや BASIC より遅くなることもあります。
トレーニングの説明

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

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

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

ML ボード画像分類タイプ詳細画面

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

予測

予測は、Big Data ボードで行います。今回用意したフローは、以下のとおりです。

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

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

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

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

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

_

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

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

MLボード予測(オンライン)
(機械学習)
GCPサービスアカウント 複数の GCP サービスアカウントがある場合は、適切な GCP サービスアカウントを選択
MLボード名 先ほど作成した ML ボード名を選択
予測因子データの変数 _.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 形式の画像ファイルのみを配置します(更にフォルダーを作って整理しない)。