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

Image classification with BLOCKS Machine Learning

はじめに

BLOCKS の機械学習のサービスを使うと、画像分類が行えます。画像分類を使うと、製品の不良品検査や細胞の病理診断などの画像を使ったさまざまな解析が可能となります。

このチュートリアルでは、写真に写っている動物が犬か猫かを判定する例を使って、BLOCKS の画像分類の使い方を解説します。

犬猫判定の概略図

画像分類のおおまかな流れ

BLOCKS で画像分類を行うには、「モデルジェネレーター」と「フローデザイナー」を使用します。下図は、モデルジェネレーターとフローデザイナーを使った画像分類の流れです。

画像分類タイプの概略図

まず、モデルジェネレーターで学習(トレーニング)を行います。このトレーニングでは、犬や猫が写った大量の画像データを与えて、犬と猫の特徴を学ばせます。このトレーニングの成果は、モデルと呼ばれます。

次に、フローデザイナーでモデルと犬猫の予測用画像を与えて、予測(犬か猫かの判定)を行います。

BLOCKS の画像分類で対応する画像形式は、JPEG・PNG・GIF・BMP です。トレーニング時のトレーニングタイプがスピード優先の場合は、JPEG のみの対応です。

トレーニングタイプについて詳しくは、「モデルジェネレーターヘルプ > トレーニング開始 > 画像分類タイプ」の「トレーニングタイプ」の項を参照してください。

画像分類を試してみよう

チュートリアルを進めるにあたって、BLOCKS 推奨のウェブブラウザー Google Chrome を準備してください。Firefox でも構いませんが、その場合は一部機能に制限があります(後述)。このチュートリアルでは、Google Chrome の使用を前提にしています。

また、以下のライセンスが必要です。

サービス ライセンス数 補足
モデルジェネレーター 1 未使用のライセンスが必要です。
フローデザイナー 1 未使用のライセンスが必要です。利用中のライセンスを使用する場合は 5 ブロック分の空きが必要です。
DataEditor 1 1 テーブル分の空きが必要です。

無料トライアルの場合、各サービスは 1 ライセンス分のみの利用可能です。モデルジェネレーターのライセンスを既に使用している場合は、作成済みのモデルジェネレーターを削除してから本チュートリアルを進めてください。

画像分類を始める前に

まず、画像分類のトレーニングと予測に必要な画像データを準備します。先に述べたように、BLOCKS で画像分類を行うには、モデルジェネレーターを使ったトレーニングが必要です。このトレーニングには、トレーニング用の画像データが必要です。また、予測するための画像データも必要です。このチュートリアルでは、BLOCKS の画像分類がすぐ試せるように、必要なデータ一式を準備しました。

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

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

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

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

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

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

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

    トレーニング用の画像ファイルは、分類ごとにフォルダー分けして配置しています。フォルダー名が分類名として扱われるため、フォルダー名は分類がわかるようなわかりやすい名前を付けています(日本語不可)。

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

    画像ファイルの形式は、すべて JPEG で統一しています。

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

    BLOCKS の画像分類では、GCS から画像ファイルを読み取ります。ここでは、解凍された blocks_ml_image_example フォルダーを、GCS Explorer ツールを使って GCS へアップロードします。アップロードの手順は、以下のとおりです。

    まず、BLOCKS にログインします。

    GCS EXplorer を開く様子
    1. グローバルナビゲーション左端の をクリック
    2. GCS Explorer (beta)]をクリック
    GCS Explorer で GCP サービスアカウントとバケットを選択する様子
    1. GCP サービスアカウントを選択
    2. -us-central1-data で終わるバケットを選択

    セルフサービスプラン(無料トライアル含む)の場合は、プロジェクト作成時にオプションを選択してバケットが同時に作成されていることを前提としています。

    バケットがひとつもない場合は、プロジェクト設定の GCP サービスアカウントの項で、バケットの作成ができます。

    プロジェクト設定の GCP サービスアカウントでバケットを作成する様子

    既に異なるバケットが作成済みの場合は、そのバケットを選択しても構いません。ただし、そのバケットのストレージクラスロケーションは、Regional かつ us-central1 である必要があります。

    [フォルダをアップロードする]リンクをクリックする様子
    1. フォルダをアップロードする]をクリック

    Firefox では、GCS Explorer のフォルダーのアップロード機能は利用できません(前述の一部機能の制限)。その場合は、まず GCS Explorer のフォルダー作成機能を使って、解凍してできたフォルダー構成を GCS 上に再現します。次に、ファイルアップロード機能を使って所定のフォルダー内に各ファイルをアップロードします。ファイルのアップロード方法については、「GCS へファイルをアップロードする方法」を参考にしてください。

    フォルダーを選択する画面が表示されます(OS ごとに異なる)。以下の画面は、Windows の例です。

    アップロードするフォルダーを選択し、[アップロード]ボタンをクリックする様子
    1. blocks_ml_image_example フォルダーをクリック
    2. アップロード]ボタンをクリック

    アップロードの確認画面が表示されます。

    アップロード確認画面
    1. アップロード]ボタンをクリック

    しばらくすると、blocks_ml_image_example フォルダーがアップロードされます。

    フォルダーアップロード後の GCS Explorer の画面

    これで使い始めに必要な準備は完了です。

