Microsoftの画像識別技術(Computer Vision)を試してみる

昨年は画像でこの仮想通貨が値上がり!みたいな告知をする人がいて、
瞬時に画像識別して取引に使うという話がありました。
丁度その頃に自分も試して見たので忘れない内に手順のメモ。

何ができるの?

Microsoftの提供しているComputer Vision APIというものを利用します。
屋内・屋外の判定や、何が映っているか、そしてどんな風景かを教えてくれます。
無料でも十分使えます。(但し30日間の試用制限あり)

使い方:まずは登録!

https://azure.microsoft.com/ja-jp/services/cognitive-services/computer-vision/ にアクセスし、Computer Vision APIを試す をクリック

一覧から、APIキーの取得を選ぶ。5000トランザクションまで使えると書いてます。どれぐらいの精度か試すには十分な回数かと思います。

クリックすると、利用規約やMicrosoftアカウントのサインイン画面を経由して、APIキーが表示されます。
アカウント連携にすると登録が楽です。自分はgithubのアカウントと繋げました。

登録が終わると、APIキーが2つ表示されます。使うのはどちらでもOKです。

このAPIキーを利用して、画像を読み込ませます。
Micorsoftにもかかわらず、サンプルコードはphp,python,C#等色々書かれています。太っ腹。
今回はC#で試します。(無償のVisualStuidoCommunityやVS2015Expressどちらでも動きました)
サンプルコードはAPIキーが表示されている画面で「クイックスタートガイド」をクリックすると左側に言語別にずらっと表示されます。

サンプルコードはファイル名を入力するようになっています。自分はソース内で画像ファイルを指定して検証しました。(何度も入力面倒なので)


static void Main()
{
    // Get the path and filename to process from the user.
    Console.WriteLine("Analyze an image:");
    string imageFilePath = @"c:\tmp\img.png"; // ファイル名を直接指定
    // Execute the REST API call.
    MakeAnalysisRequest(imageFilePath);
    Console.WriteLine("\nPlease wait a moment for the results to appear. Then, press Enter to exit...\n");
    Console.ReadLine();
}

読み込ませてみる

さて、早速読み込ませてみましょう。まずは風景を持ってきます

色々情報が出てきましたが、ここではcaptionsを見てみます。


"captions": [
    {
        "text": "a close up of a pond of water",
        "confidence": 0.84774704380268
    }

「池のどアップ」自信の程も0.84と高めで、ドヤ顔で答えてきています。
川かもしれないけど、正解と言えますね。さすがの精度です。

もう一つ読み込ませます。

うさぎコイン発掘所の2代目看板コーギーウサギ。

"captions": [
    {
        "text": "a drawing of a face",
        "confidence": 0.49674243223802728
    }
]

「顔の絵」…認識した単語にもうさぎ要素なし。絵は流石に難しいか。自信も0.49と自信なさげな返答。

写真なら得意なのかということで、かしわモーチ(リアル)を読み込ませます。


"captions": [
    {
        "text": "a drawing of a face",
        "confidence": 0.58342362048487484
    }
]

顔の絵…しかも今回はちょっと自信度アップ。確かに顔だよね。

まとめ

・MicrosoftのComputerVisionAPI簡単に試すことができる
・風景については精度が高い
・工業用の部品だったり、絵やキャラクターものはまだまだこれから

※ほかにも色々画像を読み込ませて検証しました。
ちなみにサイズが大きすぎたり、小さすぎるとエラーが出るので、エラーが出た場合はメッセージを注意深く見てみましょう。