BluemixのAlchemyVisionAPIをRESTClientから実行してみた

# AlchemyAPIとは

> IBMは米国時間2015年3月4日、AlchemyAPIを買収したと発表しました。
> 
> Watsonの「無数の選択肢の中から統計的に確かなものを絞込んでいく」方法とは違い、AlchemyAPIは、深層学習型で「人間の脳の考え方に近い」方法で人工知能を実現しようとしています。
> 
> Watsonと同じサービス（テキスト解読、画像認識など）がAlchemyAPIにもありますが、Watsonにはない顔認識機能がAlchemyAPIにはあります。

（引用）https://www.change-makers.jp/technology/10112

ということで、AlchemyAPIはBluemixにおいて提供されている認知型人工知能で、AlchemyVisionAPIは、その中の画像認識機能です。

# AlchemyVisionデモ

http://vision.alchemy.ai/
![1.png](https://qiita-image-store.s3.amazonaws.com/0/122917/f040172a-537b-1a79-8267-a997a81c3ff2.png)

1. 「Try our demo」ボタンをクリックします。
2. デモの画像リストから選択するか、または任意の画像のURLを「Paste a url here」テキストボックスにペーストして「Try it!」ボタンをクリックします。
3. すると、人工知能の認識結果が表示されます。

![5.png](https://qiita-image-store.s3.amazonaws.com/0/122917/8a5fddb3-c481-206a-fa4a-a031f8df6064.png)

タグ、分類、人物であれば、性別、年齢、それぞれの確率、世界的な有名人の場合は名前や職業など、が結果として表示されると思います。

# AlchemyVisionAPIのリファレンス

https://watson-api-explorer.mybluemix.net/apis/alchemy-vision-v1
![2.png](https://qiita-image-store.s3.amazonaws.com/0/122917/fe36c3f4-fde8-dbec-776e-b493faa19832.png)
各APIの仕様だけでなく、パラメータを入力して実行し、jsonの結果を参照することもできます。

# AlchemyVisionAPIをRESTClientから実行してみる

このAPIを外部のアプリから実行することを想定した実験をしてみたいと思います。

AlchemyVisionAPIを利用するための方法は２つ。

- Bluemixのアカウントを新規登録して、AlchemyAPIをサービスに追加する方法
- AlchemyAPIのFree API Keyを取得する方法

後者の方が手軽なので、そちらの手順を解説します。

##1. Free API Keyを取得する

- 上記のデモと同じ[Alchemy Vision のサイト](http://vision.alchemy.ai/)にアクセスします。
- 右上の「Get a free API key」をクリックします。
- API keyの申請フォームに、目的、名。姓、メールアドレス、挑戦すること、を入力し、「I agree to...」にチェックを入れて「REGISTER FOR API KEY」をクリックします。
![3.png](https://qiita-image-store.s3.amazonaws.com/0/122917/33faeb28-b312-35ea-5aa9-11a680dac7ad.png)

- 数分待つと届くメールに「Your API Key is : (ランダムな文字列)」という記載があるはずなので、記載されている文字列をAPI keyとして使います。

##2. ブラウザにRESTClientアドオンをインストールする

ブラウザにREST APIテスト用のアドオンをインストールすると何かと捗ります。
Firefoxには「RESTClient」、Chromeには「Advanced REST Client」というアドオンがあります。

##3. RESTClientからAlchemyVisionAPIを実行してみる

例）URLGetRankedImageFaceTags の場合

GETメソッドですので、クエリパラメータにて以下を渡します。

- url : 画像へのリンク
- apikey : 上記で取得したAPI key
- outputMode : json または xml

※その他のオプションパラメータは上記リファレンスを参照

試しに、オバマ大統領の画像URLを送ってみます。

```
http://access.alchemyapi.com/calls/url/URLGetRankedImageFaceTags?url=https://www.lint.co.jp/LIEC/uspaddress/img/prs44_Obama.jpg&apikey=(API Keyの文字列)&outputMode=json
```
<実行イメージとレスポンスヘッダ>
![4.png](https://qiita-image-store.s3.amazonaws.com/0/122917/d731f818-b6ab-da41-6ae7-425298161d8c.png)

<レスポンスボディ(json)>

```
{

    "status": "OK",

    "usage": "By accessing AlchemyAPI or using information generated by AlchemyAPI, you are agreeing to be bound by the AlchemyAPI Terms of Use: http://www.alchemyapi.com/company/terms.html",

    "url": "https://www.lint.co.jp/LIEC/uspaddress/img/prs44_Obama.jpg",
    "totalTransactions": "4",
    "imageFaces": [
        {
            "age": {
                "ageRange": "55-64",
                "score": "0.401062"
            },
            "gender": {
                "gender": "MALE",
                "score": "0.99394"
            },
            "height": "341",
            "identity": {
                "disambiguated": {
                    "dbpedia": "http://dbpedia.org/resource/Barack_Obama",
                    "freebase": "http://rdf.freebase.com/ns/m.02mjmr",
                    "name": "Barack Obama",
                    "subType": [
                        "Person",
                        "Politician",
                        "President",
                        "Appointer",
                        "AwardWinner",
                        "Celebrity",
                        "PoliticalAppointer",
                        "U.S.Congressperson",
                        "USPresident",
                        "TVActor"
                    ],
                    "website": "http://www.whitehouse.gov/",
                    "yago": "http://yago-knowledge.org/resource/Barack_Obama"
                },
                "name": "Barack Obama",
                "score": "0.869892"
            },
            "positionX": "358",
            "positionY": "60",
            "width": "341"
        }
    ]
}
```

ちゃんと認識されました！

顔の座標やwebsiteなども返ってきていることが確認できます。

（注）
Free API keyを使用する場合、1日あたり1000トランザクションという制限があります。
「リクエスト1000回」ではなく、API内部のトランザクション数ですので注意が必要です。