モデルジェネレーターを作成しよう

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

まず、犬猫の画像分類用のモデルジェネレーターを作成します。

モデルジェネレーターサービスへ切り替える様子
  1. グローバルナビゲーション左端の をクリック
  2. モデルジェネレーター]をクリック

モデルジェネレーターがひとつもない場合は、「モデルジェネレーターとは」の画面が表示されます。

デルジェネレーターとは?の画面
  1. 利用開始]ボタンをクリック

モデルジェネレーターがひとつ以上ある場合は、作成済みのモデルジェネレーターの一覧が表示されます。

モデルジェネレーター一覧画面
  1. 追加]ボタンをクリック
画像分類タイプの選択
  1. 画像分類タイプ]をクリック
  2. 次へ]ボタンをクリック
モデルジェネレーター(画像分類タイプ)作成の名前設定画面
  1. 名前を入力(例:犬猫の画像分類
  2. 次へ]ボタンをクリック

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

  1. GCP サービスアカウントの設定
  2. ストレージの設定
モデルジェネレーター作成の設定内容の確認画面
  1. 完了]ボタンをクリック
確認画面で OK ボタンをクリックする様子
  1. OK]ボタンをクリック

モデルジェネレーターでトレーニングしよう

引き続き、このモデルジェネレーターを使って、トレーニングを実施します。

モデルジェネレーター詳細画面
  1. トレーニング開始]ボタンをクリック
トレーニング開始画面でトレーニング名と画像フォルダーを設定する様子
  1. トレーニング名を入力(例:1回目のトレーニング
  2. をクリック
トレーニング用画像フォルダーを選択する様子
  1. -us-central1-data で終わるバケット名先頭のアイコンをクリック
  2. blocks_ml_image_example フォルダー先頭のアイコンをクリック
  3. training フォルダーをクリック
  4. 選択]ボタンをクリック

このチュートリアルでは、トレーニング名と画像フォルダーの項目以外は、初期設定のままとします。各項目について詳しくは、モデルジェネレーターヘルプを参照願います。

トレーニングを開始する様子
  1. 開始]ボタンをクリック

トレーニングが始まり、トレーニングの状況が確認できます。

トレーニング一覧画面

トレーニングの所用時間は、2 時間ほどです(時間はサーバー側の状況により前後)。しばらくお待ちください。

トレーニング一覧画面でトレーニングが成功で終了した様子

トレーニングが成功で終わると、トレーニング一覧の当該トレーニングのステータスが成功に変わります。

トレーニング一覧からトレーニングを検証用として適用する様子
  1. をクリック
  2. 本番用]をクリック
  3. 適用]ボタンをクリック

適用が完了すると、フローデザイナーを使って予測が行えるようになります。

