プラカンブログSTAFF BLOG

2016.04.27

「今注目のMicrosoft Project Oxford」の巻

bbb

システムのまついです

Googleマップ、twitter、facebook、instagram、LINEなどのWEBサービスは仕事で利用されていると思いますが、ご紹介したいのは、How old do I look?(私何歳に見えますか?)というサイトです。楽しそうなので紹介します。

How-Old.net

使い方は画像URLを検索窓にコピペして実行すると顔写真に年齢が表示されます。また、PCのローカル画像をページ中央下の[Use your own photo]からアップロードして調べることもできます。
ちなみに私の顔写真は56歳の判定でしたが実年齢に比べ3歳の誤差でしたので判定能力は優秀だと思います。

ここでいろいろ実験をしてみたいと思います、
1.犬
http://nekokeizai.com/wp-content/uploads/2014/04/i012.jpg
結果:顔認識されず

2.サル
志村けんと一緒に並んだパン君
http://up.gc-img.net/post_img_web/2012/12/7e588f09cc90a6090353da8cfdbfcf00_0.jpeg
結果:「志村けん」だけを認識して72歳(人とサルを見分けている、すごい!!)

3.間寛平
http://www.zakzak.co.jp/gei/200907/image/g2009071512KTkanpei.jpg
結果:47歳と判定(寛平はサルではなかった)

4.マネキン
http://blog-imgs-43.fc2.com/f/l/o/flowone/201308091632574e0s.jpg
結果:27歳

http://image.space.rakuten.co.jp/lg01/74/0000611774/71/img766e69b8zik4zj.jpeg
結果:23歳

5.モナリザ
http://www.art-library.com/davinci/img/dvc202-w500.jpg
結果:24歳

6.ヨーダ
http://www.eiganohimitsu.com/wp-content/uploads/2015/12/yoda.jpg
結果:顔認識されず

7.ゴラム
http://www.officiallyjd.com/wp-content/uploads/2013/03/20130316_tsujinozomi_10.jpg
結果:65歳と判定

単純に画像情報だけの判断なので人とモノの区別はできないですが、目鼻口の認識とその相互距離がヒト基準範囲であれば人と認識をするようです。
(顔画像アップロードをするところで顔以外をはじくとかに使えるかも・・)
高セキュリティーが求められる場合は、人体から放射される赤外線を検出して人と物の区別をしたり、複数のカメラ情報を3Dデータに変換して人体であるかどうかを判定したり、人体が発するかすかな音(呼吸、心拍音)で判定したりするようです。

さて、いろいろ試してみましたがこのWEBサービスもAPIを提供しています。
このAPIを提供しているのはあのマイクロソフトです。
マイクロソフトが顔認識、音声処理などのアプリケーションを開発者が構築できるようにするためにMicrosoft Project Oxfordというプロジェクトを立ち上げました。

冒頭で実験したサイトはFace APIを使った機能です。
https://www.projectoxford.ai/face

FACE API V1.0の詳細(英文)は、
https://dev.projectoxford.ai/docs/services/563879b61984550e40cbbe8d/operations/563879b61984550f30395236
なお、FACE API V1.0を使った開発をするにはMicrosoftアカウントの登録が事前に必要です

その他、いろいろあります。
https://www.projectoxford.ai/
Computer Vision APIs 画像分析、サムネイル自動生成、OCR(文字認識)
Face APIs 顔認識、顔認証、類似顔検索、顔分類、顔識別
Emotion APIs 感情認識
・Video APIs 動き検出(動くものがあれば反応します)

FACE-detect機能を使って、年齢、性別を推定するサンプルをJavascriptで作ってみました。(Javascript以外にも多くの開発言語をサポートしています)
作成したサンプルは年齢、性別を推定するものですが、類似顔検索という機能があって、自分の顔に似ている芸能人をピックアップできたりします。機会があれば作ってみたいと思います。
サンプルは下記ソースコードをUTF-8(sample.htmlなどのファイル名で保存)して、ブラウザ表示してください。

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

    <title>JSSample</title>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
</head>
<body>

<script type="text/javascript">
    $(function() {

photo_url='http://up.gc-img.net/post_img_web/2012/12/007c614900ce51c8508066f28af22b00_0.jpeg';

        var params = {
            // Request parameters
            "returnFaceId": "true",
            "returnFaceLandmarks": "false",
            "returnFaceAttributes": "age,gender",
        };
      
        $.ajax({
            url: "https://api.projectoxford.ai/face/v1.0/detect?" + $.param(params),
            beforeSend: function(xhrObj){
                // Request headers
                xhrObj.setRequestHeader("Content-Type","application/json");
                xhrObj.setRequestHeader("Ocp-Apim-Subscription-Key","99d7bbcfb99746e99a1feb4831e5a2a0");
            },
            type: "POST",
            // Request body
            data: "{\"url\":\""+photo_url+"\"}",
        })
        .done(function(data) {
						$('#faceId').append(data[0].faceId);
						$('#age').append(data[0].faceAttributes.age);
						$('#gender').append(data[0].faceAttributes.gender);
						$("img").attr("src",photo_url);
        })
        .fail(function(data) {
            alert("error");
        });
    });
</script>
<ul>
<li><img src="" id="img"></li>
<li>faceId:<div id="faceId"></div></li>
<li>推定年齢:<div id="age"></div></li>
<li>推定性別:<div id="gender"></div></li>
</ul>
</body>
</html>

この記事は、MATUI が書きました。