1. システムとオフィスの融合|株式会社QES
  2. media
  3. マイクロソフトソリューション 機械学習
  4. Lobeによるノーコード機械学習で、画像を分類してみよう

QESブログ

Lobeによるノーコード機械学習で、画像を分類してみよう

  • LINEで送る
  • このエントリーをはてなブックマークに追加

こんにちは。 システムソリューション営業本部の吾妻です。



アプリケーション開発において、ノンコーディング、ローコーディングが流行している今日この頃ですが、こうした「ソースコードを書かないソリューション」という波は、機械学習分野にもやってきています。

Microsoftがベータ版として公開している Lobe を使うと、機械学習に画像データを「食わせる」ところから、生成された学習モデルを「評価する」ところまであっという間に実行できます。

今回は、この Lobe を利用して、画像ファイルを分類する手順について、簡単にご紹介したいと思います。


Lobe とは

Lobe とは、Microsoftが公開している、プレビュー版の機械学習モデル作成ツールです。

独自の機械学習モデルを作りあげるためには、通常、Pythonなどのプログラミング言語でプログラムを書く必要がありますが、Lobeを利用すると、画像ファイルを用意するだけで、無償で、自分自身のコンピューターの上でトレーニングさせることができます。

ここで、「自分自身のコンピューターの上」というのが1つのポイントで、セキュリティ上、外部への持ち出し(=クラウドサービスへのアップロード)ができない画像をデータセットにして学習モデルを作成することができるのです。

また、 Lobe では Web カメラの画像を取得することもできるため、画像ファイルを用意できない場合には、データセットの収集から Lobe だけで実施できます。

Lobe で作った学習モデルは、 Tensor Flow を始めとした様々なツールで利用できるように、それぞれのデータ形式でエクスポートできるため、例えば、 PC 上で学習したモデルをもとに、 iPhone 上で画像分類するアプリを作る、といったことも可能です。

Lobe のインストール

Lobe のインストーラーは、 https://lobe.ai/ からダウンロードすることができます。
lobe001.png

トップページの「Download」ボタンを押すと、アンケートフォームが表示されるので、各項目に適宜入力して、ダイアログの「Download」ボタンをクリックします。
lobe002.png

ダウンロードしたインストーラーを起動します。インストール先だけ選択する画面がありますが、デフォルトのままで良いでしょう。
lobe003.png

インストールが完了したら、 Lobe を起動します(セットアップの最後でチェックボックスで指示できます)。
lobe004.png


Lobe での学習モデル生成

今回は、既存のデータセットがあるわけではないので、 Lobe から直接 Web カメラにアクセスして取得した画像をもとに、近くに転がっていたコアラとペンギンのぬいぐるみを判別する機械学習モデルを生成してみようと思います。



まずは、学習用データを用意していきます。

右上の「Import」をクリックするとメニューが表示されるので、Cameraをクリックします。
lobe005.png

Web カメラのプレビュー画面が表示されます。必要に応じて、歯車アイコンをクリックして使用する Webカメラ を切り替えます。
lobe006.png

プレビュー画面の左下にある「Label」をクリックして、これから撮影する画像が、何の画像であるかを示すための「ラベル」を入力します。今回は「Koala」と入力しました。ラベルを入力したら、プレビュー画面中央下の撮影ボタンをクリックします。
lobe007.png

被写体の向きを変えて、何枚か撮影します。撮影ボタンを押し続けると連写できるので、テーブルを回転させながら取り続けてみました(撮影ボタンに表示されているのが連写した枚数)。1ラベル当たり最低5枚撮影すればトレーニングできますが、精度を向上するために多めに撮っておきます。
lobe008.png

今度は、ラベルを「Penguin」に書き換えてから、何枚か撮影します。
lobe009.png

何も映っていない状態も、「None」ラベルを付けて撮影しておきます。
lobe010.png