適用対象について詳しくは、モデルジェネレーターヘルプの「トレーニングを一覧する」のアクションの項を参照してください。

もし、Google Cloud Platform(GCP)のリソース不足によりトレーニングが失敗する場合は、トレーニング時のマシンタイプを[単一ノード]に変更してトレーニングを再実行してください。

トレーニング失敗の理由の確認方法については、「操作中にエラーとなったら」を参考にしてください。

その他の理由により、トレーニングが失敗する場合は、再度トレーニングを実行してみてください。

フローデザイナーを作成しよう

予測は、フローデザイナーで行います。フローデザイナーのフローテンプレート作成機能を活用すると、簡単に画像分類を予測するためのフローが作成できます。このチュートリアルでは、このフローテンプレートを使った方法を解説します。

まず、フローデザイナーを作成します。

フローデザイナーを開く様子
  1. グローバルナビゲーション左端の をクリック
  2. フローデザイナー]をクリック
フローデザイナーの「フローデザイナーとは」の画面
  1. 利用開始]ボタンをクリック

既にフローデザイナーを作成している場合は、「フローデザイナーとは」の画面は表示されません。後で述べるフローデザイナーの一覧画面が表示されます。その場合は、既存のフローデザイナーの名前をクリックして、以降の作業を進めてください。もし無料トライアル以外をお使いで、新たにフローデザイナーを作成できるライセンス枠がある場合は、フローデザイナー一覧画面の左上にある[追加]ボタンをクリックしてください。

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

フローデザイナー新規作成画面
  1. 名前を入力(例:チュートリアル
  2. 作成]ボタンをクリック
フローデザイナー一覧画面
  1. チュートリアル]をクリック

フローテンプレートでフローを生成しよう

新しいタブでフローデザイナーが開きます。引き続き、フローテンプレート作成機能を使って、画像分類の予測を行うフローを生成します。

フローデザイナーからフローテンプレート作成機能を実行する様子
  1. フローテンプレート作成]ボタンをクリック
フローテンプレートの目的選択画面
  1. 画像分類予測]をクリック
  2. 次へ]ボタンをクリック
フローテンプレート作成のフロー名の設定画面
  1. フロー名を入力(例:犬猫の画像分類予測
  2. 次へ]ボタンをクリック
フローテンプレート作成の予測ブロック設定画面
  1. 犬猫の画像分類(画像分類)]をクリック
  2. バッチ予測]をクリック
    バッチ予測は、複数の画像をまとめて予測するのに向いています。
  3. 次へ]ボタンをクリック
フローテンプレート作成の入力データ設定画面
  1. をクリック
予測用データを選択する様子
  1. -us-central1-data で終わるバケット先頭のアイコンをクリック
  2. blocks_ml_image_example フォルダー先頭のアイコンをクリック
  3. prediction フォルダーをクリック
  4. 選択]ボタンをクリック
予測用データが入力された様子
  1. 次へ]ボタンをクリック

出力データ設定では、簡単に予測結果を確認できる DataEditor を指定します。

フローテンプレート作成のストレージの選択画面(その 1)
  1. DataEditor]をクリック
  2. データ名を入力(例:犬猫の画像分類予測結果
  3. データセットを入力(例:tutorial

画面を下にスクロールします。

フローテンプレート作成のストレージの選択画面(その 2)
  1. テーブルを入力(例:image_classification_results
  2. ラベル数を 2 に変更
  3. 次へ]ボタンをクリック

DataEditor は、BigQuery 上のデータを視覚的に操作できるツールです。BigQuery に関する知識は必要ありませんが、BigQuery 上の重要な要素であるデータセットとテーブルは指定する必要があります。Microsoft Excel に例えると、データセットはブックで、テーブルはシートに対応する概念です。

テンプレート作成のフロー配置設定画面
  1. 配置]ボタンをクリック

これで、予測フローが完成しました。ここで、このフローを保存しておきます。

作成した画像分類予測のフローテンプレートが配置されている様子
  1. 保存]ボタンをクリック

