LoginSignup
2
2

More than 3 years have passed since last update.

Custom Vision がさらに簡単&ローカル作成可能に!Lobe でカスタム画像分析モデルを作成してみよう

Last updated at Posted at 2020-12-06

Cognitive Services Custom Vision は充分簡単にカスタム画像認識 (クラス分類(Classification) & オブジェクト検出(Object Detection)) モデルが作成できてしまうサービスなのですが、これをさらにカンタンにした&アプリとしてローカル環境で作成~エクスポートできるのが、Microsoft Lobe です。

Lobe とは

Lobe の利用シナリオとして、以下のようなサンプルが提示されています

  • Plant Species (庭の植物を見分ける)
  • Hand Gestures (数のカウント、じゃんけんもできそう?)
  • Personal Trainer (筋トレポーズ、ヨガももちろんできそう)
  • Emotional Reactions (顔の表情)
  • Interactive Painting (色の検出)
  • :

20201206_Lobe_Examples.png

実は Lobe のスゴイところは、直接カメラ映像(動画)を取得して自動で画像を切り出し、ラベル付けができるところです。

20201206_Lobe_CameraDemo01.png
20201206_Lobe_CameraDemo02.png

実際に Lobe をダウンロードするところから、学習データ(画像) を覚えさせて TensorFlow にエクスポートして利用してみるまで (もちろん無料!) の手順を紹介します。今回はヨガのポーズを分類するモデルを作成してみます。

準備

特にマイクロソフトアカウントとかAzure サブスクリプションは必要ありません。初期登録 (名前、メールアドレス) のみで利用できます。(※ 2020年12月現在)

Lobe の登録 & アプリのダウンロード

まず Lobe のトップページ (https://lobe.ai/) を参照して、[Download] をクリックします。
20201206_Lobe_WebTop.png

Join Beta から登録を行います。Japan を選択すると日本語ローカライズの可能性が高まるかも?!
登録情報を入力したら [Download] をクリックして Lobe をダウンロードします。
20201206_Lobe_SignUp.png

ダウンロードした Lobe.exe (← Windows の場合?) をクリックして、ローカル環境にインストールします。

Lobe で画像分析モデルを作成

新規プロジェクト作成

Lobe を起動します。New Project をクリックして、新規プロジェクトを作成します。

20201206_Lobe_01.png

学習データのロード~自動でモデル作成

画面右上の [Import] をクリックして、学習データとなる画像を選択します。
画像認識モデルを作成するには 1 タグあたり 5 枚以上の画像が必要というところが既に Custom Vision っぽい :)

20201206_Lobe_02.png

[Dataset] を選択すると、分類したフォルダーごと読み込みできるのはとても便利!

20201206_Lobe_03.png

Yoga というフォルダーを作成し、その中にポーズ名(Cobra, downdog...)をつけたフォルダーに画像を格納しておきます。Yoga フォルダーを指定します。

20201206_Lobe_04.png

画像を分類するタグ名はフォルダー名そのまま or カスタムもできます。今回はそのままで。

20201206_Lobe_05.png

プロジェクト名も親フォルダーの名前(Yoga)に設定されました。
画像が読み込まれ、自動で学習 (Training) が実行されます。

20201206_Lobe_06.png

分析モデルの確認

[Train] をクリックすると、作成した分析モデルの精度が確認できます。

20201206_Lobe_07.png

分析モデルのテスト

Play をクリックして、学習データとして使っていない画像で分析モデルのテストを行います。

20201206_Lobe_08.png

テストしたい画像を Drag & Drop するか、Import をクリックして画像を選択すると、画像の分析結果が表示されます。

20201206_Lobe_09.png

分析モデルのエクスポートとサンプルコード実行

TensorFlow | TensorFlow Light にエクスポート、または Local API として利用できます。
ひとまず TensorFlow でダウンロードしてみます。

左上の Ξ をクリックして、表示される Export をクリックします。

20201206_Lobe_10.png

Export のメニューから TensorFlow を選択します。

20201206_Lobe_11.png

20201206_Lobe_12.png

ローカルに <プロジェクト名> TensorFlow というフォルダーが作成されます。
example フォルダーにサンプルコード(python) も一緒に作成されます。

20201206_Lobe_13.png

example/readme.md に書かれている手順を参考にサンプルコードを実行してみます。

TensorFlow 1.15.3 を利用するため、実行するには Python 3.7.* が必要です。

tf-venv という名前で Python 仮想環境を作ります。(下記 Windows の場合)

python -m venv tf-venv

// Python 3.7 がデフォルト環境でないなら
py -3.7 -m venv tf-venv

tf-venv を起動します。

tf-venv/Scripts/activate

pip をアップグレードした後、example/requirements.txt に記載されているモジュールをインストールします。

(tf-venv) python -m pip install --upgrade pip
(tf-venv) python -m pip install -r example/requirements.txt

requirements.txt からインストールするモジュールは以下の2つです。
- tensorflow==1.15.3
- pillow==7.2.0

無事環境が作成出来たら、サンプルコード(tf_sample.py) を実行してみます。
test というフォルダーを作成して、テスト用画像を配置して指定 (test/warrior2.jpg) しています。

(tf-venv) python example/tf_example.py test/warrior2.jpg

TensorFlow v1.* を利用している Warning が最初出力されますが、Predicted 以下が分析モデルで画像を推定した結果です。

WARNING:tensorflow:From example/tf_example.py:40: load (from tensorflow.python.saved_model.loader_impl) is deprecated and will be removed in a future version.
Instructions for updating:
This function will only be available through the v1 compatibility library as tf.compat.v1.saved_model.loader.load or tf.compat.v1.saved_model.load. There will be a new function for importing SavedModels in Tensorflow 2.0.
Predicted: {'Prediction': 'warrior', 'Confidences': [0.02098606899380684, 0.00528041971847415, 3.6378631193656474e-05, 0.0019086095271632075, 0.00045342574594542384, 0.004871818702667952, 0.9664632081985474]}

Prediction の結果が warrior だとタグ名で出力されます。
Confidences の数値は各タグ(出力順)の推定値になります。(warrior=>0.9664632081985474)

タグの出力順は、分析モデルの情報が記述された signature.json に記載されています。

signature.json
{
    "doc_id": "********-****-****-****-************", 
       :
    "inputs": {
       :
    }, 
    "outputs": {
       :
    }, 
    "tags": ["serve"], 
    "classes": {
        "Label": ["cobra", "downdog", "headstand", "plough", "tree", "triangle", "warrior"]
    }, 
    "filename": "saved_model.pb"
}
2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2