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

ストーリー

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%と表示されました。

このように、複雑なプログラミングなしでモデル作成から判別まですることができます。
次はこれをつかってアプリつくってみます。乞うご期待!


『 機械学習 』Article List
Category List

Eye Catch Image
Read More

Androidに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

AWSに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Bitcoinに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

CentOSに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

dockerに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

GitHubに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Goに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Javaに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

JavaScriptに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Laravelに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Pythonに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Rubyに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Scalaに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Swiftに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Unityに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Vue.jsに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Wordpressに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

機械学習に関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。