ストーリー
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でアプリを作る
Heroku公式サイト http://heroku.com/
Herokuは、アプリケーションを実行するPaaS(Platform as a Service)です。Ruby on Railsをつかっているひとならおなじみですが、Einstein VisionはHerokuのAdd-onとして提供されているので簡単に使うことが出来ます。早速サインアップしてアプリをつくってみましょう。
Resourceタブでアドオンを追加
無事にアプリを作れたら、設定画面の「Resource」タブで「Einstein」アドオンを追加します。検索ボックスに「Einstein」と入力すると確認画面が表示されます。
Plan name は「Starter - Free」とし、「Provision」をクリック。
無事アドオンが追加されました。
SettingsタブでACCOUNT_IDとPRIVATE_KEYを取得
次に、設定画面の「Settings」タブを開きます。
Config Variables項目で、「Reveal Config Vars」をクリック。
ここで表示される ACCOUNT_ID
とPRIVATE_KEY
はこのあとすぐ使うので控えておきましょう。
Einstein VisionのTOKENを生成
Generate an OAuth Tokenページにアクセス。
- 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ファイルの準備
任意の名前のフォルダ内に、「Astro」「Einstein」というフォルダをそれぞれ作ります。このとき、フォルダ名がそのままラベル名になるので適当な名前ではなくラベルになりうる名前をつけてください。
準備ができたら、フォルダごとzip圧縮します。
アップロード
ターミナルを開き、以下のコマンドを実行してzipファイルをアップロードします。
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
黄色枠部分のID(DATASET_ID
)が次に必要になるので控えておきましょう。
学習開始
nameの部分にこのモデルの名前を記載します。
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
水色の枠にあるmodelId
(モデルID)が今後必要になるので控えておきましょう。現在学習のプロセスは0%となっています。
確認
curl -X GET
-H "Authorization: Bearer <TOKEN>"
-H "Cache-Control: no-cache"
https://api.einstein.ai/v2/vision/train/<モデルID>
このとき、process
項目が1(100%)になっていれば完了です。完了すると、status
が"SUCCEEDED"
となります。
STEP.3 判別してみる
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
Astroである確率が99.9%と表示されました。
このように、複雑なプログラミングなしでモデル作成から判別まですることができます。
次はこれをつかってアプリつくってみます。乞うご期待!