Heroku
Salesforce
機械学習
AI
Einstein

Salesforceの画像認識AI「Einstein Vision」でアストロくんとアインシュタインを判別させてみた

More than 1 year has passed since last update.


ストーリー

image.png

2014年4月に誕生したアストロくん。2016年7月に誕生したアインシュタイン。

どちらもみんなから愛されるSalesforceの公式キャラクターですが、目の形や動きが似ているのでどっちがアストロなのかたまにわからなくなります。

そこで、アインシュタイン本人に、アストロくんとアインシュタインのどちらなのかを聞いてみました。

ちなみに、アストロくんは親しみを込めて「くん」付けしていますが性別はありません。


Einstein とは?

Salesforceが提供している人工知能群。そのなかでも現在Salesforce Platformで提供されているものは、Einstein VisionとEinstein Languageの2つです。この2つをまとめて「Einstein Platform Services」と呼びます。


Einstein Vision

Einstein Visionには2種類あります。

名称
説明

Image Classification
画像全体をみてラベルにより仕分けをおこなう。

Object Detection
画像内で複数の物体認識をおこなう。(執筆地点ではパイロット版)

今回はこのなかでも「Image Classification」の機能をつかってみることにします。

Einstein Visionは、面倒なプログラミングなしで誰でも機械学習の機能を使うことができるという思想で作られています。Einstein Visionを使うことで誰でもモデルを作成することができます。


準備物


  • AstroとEinsteinの写真(計45枚以上)

  • Herokuアカウント(無料版でOK)


STEP.1 HerokuアカウントとTOKENの取得


Herokuでアプリを作る

image.png

Heroku公式サイト http://heroku.com/

Herokuは、アプリケーションを実行するPaaS(Platform as a Service)です。Ruby on Railsをつかっているひとならおなじみですが、Einstein VisionはHerokuのAdd-onとして提供されているので簡単に使うことが出来ます。早速サインアップしてアプリをつくってみましょう。


Resourceタブでアドオンを追加

無事にアプリを作れたら、設定画面の「Resource」タブで「Einstein」アドオンを追加します。検索ボックスに「Einstein」と入力すると確認画面が表示されます。

image.png

Plan name は「Starter - Free」とし、「Provision」をクリック。

image.png

無事アドオンが追加されました。


SettingsタブでACCOUNT_IDとPRIVATE_KEYを取得

次に、設定画面の「Settings」タブを開きます。

image.png

Config Variables項目で、「Reveal Config Vars」をクリック。

image.png

ここで表示される ACCOUNT_IDPRIVATE_KEYはこのあとすぐ使うので控えておきましょう。


Einstein VisionのTOKENを生成

Generate an OAuth Tokenページにアクセス。

image.png


  • Email or Account ID:EINSTEIN_VISION_ACCOUNT_IDの値をペースト

  • Private Key:EINSTEIN_VISION_PRIVATE_KEYの値をペースト

  • ファイルを選択:選択しない(何もしない)

  • Expiration in Mins(このTOKENが無効になるまでの時間):60

入力を終えたら「GET_TOKEN」をクリックして、表示されたトークン(今後はEINSTEIN_TOKENと表記) をコピーしておきます。


STEP.2 モデルの作成


zipファイルの準備

スクリーンショット 2017-10-12 22.45.06.png

任意の名前のフォルダ内に、「Astro」「Einstein」というフォルダをそれぞれ作ります。このとき、フォルダ名がそのままラベル名になるので適当な名前ではなくラベルになりうる名前をつけてください。

準備ができたら、フォルダごとzip圧縮します。


アップロード

ターミナルを開き、以下のコマンドを実行してzipファイルをアップロードします。


Terminal

curl -X POST 

-H "Authorization: Bearer <TOKEN>"
-H "Cache-Control: no-cache"
-H "Content-Type: multipart/form-data"
-F "type=image"
-F "data=@<zipファイルまでのパスと名前>"
https://api.einstein.ai/v2/vision/datasets/upload/sync

image.png

黄色枠部分のID(DATASET_ID)が次に必要になるので控えておきましょう。


学習開始

nameの部分にこのモデルの名前を記載します。


Terminal

curl -X POST 

-H "Authorization: Bearer <TOKEN>"
-H "Cache-Control: no-cache"
-H "Content-Type: multipart/form-data"
-F "name=Astro and Einstein Model"
-F "datasetId=<DATASET_ID>" https://api.einstein.ai/v2/vision/train

image.png

水色の枠にあるmodelId(モデルID)が今後必要になるので控えておきましょう。現在学習のプロセスは0%となっています。


確認


Terminal

curl -X GET 

-H "Authorization: Bearer <TOKEN>"
-H "Cache-Control: no-cache"
https://api.einstein.ai/v2/vision/train/<モデルID>

image.png

このとき、process項目が1(100%)になっていれば完了です。完了すると、status"SUCCEEDED"となります。


STEP.3 判別してみる


Terminal

curl -X POST 

-H "Authorization: Bearer <TOKEN>"
-H "Cache-Control: no-cache"
-H "Content-Type: multipart/form-data"
-F "sampleContent=@<画像ファイル名>"
-F "modelId=<モデルID>"
https://api.einstein.ai/v2/vision/predict

では、実際に以下の画像をつかって判別してみます。

IMG_6917.JPG

image.png

Astroである確率が99.9%と表示されました。

このように、複雑なプログラミングなしでモデル作成から判別まですることができます。

次はこれをつかってアプリつくってみます。乞うご期待!