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

Image classification with BLOCKS Machine Learning

はじめに

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

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

犬猫判定の概略図

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

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

画像分類タイプの概略図

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

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

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

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

画像分類を試してみよう

画像分類を始める前に

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

次に、画像分類のトレーニングと予測に必要な画像データを準備します。先に述べたように、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 を開く様子

    グローバルナビゲーション左端のメニューアイコン()をクリックし、表示されるメニューから[GCS Explorer (beta)]項目右端のアイコン(open_in_new)をクリックします。

    GCS Explorer で GCP サービスアカウントとバケットを選択する様子

    GCS Explorer の画面が新しいタブで開きます。上図を参考に、「GCP サービスアカウント」と「バケット」を選択します。

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

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

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

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

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

    フォルダをアップロードする]をクリックします。

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

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

    アップロードするフォルダーを選択する画面が表示されるので、先に解凍しておいた blocks_ml_image_example フォルダーをクリックし、更に[アップロード]ボタンをクリックします。

    アップロード確認画面

    アップロードを確認する画面が表示されるので、[アップロード]ボタンをクリックします。

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

    しばらくすると、blocks_ml_image_example フォルダーがアップロードされます。これで使い始めに必要な準備は完了です。

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

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

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

  1. GCS Explorer のタブはそのままにして、別タブの BLOCKS の画面に戻ります。

    モデルジェネレーターサービスへ切り替える様子

    グローバルナビゲーション左端のメニューアイコン()をクリックし、表示されるメニューから[モデルジェネレーター]をクリックします。

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

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

    利用開始]ボタンをクリックします。

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

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

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

    画面左上の[追加]ボタンをクリックします。

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

  4. モデルジェネレーター新規作成の画面が表示されます。ここでは、作成するモデルジェネレーターのタイプを選択します。

    画像分類タイプの選択

    画像分類タイプ]をクリックし、更に[次へ]ボタンをクリックします。

  5. モデルジェネレーター(画像分類タイプ)作成画面が表示されます。

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

    名前を入力して(例:犬猫の画像分類)、[次へ]ボタンをクリックします。

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

    1. GCP サービスアカウントの設定
    2. ストレージの設定
  6. 最後に、設定内容を確認します。

    モデルジェネレーター作成の設定内容の確認画面

    完了]ボタンをクリックすると、モデルジェネレーターが作成されます。

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

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

モデルジェネレーター詳細画面

トレーニング開始]ボタンをクリックします。

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

ここでは、以下の内容でトレーニング情報を設定します。ここに記載のない項目は、初期設定値のままとします。各項目について詳しくは、モデルジェネレーターヘルプを参照願います。

項目 内容
トレーニング名

トレーニングに名前を付けます(例:1回目のトレーニング)。

画像フォルダー

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

画像フォルダー入力欄右端の アイコンをクリックすると、GCS 上のファイルを選択する画面が表示されます。

GCS File Selector を使って画像フォルダーを指定する様子

上図手順に沿ってフォルダーを選択すると、画像フォルダー入力欄に GCS URL と呼ばれる画像フォルダーへのパスが入力されます。

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

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

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

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

トレーニング一覧からトレーニングを検証用として適用する様子

適用対象から[本番用]を選択し、[適用]ボタンをクリックすると、フローデザイナーを使って予測が行えるようになります。

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

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

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

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

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

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

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

フローデザイナーを開く様子

グローバルナビゲーション左端のメニューアイコン()をクリックし、表示されるメニューから[フローデザイナー]をクリックします。

フローデザイナーの「フローデザイナーとは」の画面

利用開始]ボタンをクリックします。

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

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

フローデザイナー新規作成画面

フローデザイナーに名前を付けて(例:チュートリアル)、[作成]ボタンをクリックします。

フローデザイナー一覧画面

フローデザイナーの一覧画面から、[チュートリアル]の部分をクリックします。

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

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

フローデザイナーからフローテンプレート作成機能を実行する様子

フローデザイナーのヘッダーから[フローテンプレート作成]ボタンをクリックします。

