清水理史の「イニシャルB」
誰でもノーコードで画像判別の機械学習モデルを作成できる「Lobe」
2021年4月12日 06:00
「Lobe」は、Microsoftがベータ版として公開している無料の機械学習モデル作成ツールだ。GUI操作可能なWindows版のアプリで、最低5枚の画像ファイルを用意するだけで画像判別が可能になる。
その基本的な使い方と、2020年末に続き、この3月にも再び実施されたバージョンアップで追加された新機能を実際に試してみた。
Lobeとは何か?
Lobeは、機械学習に必要なトレーニングやモデルの作成を自動的に実行できるアプリだ。
機械学習についての知識がなくても、画像をドラッグしたり、画面上の「Label」「Train」「Use」というボタンを使い分けたりするだけで、簡単に画像判別の機械学習モデルを作成することができる。
これまでの機械学習は、Pythonなどを利用したり、クラウドサービスを利用したりする必要があったが、Lobeの場合、コードは不要かつローカルで動作するため、トレーニングやモデルの作成といった機械学習のプロセスを意識することなく、誰でも簡単に画像の判別が可能になっている。
今や、画像処理の分野は、スマートフォンの写真管理アプリや検索エンジンなど身の回りでも当たり前に使われているが、Lobeによって、使う側ではなく作る側として、誰でも機械学習を楽しめるのがメリットだ。
最初の公開は2020年10月だったのだが、12月のバージョンでUSB接続のウェブカメラを使ったリアルタイム判別や、TensorFlow.jsなどのモデルのエクスポートに対応。さらに3月のアップデートで、「Lobe Connect」と呼ばれるローカルAPIのサポート、iOSやAndroid、REST Server向けのプロジェクトを作成するためのスタータープロジェクトの提供、パフォーマンスの改善などが実施され、より使いやすく進化した。
具体的に何ができるのかは、Lobeのウェブサイトを見てもらうのが手っ取り早い。
Overviewでは、植物の種類を判断したり、ペインティングの色を判断したり、マスクをしているかどうかを判断したりする動画が再生される。
以下のウェブサイトは、Lobeで作成したモデルをどのように活用するかのいい例だ。Raspberry Piのカメラを使ってゴミの分別をサポートできる。実際の制作には、Raspberry Piおよびカメラモジュール、ブレッドボードとLEDなどが必要だが、わずか90行のコード(しかもほとんどはボタン操作とLED表示のためのもの)で、画像判別デバイスが作成できるのだ。
基本的な使い方
Lobeの使い方は非常に簡単だ。
まずアプリをダウンロードする。「Lobeのウェブサイト」で「Download」ボタンをクリックし、メールアドレスを登録してベータプログラムに参加することで、インストーラーをダウンロードできる。
完全にローカルで動作する上、依存関係なども特に必要ないので、単にWindowsマシンへインストールを行なうだけで、すぐに使えるようになる。
試しに、料理を判断させるモデルを作ってみよう。インターネット上から画像検索などで適切な画像ファイルを入手し、以下のように「foods」フォルダーの「chinese」フォルダーと「french」フォルダーへ、それぞれ5枚以上の画像を保存しておく。
これがトレーニングやモデル作成のベースになるデータセットだ。
1枚ずつ学習させていくこともできるが、最初はフォルダーにいくつかの画像を用意しておいて、トレーニングさせた方が簡単だ。
準備ができたら、Lobeでデータセットをインポートする。右上の「Import」ボタンから用意した(ここでは「foods」)フォルダーを選択すると、すぐにトレーニングが実施される。
この例の場合では、画像から指定されたラベルを判断することが難しい上、トレーニング用のデータも少ないため、認識率はあまり高くない。
精度を高めるには、さらにデータを追加してトレーニングを実施する必要がある。画像を追加し、ラベルを設定していくと、どんどん精度が高くなっていく。
最終的には、良データ(識別しやすいデータ)を大量に集めることが必要なので、実質的な難関はその素材集めに尽きるのだが、以下のウェブブラウザー用拡張機能などを利用すると、このトレーニングがだいぶ楽になる。
開発者モードで動作させる必要があって度々セキュリティ警告が表示されるが、ウェブブラウザーに表示された画像を、その場で次々にラベル付けできるので、トレーニングの際だけ使うには便利だ。
GitHubからZIPをダウンロードして展開、さらに「LobeBrowserExtension.zip」を展開して任意のフォルダーに保存する。これをMicrosoft Edgeの開発者モードから「展開して読み込み」を選んで追加する
モデルを活用する
トレーニングしたモデルを使う方法はいくつかある。
シンプルなのは、「Use」から新たな画像を追加する方法だ。画像をドラッグすると、自動的にモデルを使って画像が判断される。このとき、ラベルが間違っている場合は、その場でトレーニングを実施できる。
もう1つは、USBカメラを使う方法だ。「Use」で画面上部の「Camera」を選択すると、USBカメラ(OBSの仮想カメラなども可能)を使って撮影した映像を元に、被写体を判別できる。
Lobeのサイトでは、ジャンケンなどの例が提示されているが、映像のように動きのあるものでも、その場その場で素早く判断できるので面白い。
最後は、「Export」で別の環境からモデルを利用する方法だ。「TensorFlow」「TensorFlow.js」「TensorFlow Lite」「ONNX」のファイル形式で出力することで、別のPCやサーバー、クラウド環境、Raspberry Piなどでモデルを利用できる。
今回のバージョンでは、この4つのファイルに加えて、同社がGitHub上で公開しているスタータープロジェクト(REST Server、ウェブ APP、iOS App、Android APP)のコードを利用し、作成したモデルを置き換えることで、すぐに利用することも可能だ。
また、「Lobe Connect」と呼ばれるローカルAPIとしても利用できる。「Lobe」でプロジェクトを開くと、自動的にローカルホスト上で動作するREST APIサーバーとしても稼働するようになっており、「Lobe Connect」で表示されたエンドポイントのURLに対してリクエストを投げれば、モデルを利用した判別が可能となる。
例えば、Postmanを使って、以下のようにBASE64でエンコードした画像を投げると、ラベルごとの確率が返ってくる。これを利用して独自のアプリを作ったり、RPAツールから呼び出して処理に活用したりすることなども可能だ。
高度な活用が可能
以上、MicrosoftのLobeを使ってみたが、入り口の敷居がとても低いにもかかわらず、作成したモデルの応用範囲が広く、かなり実践的な活用ができるアプリという印象だ。シンプルに画像を食わせて遊ぶだけでも楽しいので、一度、試してみることをお勧めしたいところだ。