Microsoftがリリースした機械学習ツールが、「Lobe」です。学習させたい画像を用意するだけで、自動的に学習とモデル作成を行ってくれます。
Tensorflow.js向けにも出力できるため、できあがったモデルをMonacaアプリに組み込むこともできます。
今回はその前段階として、Lobeの使い方を紹介します。
Lobeの使い方
Lobeをダウンロードする
Lobeは公式サイトからダウンロードしてください。
Windowsの場合はインストーラーがダウンロードされるので、インストールを行います。macOS版はそのまま起動します。
プロジェクトを作成する
Lobeを立ち上げたら、プロジェクトを作成します。
Exampleなどもありますが、これを選ぶとLobeのWebサイトに遷移します。
遷移した画面では、サンプルプロジェクトがダウンロードできないため、注意してください。
教師データを用意する
教師データというのは、何らかの写真とそのラベル(答え)の組み合わせになります。
例えば、犬の写真には、答えとして犬というラベルになります。
今回は指を曲げた写真を使って、1〜5をいうラベルを付けています。

LobeではWebカメラから取り込む機能があります。
これは便利なのですが、試してみた限りではトレーニングがはじまらない(何らかの問題がある)状態になってしまいました。
そのため、別途カメラで撮影した写真を使って、フォルダ毎(1〜5という名前)に教師データになる写真を保存しました。
これをデータセットといい、Lobeでまとめて取り込めます。
恐らくこれが一番手軽で簡単でした。

写真が大きいと学習に時間がかかります。
そのため、今回は幅300pxで行っています。
データセットをインポートして、自動的にトレーニングが開始されればOKです。
微調整
学習が終わると、正しく学習できたものと失敗したものとが表示されます。
ここでは予想が外れたデータに対して改めてラベリングを行うことで、より学習精度を高められます。
ただし、あまり同じデータで学習を行うと過学習と呼ばれる状態になり、
学習データに対しては精度が高くとも、任意のデータにしては精度が悪くなる状態になります。

Lobeで過学習がどれくらい考慮されているかは分かりませんが、筆者の環境では4本指に対する精度が悪いままでしたが、他は精度を上げられました。

試す

微調整が終わったら、実際に試してみます。
写真、またはWebカメラの入力データが使えます。
期待した通りのラベルが返ってくれば成功です。
もし間違っていても、この時点で新しいデータを使ってトレーニングが行えます。

エクスポートする
できあがったモデルはTensorflowやONNXなど様々な形式でダウンロードできます。
また、PowerAppsなどとの連携もできるようです。

今回はTensorflow.js向けにエクスポートしています。

5本指判定を行うモデルの場合、4MBのファイル24個できあがりました。
シンプルなモデルであれば、もっと小さいでしょう。

注意点
LobeはWindowsとmacOSに対応
Lobeの公式サイトは https://www.lobe.ai/ になります。ここからWindows版とmacOS版のLobeがダウンロードできます。

なお、macOSのM1/M2チップには対応していないとのことです。試した限りでは起動しますが、動くわけではなさそうです。
Lobe doesn’t work on M2? : Lobe
そのため、基本的に利用する際にはWindows版を使うのが良さそうです。
画像分類モデルが作れます
Lobeが対応しているのは、画像分類(カテゴライズ)になります。例えば写真に写っているのが猫なのか犬なのか判断したり、グーチョキパーを判定するといった具合です。ラベルは、1つしか返ってきませんので、「屋外 女性 リンゴ」といった複数ラベルが返ってくるようなモデルは作成できません。
若干不安定です
使ってみた限りですが、起動して放置していると突然終了してしまうことがありました。どういうタイミングで落ちるのかが分からないため、注意が少し必要です。なお、作成したプロジェクトはそのままだったので、最初からやり直しと言ったことはありません。
元々プレビュー版という位置づけなのですが、プロジェクトとして最近は更新されていないため、Redditでは終了したプロジェクト扱いになっているようです。ただ、Redditでは質問に回答しているという状況です。
例えば、Microsoft公式サイトのドキュメントにも記載があります。今後も開発継続が期待できます。
Lobe の画像分類モデルの概要 - AI Builder | Microsoft Learn
教師データの品質が不明
写真データを取り込むと分かりますが、問題ない写真の場合は、Lobeの学習が自動的に開始されます。問題があると、開始されません。ただ、その際には「写真に問題があります」と表示されます。問題がある写真がどれか分からないため、試行錯誤が必要となります。
まとめ
Lobeを使えば、写真分類を行う機械学習モデルをコーディングなしで作成できます。
注意点でも書いたように幾つかの癖もありますが、慣れれば問題ないでしょう。
AI/機械学習を用いたMonacaアプリを開発する際に、ぜひ使ってみてください。