フローテンプレートの目的選択画面

フローテンプレート作成画面から、作成するフローテンプレートの種類である[画像分類予測]をクリックし、更に[次へ]ボタンをクリックします。

フローテンプレート作成のフロー名の設定画面

作成するフローのフロー名を入力(例:犬猫の画像分類予測)し、[次へ]ボタンをクリックします。

フローテンプレート作成の予測ブロック設定画面

ここでは、フローで使用する予測ブロックの設定を行います。まず、モデル選択では、先ほど作成したモデルジェネレーターの名前を選択します。次に、予測形式選択では、バッチを選択します。バッチは、複数の画像をまとめて予測するのに向いています。最後に、[次へ]ボタンをクリックします。

フローテンプレート作成の入力データ設定画面

ここでは、GCS URL に、犬猫の予測用画像が入ったフォルダーへの GCS URL を入力します。その他の項目は、初期設定値のままとします。

GCS URL の入力は、GCS Explorer を使うと便利です。

別タブにある GCS Explorer の画面に切り替えます。

GCS Explorer でフォルダーをクリックする様子

blocks_ml_image_example/ の部分をクリックします。

GCS Explorer で GCS URL をクリップボードにコピーする様子

prediction/ の行右端しのアイコン()をクリックします。これで、このフォルダーへの GCS URL がクリップボードにコピーされます。

後はフローデザイナーの画面に切り替えて、GCS URL の入力欄で、クリップボードの内容をコピーするだけです(Windows:Ctrl + V・macOS:Command + V)。

GCS URL の入力が完了したら、[次へ]ボタンをクリックします。

フローテンプレート作成のストレージの選択画面(その 1)
フローテンプレート作成のストレージの選択画面(その 2)

ここでは、画像分類の予測結果をどこに出力するかを設定します。今回は、もっとも手軽に結果の確認ができる Data Editor を出力先とします。上図赤枠の部分は、下表の内容に沿って選択・入力してください(表に載っていない項目は初期設定値のまま)。

項目 設定内容
出力データの保存先 Data Editor]を選択。
データの名前 データに付ける名前を入力(例:犬猫の画像分類予測結果)。
データセット BigQuery 上のデータセットを入力(例:tutorial)。
テーブル BigQuery 上のテーブルを入力(例:image_classificatiion_results
ラベル数の設定 分類数を設定します(例:2)。

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

すべての項目の選択・入力が完了したら、[次へ]ボタンをクリックします。

テンプレート作成のフロー配置設定画面

最後に、フローを配置する場所を指定します。初期設定値の[現在のタブに表示する]を採用するため、そのまま[配置]ボタンをクリックします。

すると、下図の赤枠部分に作成されたフローがフローデザイナー上に配置されます。

作成した画像分類予測のフローテンプレートが配置されている様子

ここで、一旦[保存]ボタンをクリックして、フローを保存しておきます。

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

これで、予測の準備ができました。早速、予測を試してみます。

フローを実行する様子

フロー先頭の「犬猫の画像分類予測」ブロック右端のアイコン()をクリックします。表示されるメニュー中程の[フローの実行]をクリックします。これで、画像分類の予測が実行されます。

ログを表示する様子

予測の実行状況を確認するために、フローの実行ログを確認します。表示中のメニューから[ログを見る]をクリックします。

ログが表示された様子

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

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

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

予測結果を確認しよう

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

Data Editor を起動する様子

グローバルナビゲーション左端のメニューアイコン()をクリックし、表示されるメニューから[Data Editor (beta)]をクリックします。

Data Editor のテーブル一覧画面

Data Editor の画面が開きます。この画面から、[犬猫の画像分類予測結果]の部分をクリックします。

Data Editor のテーブル詳細画面

犬猫の画像分類予測結果]の詳細画面に切り替わります。ここで、[データを表示]をクリックします。

Data Editor でデータの確認をする様子

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

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

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

score_(0 からの数値)

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

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

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

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

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

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

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

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

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

エラー内容の確認

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

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

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

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

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

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

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

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

まとめ

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

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

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