Mais conteúdo relacionado Semelhante a Einsteinvision - object detection を試してみよう (20) Mais de Salesforce Developers Japan (20) Einsteinvision - object detection を試してみよう1. 画像認識 AI 機能 Einstein Vision
Object Detection を試してみよう
2018年1⽉11⽇
株式会社セールスフォース・ドットコム
4. 話の流れ
Salesforce Einstein と Einstein Vision - Object Detection 概要
サンプルアプリのデモ
データセット・モデルの作り⽅
データセット作成⽀援ツールのご紹介
各種情報・全体まとめ
1
2
3
4
5
ü 最後に質問への回答の時間を設けます
ü 質問はいつでも送ってもらってOKです
7. 様々な製品で実装・提供される Einstein 機能
Marketing Cloud
Einstein Engagement Scoring
Einstein Segmentation
Einstein Vision for Social
Service Cloud
Einstein Bots
Einstein Agent
Einstein Vision for Field Service
Sales Cloud
Einstein Forecasting
Einstein Lead & Opportunity Scoring
Einstein Activity Capture
Commerce Cloud
Einstein Recommendations
Einstein Search Dictionaries
Einstein Predictive Sort
Salesforce Platform
Einstein Prediction Builder
Einstein Vision & Language
Einstein Discovery
Community Cloud
Einstein Answers
Community Sentiment
Einstein Recommendations
Austin Buchan
CEO, College Forward
8. 画像認識の Vision と⾃然⾔語処理の Language
Web API サービスとして機能を提供
Einstein Platform Services (Vision & Language)
https://einstein.ai
Einstein Vision Einstein Language
• Einstein Image Classification
Ø ⼊⼒画像全体を解析し、仕分けを⾏う
• Einstein Object Detection
Ø ⼊⼒画像から、物体を検出する
• Einstein Sentiment
Ø ⼊⼒⽂章の感情を識別する
• Einstein Intent
Ø ⼊⼒⽂章をカテゴリ分けする
まだ
英語のみ
今⽇は
この話
9. Einstein Vision の⼆つの機能の違い
画像全体を⾒て仕分けする Image Classification と物体を検出する Object Detection
Image Classification (画像仕分け) Object Detection (物体検出)
• レモン
• みかん
• トマト
• にんにく
Image Classification
モデル
画像
仕分け
トマトの確率が
99%
⼊⼒
出⼒
Einstein Vision
• レモン
• みかん
• トマト
• にんにく
Object Detection
モデル
物体
検出
⼊⼒
出⼒
Einstein Vision
⼊⼒画像全体から、モデルが持つどのラベルの特徴がどれくらい
現れているかを返す
⼊⼒画像の中から、モデルが持つどのラベルの特徴がどこに検出
されたかを返す
• X1,Y1にみかん:68%
• X2,Y2にトマト:95%
• X3,Y3ににんにく:90%
10. 提供形態は Web API サービス
REST API を通して画像認識 AI 機能を利⽤してもらう (GUIが無い)
Einstein Vision
仕分け/
物体検出
Food
Image
Classifier
General
Image
Classifier
商品検出
プリセットの
モデル
独⾃作成の
モデル
REST APIのエンドポイント
(https://api.einstein.ai/[バージョン]/vision/[コマンド])
HTTPリクエスト
・OAuthトークン
・画像データ
・モデル指定
HTTPレスポンス
・結果(JSON形式)
Heroku や Lightning Platform で
UIとなるアプリを作成
利⽤者
お客様/パートナー様での開発が必要 Einstein Vision が提供
12. {
"probabilities": [
{
"label": "Alpine - Oat Cereal",
"probability": 0.98904955,
"boundingBox": {
"minX": 305,
"minY": 130,
"maxX": 390,
"maxY": 262
}
},
{
"label": "Alpine - Oat Cereal",
"probability": 0.97531146,
"boundingBox": {
"minX": 394,
"minY": 259,
"maxX": 485,
"maxY": 399
}
},
(以下省略)
例) Object Detection の使い⽅ (2/2)
HTTP のレスポンスとして検出したラベル・確度・位置が返される
13. この章のまとめ
• "Einstein" とは、Salesforce が提供する各製品の様々な AI 機能群
• Salesforce Platform 領域の Einstein 機能として、Einstein Platform
Services (Vision & Language)を提供
• Einstein Vision - Image Classification は、画像全体を⾒て仕分けを⾏い、
Object Detection は画像内から対象物体を⾒つけ出す
• Web API サービスとして機能を提供
17. アプリの仕組み
LINE Bot で Salesforce ロゴ画像を検出
画像選択・
送信
受信データ
表⽰
データ受信
認証キー取得
データ送信・
結果取得
画像編集・
結果送信
認証処理
物体検出
LINEアプリ
サーバーアプリ
(Bot 本体)
Einstein
Object Detection
データ転送
データ転送
アインシュタインくん
(LINE Bot)
独⾃の検出
モデルを構築
20. ⾔葉の定義
①ラベル / ②データセット / ③トレーニング / ④モデル
物体検出
④
モデル
②
データセット
③
トレーニング
{
"label":"tomato",
"probability":0.97663295,
"boundingBox": {
"minX": 54,
〜中略〜
}
ラベルと抽出された
特徴の集合体
ラベルとトレーニング
(学習)⽤画像の集合体
①
ラベル
特徴適合度
Einstein Vision
ZIP
データセット作成⽤の
位置情報ファイルと
学習⽤画像データの実体
23. ラベルの定義
12種類(商品)のティーバッグが存在する → ラベルを12個定義
1. Twinings_LadyGrey
2. Twinings_PrinceOfWales
3. Twinings_EarlGray
4. Twinings_Darjeeling
5. Twinings_CeylonOrangePekoe
6. Twinings_JasminEarlGrey
7. Twinings_OrangeEarlGrey
8. Lipton_ZestyEarlGrey
9. Lipton_IncredibleDarjeeling
10. Lipton_PureNuwaraEliya
11. Lipton_FineCeylon
12. Lipton_FragrantEnglishBreakfast
25. アノテーション(位置情報)の定義
⽤意した学習⽤画像データそれぞれに対して、ラベルがどの位置にあるかを定義
"IMG_1024.JPG","{""label"":""Twinings_Lady
Grey"",""y"":181,""x"":155,""height"":
372,""width"":
439}","{""label"":""Twinings_OrangeEarlGrey"",
""y"":898,""x"":587,""height"":297,""width"":
415}","{""label"":""Lipton_FragrantEnglishBreak
fast"",""y"":907,""x"":1402,""height"":
300,""width"":
407}","{""label"":""Lipton_FineCeylon"",""y"":
537,""x"":1392,""height"":357,""width"":
418}","{""label"":""Lipton_PureNuwaraEliya"",""
y"":559,""x"":992,""height"":338,""width"":
404}","{""label"":""Lipton_IncredibleDarjeeling
"",""y"":183,""x"":1389,""height"":
348,""width"":
410}","{""label"":""Lipton_ZestyEarlGrey"",""y"
":193,""x"":992,""height"":346,""width"":
388}","{""label"":""Twinings_JasminEarlGrey"","
"y"":906,""x"":1010,""height"":292,""width"":
394}","{""label"":""Twinings_CeylonOrangePekoe"
画像1枚につき1⾏のCSV形式
27. Zipファイルのアップロード&トレーニング実⾏
画像枚数&ラベル定義数にもよるが、トレーニング(モデル作成)にやや時間がかかる
Zipファイルのアップロード トレーニング実⾏
curl -X POST -H "Authorization: Bearer <TOKEN>"
-H "Content-Type: multipart/form-data"
-F "data=@dataset_TeaBags.zip"
-F "type=image-detection" https://api.einstein.ai/v2/
vision/datasets/upload
curl -X POST -H "Authorization: Bearer <TOKEN>"
-H "Content-Type: multipart/form-data"
-F "name=TeaBags"
-F "datasetId=[DATASET ID]" https://api.einstein.ai/
v2/vision/train
{
"id":1033445,
"name":"TeaBags_20180110",
"createdAt":"2018-01-10T12:56:40.000+0000",
"updatedAt":"2018-01-10T12:56:40.000+0000",
"labelSummary": {
"labels":[]
},
"totalExamples":0,
"available":false,
"statusMsg":"UPLOADING",
"type":"image-detection",
"object":"dataset"
}
{
"datasetId":1033445,
"datasetVersionId":0,
"name":"Tea Bags",
"status":"QUEUED",
"progress":0,
"createdAt":"2017-12-24T11:54:41.000+0000",
"updatedAt":"2017-12-24T11:54:41.000+0000",
"learningRate":0,
"epochs":0,
"queuePosition":1,
"object":"training",
"modelId":"NXCIBF6VL3ZZADXCFSXHE2PIOY",
"trainParams":null,
"trainStats":null,
"modelType":"image-detection"
}
データセット準備中の状態。
取得したデータセットIDを
使って、準備状況確認の
APIを呼び出して状況確認
実⾏キューに⼊った状態。
モデルIDを使って、トレー
ニング状況確認のAPIを呼
び出して進捗確認
35. 参考) Heroku での Einstein Vision アカウント取得
アドオンを追加することで、アカウント情報を取得できる
①Heroku アプリの作成 ②Einstein Vision アドオンの追加 ③アカウント情報を取得
Heroku でアプリケーション(枠)
を新規に作成する
※既存のアプリでも可
作成したアプリケーションの
「Resource」タブに遷移
し、"Add-ons"セクション
で"Einstein Vision"を検索・選択
する
「Starter - Free」を選択し
「Provision」ボタンをクリック
する
「Settings」タブの"Congfig
Variables"セクションで「Reveal
Config Vars」ボタンをクリックす
ると必要なアカウント情報(IDと
KEY)が確認できる
36. 参考) Token の取得
curl コマンドなどで必要になる TOKEN は、専⽤サイトで取得できる
https://api.einstein.ai/token
① 払い出されたIDとKeyを貼り付ける
② 有効時間を設定する
③ 「GET TOKEN」ボタンを押す
④ 出⼒されたTOEKNをコピーする
■例⽂
curl -X GET -H "Authorization: Bearer <TOKEN>"
https://api.einstein.ai/v2/apiusage
↓
■実⾏⽂
curl -X GET -H "Authorization: Bearer
CQIJJ2HD4NL2JUT3STLUPWYQIENPTHJEHYOUXBFFZNARW2GPTWVUO7
7MDHYRSBQ4LQ23ON3FEFAX2NBAEULIV72YFOIVAMIEXVGKSEY"
https://api.einstein.ai/v2/apiusage
TOEKN の利⽤例
37. 課⾦体系・ライセンス価格
仕分け・物体検出を実⾏する API を⽉に何回まで呼び出せるか、によって変わる
プラットフォーム
⽉間の仕分け・物体検出実⾏
API 呼び出し回数上限★1 価格
Lightning Platform 1,000★2 無償
1,000,000 お問い合わせ
Heroku 1,000★2 無償
10,000 $40/⽉
250,000 $850/⽉
1,000,000 $3,400/⽉
★1: 学習⽤画像データの枚数やデータセット・モデル数、各種指⽰ API 呼び出し回数はライセンス種類に依存しない
★2: 2018年2⽉から2,000に引き上げ予定
41. 全体のまとめ
• Einstein Vision - Object Detection は静⽌画像の中から物体を検出し、その位
置情報を返す Web API サービス
• 独⾃のモデルを作成するには、学習⽤画像データに加えて、対象物体の位置情
報を記した annotations.csv ファイルが必要
• 学習⽤画像データは、実際に検出させたい画像に極⼒似せたものを使⽤し、
対象物体のサンプル(定義数)が100以上になるように
• 実際の要件に適応できそうか、必ず事前検証を実施