ランサーズ等のサービスを開発・運用する中で得た知識やノウハウを紹介しています。

Labels:  ツール/ライブラリ 投稿者:masaaki

Salesforceの人工知能、Einstein (アインシュタイン)の画像認識してみた

こんにちは。土屋です。

現在、ランサーズ社内の業務フローや会計周りの開発を担当しています。
今回はSalesforceの人工知能、アインシュタインについてです。

SalesforceのAI、Einstein (アインシュタイン)は、2017年02月現在、まだ日本では利用できません。
米国圏のみで公開され、リードや商談をスコアリングして営業メンバーをサポートしています。
ただし日本ではAPIパイロット版として画像認識が利用可能となっています。

アインシュタインAPIで画像認識するための手順

まずはサービス登録します。

Einstein Predictive Services
https://api.metamind.io/signup
サインアップが終わると証明書(pemファイル)をダウンロードできます。

先ほどの証明書を使ってトークンを取得します。
自分はトークンの有効期限(Expiration in Mins)を1500にしました。どのくらい延ばせるんですかね。
https://api.metamind.io/token

これで準備が整いました。

画像認識方法

curlで打ってJSONで返ってきます。URL上の画像でもローカルのファイルでも認証可能です。

URLの画像を指定

curl -X POST -H "Authorization: Bearer <トークンID>" -H "Cache-Control: no-cache" -H "Content-Type: multipart/form-data" -F "sampleLocation=<画像のURL>" -F "modelId=GeneralImageClassifier" https://api.metamind.io/v1/vision/predict

ローカルファイル画像を指定

curl -X POST -H "Authorization: Bearer <トークンID>" -H "Cache-Control: no-cache" -H "Content-Type: multipart/form-data" -F "sampleContent=@<ローカルファイルフルパス>” -F "modelId=GeneralImageClassifier" https://api.metamind.io/v1/vision/predict

認証制度を検証してみた

まずはこの画像から。きっと米国圏のモノは認識率高いはずですよね。ただ、全体を写したものではないので難しいかもしれません。

 

curl -X POST -H "Authorization: Bearer トークンID" -H "Cache-Control: no-cache" -H "Content-Type: multipart/form-data" -F "sampleContent=@/tmp/pizza.JPG" -F "modelId=GeneralImageClassifier" https://api.metamind.io/v1/vision/predict
{
    "object": "predictresponse", 
    "probabilities": [
        {
            "label": "pizza, pizza pie", 
            "probability": 0.8296536
        }, 
        {
            "label": "French loaf", 
            "probability": 0.08105719
        }, 
        {
            "label": "burrito", 
            "probability": 0.024039445
        }, 
        {
            "label": "bagel, beigel", 
            "probability": 0.020101538
        }, 
        {
            "label": "dough", 
            "probability": 0.008420182
        }
    ]
}

おぉぉぉ!!やりました。ピザ82.9%です。さすがアインシュタイン!!

次はこの画像。犬は何%で認識されるでしょうか。

{
    "object": "predictresponse", 
    "probabilities": [
        {
            "label": "Chihuahua", 
            "probability": 0.44336274
        }, 
        {
            "label": "Pembroke, Pembroke Welsh corgi", 
            "probability": 0.11063137
        }, 
        {
            "label": "Cardigan, Cardigan Welsh corgi", 
            "probability": 0.05807279
        }, 
        {
            "label": "Great Pyrenees", 
            "probability": 0.037888717
        }, 
        {
            "label": "tennis ball", 
            "probability": 0.033948038
        }
    ]
}

チワワ44%、ウェルシュ・コーギー・ペンブローク11%、ウェルシュ・コーギー・カーディガン5.8%。この犬、ウェルシュ・コーギー・ペンブロークなので惜しい!!
まさか犬種で回答くるとは。テニスボール3.3%も気になりますね。

最後。我らがランサーズ君。アインシュタインはランサーズ君をご存知でしょうか。

{
    "object": "predictresponse", 
    "probabilities": [
        {
            "label": "balloon", 
            "probability": 0.21734992
        }, 
        {
            "label": "mortarboard", 
            "probability": 0.08641696
        }, 
        {
            "label": "street sign", 
            "probability": 0.062016807
        }, 
        {
            "label": "wall clock", 
            "probability": 0.05705674
        }, 
        {
            "label": "bathing cap, swimming cap", 
            "probability": 0.052012373
        }
    ]
}

バルーン21.7%、角帽8.6%、道路標識6.2%、時計5.7%、水泳帽5.2%。。。
アインシュタイン、、、まだまだ勉強不足ですね。

いかがでしたでしょうか。
面白いのでみなさん試してみてください。

文献

Introduction to the Salesforce Einstein Predictive Vision Service (Pilot)

https://metamind.readme.io/v1/docs

ランサーズではサービスを成長させてくれるエンジニア、デザイナーを募集しています!
ご興味がある方は、以下URLよりご応募ください。

PHPエンジニア
Rubyエンジニア
フロントエンドエンジニア
インフラエンジニア
新卒エンジニア
その他採用情報

関連記事

thumbnail
コンソールで git のコミットを peco で検索して emacs に表示する

森です。わりと最近書いた便利なシェルスクリプトのご紹介です。 要件 私たちのプロジェクトは、Git のコミットがある程度きれいです。個々のコミットやプルリクがクックブックのように利用できます。コミットメッセージをキーにコミットを検索して、その内容を表示したいで …

thumbnail
ユーザーが簡単にHTMLを入力できるWYSIWYGエディタ ベスト3

ランサーズでは、現在、Webエンジニアを募集しています。 詳しくは、募集要項をご覧下さい。 こんにちは。リートの satoshi です。 前回の投稿より、少し時間が空いてしまいましたが、今回はWYSIWYGエディタについてご紹介したいと思います。 WYSIWY …

5分で完了!Webサイトに簡単にチュートリアルが作れるIntro.jsの使い方

こんにちは! ランサーズ株式会社の開発部でエンジニアをしております、神庭(かんば)です。 最近、SEOが楽しくて仕方がないお年頃です!   先日、サービスの操作説明をするために、操作マニュアル(チュートリアル)ようなものを作りたいって要望があり、少し …