Lobe の左端のパネルの「Training...」表示が「Train」表示に切り替わったら、そこをクリックします。

自動的にトレーニングされた結果が表示されます。今回は「Correct 100%」となりましたが、100%に届かなくても大丈夫です。
lobe012.png

続いて、生成された学習モデルの精度を、より高めていきます。

「Train」の下にある「Play」をクリックして、画面を切り替えます。この画面では、トレーニングに使用したのとは別の画像(評価用データ)を用意し、生成した学習モデルの精度を調べたり、フィードバックを送ることで精度を改善させたりできます。
lobe013.png

画面が切り替わったら、右上にある「Camera」をクリックします。
lobe014.png

ここで、学習用データとして登録した画像とは、構図の違う写真を撮っていきます。先程連写した際は、ぬいぐるみを座らせたままテーブルを回転させて撮影したので、今度は寝転がらせて撮影しました。
lobe015.png

すると、左下に表示されるラベルから、現在写っているのが「Penguin」ではなく「None」だと判定していることがわかるので、右側の赤いボタンをクリックして、正しいラベルを選択してあげます。
lobe016.png lobe017.png lobe018.png

他のラベルでも、適宜フィードバックを送ります。

Lobe から学習モデルをエクスポート

トレーニングとフィードバックを終えて、必要な精度が得られたら、学習モデルをエクスポートすることができます。

左上のメニューアイコンをクリックして、「Export...」を開きます。
lobe019.png

生成した学習モデルを、どのツールで利用したいかに応じて、フォーマットを選択します。記事執筆時点では、以下のフォーマットから選択できるようです。このあたりは、まだプレビュー版のため、変更されることがあり得ます(例えば、少し古いドキュメントを参照すると、TensorFlow.jsの選択肢がなかったりします)。
  • TensorFlow Lite
  • TensorFlow.js
  • TensorFlow
  • ONNX
  • Local API

今回は、ブラウザ上で動く画像判定アプリを作ってみることにしたのでTensorFlow.jsを選択しました。
lobe020.png

エクスポートするデータは、複数のファイルからなるので、エクスポート先として「フォルダ」を選択します。
lobe021.png

エクスポートする直前に、最適化するか確認するダイアログが表示されるので、「Optimize & Export」をクリックします。
lobe022.png

エクスポートが完了しました。
lobe023.png

エクスポート先として指定したフォルダを開くと、 model.json をはじめとした多くのファイルが出力されていることが確認できます(エクスポート時に指定したフォーマットによって不内容は異なります)。
lobe024.png

JavaScriptで書いた画像判別アプリを実行してみた結果です。分類結果とスコア(そのクラスである確率)を取得して、表示しています。

こうしたアプロケーションは、GitHub Pagesへデプロイしたり、こちらもプレビュー版ですが「Azure Static Web Apps」へデプロイしたりするのがおすすめです。
lobe025.png



まとめ



本記事では、Microsoftが公開しているLobe というツールを使用して、
ソースコードを書くことなく画像分類用の機械学習モデルを生成する方法について簡単にご紹介しました。
Lobe はあくまでもベータ版ですので、今後機能が変更される可能性がある点にだけご注意ください。

今回はローカルで機械学習を行うものでしたが、次回以降の記事では、より手軽に、より速く、より高い精度を求める場合に利用すべきクラウド型の機械学習サービスについて、
ご紹介できればと考えています。





このブログで参照されている Microsoft、Windows、その他のマイクロソフト製品およびサービスは、米国およびその他の国におけるマイクロソフトの商標または登録商標です。

このブログで参照されている GitHubは、米国およびその他の国におけるGitHub Inc.の商標または登録商標です。

このブログで参照されている TensorFlow、その他のGoogle製品およびサービスは、米国およびその他の国におけるGoogle LLCの商標または登録商標です。

  • LINEで送る
  • このエントリーをはてなブックマークに追加

お気軽にお問い合わせください。

ページのトップへ