生成したフローで予測をしよう

早速、予測を試してみます。

フローを実行する様子
  1. フロー先頭の[犬猫の画像分類予測]ブロック右端の をクリック
  2. フローの実行]をクリック

予測の実行状況を確認するために、フローの実行ログを確認します。

ログを表示する様子
  1. ログを見る]をクリック
ログが表示された様子

画面下部に、ログパネルが表示されます。ログパネル左側のログリストのステータスでフローの実行状況が確認できます。フローの実行には、少々時間がかかるので、[実行中](❶)の表示になっているはずです。実行が終わるまで、しばらく待ちます。

フローの実行が成功で終了した様子

フローの実行が正常に終了すると、ログリストのステータスが[成功](❶)に変わります。これで犬猫の画像分類の予測は完了です。

予測結果を確認しよう

予測結果は、DataEditor のデータとして出力しているので、DataEditor で確認します。別タブにある BLOCKS の画面(フローデザイナーの一覧画面)に切り替えます。

DataEditor へ切り替える様子
  1. グローバルナビゲーション左端の をクリック
  2. DataEditor]をクリック
DataEditor のテーブル一覧画面
  1. 犬猫の画像分類予測結果]をクリック
DataEditor のテーブル詳細画面
  1. テーブル]タブをクリック
  2. データを表示]をクリック
DataEditor でデータの確認をする様子

各列のそれぞれの意味は、以下のとおりです。

名前 説明
key 予測に使用した画像ファイル名です(GCS URL 形式)。
label 予測結果です。
score

予測結果の確からしさです。数値は、0 から 1 の範囲で、1 が 100% を示します。

score_(0 からの数値)

分類ごとの予測の確からしさです。数値は、0 から 1 の範囲で、1 が 100% を示します。

この予測結果をまとめると以下のようになります。

画像ファイル 予測結果
1 画像分類の予測サンプル画像(猫)
sample_01.jpg
  • の可能性がほぼ 100%
2 画像分類の予測サンプル画像(犬)
sample_02.jpg
  • の可能性がほぼ 100%

操作中にエラーとなったら

本文中で、操作中に一般的に起きそうなエラー(失敗)については、記載しました。

しかし、それ以外の失敗や何度リトライしても失敗するようであれば、グローバルナビゲーション右端のユーザーアイコンをクリックして表示される[お問い合わせ]からエラー内容を添付してお問い合わせください。

エラー内容は、モデルジェネレーターの場合は、トレーニング詳細画面の「エラー内容」で確認できます。以下に、モデルジェネレーターでのエラー内容の確認方法を紹介します。

トレーニング詳細画面を表示する様子

トレーニング一覧からステータスが[失敗]と表示されているトレーニングのトレーニング名(❶)をクリックします。

エラー内容の確認

トレーニング詳細画面の[エラーログ](❶)をクリックします。[エラーログをコピーする](❷)をクリックすると、エラーログがコピーされます。

フローデザイナーの場合は、先に紹介したログパネルで確認できます。

フローデザイナーのログパネルでのエラー内容の確認

エラー部分が赤字で表示されます。

エラーの原因を特定するには、エラー部分を中心に前後のメッセージも含めて読み解くと良いです(フローデザイナーは、[エラーログの詳細を表示]チェックボックスをチェック)。

エラーが発生し、何度リトライしても失敗するようであれば、グローバルナビゲーション右端のユーザーアイコンをクリックして表示される[お問い合わせ]からエラー内容をテキストファイル化したファイルを添付してお問い合わせください。エラー内容をテキストファイル化する場合は、赤字のエラー部分だけではなく、すべてのエラーメッセージを含めてください(フローデザイナーは、[エラーログの詳細を表示]チェックボックスをチェック)。

フローデザイナーでエラーが発生する場合は、フローをエクスポートした JSON ファイルも添付してください。

お問い合わせについて詳しくは、基本操作ガイドの「お問い合わせ」を参考にしてください。

まとめ

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

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

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