2018.04.20
MRT

2時間でAIに触れてみる

もう10年以上もプログラムを書いてなかったので、ブログのネタとしてせっかくなので久々にプログラムを書いてみようと思います。
で、何しようかと思ったところ、流行りのAIにでも触れてみようかと思います。

「IBM Watson」

IBMが「IBM Watson」というブランドでAIサービスをやっているので、今回はこれを使ってみます。

IBM Cloudライト・アカウントを取得する

APIを無料で使うのに「IBM Cloudライト・アカウント」が必要だそうです。

ライトアカウントだと無料で、条件付きですが無期限でIBM Watsonが使えます。
ただし、無料ですから、制限があります。
・10日間 開発なしでアプリを自動停止
・30日間 活動なしでサービスの自動削除
・「組織の作成」画面では、地域に「米国南部」を選択を行う必要があります。

今回は2時間ぐらい使えればいいので全然問題ありません(笑)

カタログからVistual Recognitionを選択し、API KEYを手に入れる

アカウントを取得したら続いてどんなAPIを使うかを選択します。
今回は、AIっぽいって事で画像認識系の何かをしようと思います。

<Vistual Recognition>
画像認識機能です。すぐに使用できるようにWatsonが既に学習をしており、画像・映像フレームに写った複数のものや、
情景を分析・認識することができます。また、機械学習によりWatsonに独自の学習をさせることもできます。
すでに、自社製品の認識・分類や、製造ラインにおける欠陥検出といった多種多様なお客様の業務で、高い精度の画像認識を
少ない画像枚数による短時間の機械学習で実現しています。
さらに、日本語・英語を含む多数の言語で認識結果を返すことができます。

とワトソンさんは言っているので、今回は「Vistual Recognition」の機能を使ってみます。
で、省略しますが、API Keyを取得し、控えておきます。

プログラムを書く

今回は顔認識のAPIを使ってみます。人間の顔が映っている画像をAPIで投げると、男性か女性かと推定年齢がわかるようです。
詳しいAPIの使い方はAPIリファレンスで調べます。

プログラム言語は今回は手っ取り早くPHP(ver.5.3)で書きます。

watson.php

 1 <?php
 2 $base_url = 'https://gateway-a.watsonplatform.net/visual-recognition/api';//APIにアクセスするエンドポイントです。
 3 $api_key = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';//API Keyを入力します。
 4
 5 $method = '/v3/detect_faces';//顔認証のAPIです。
 6
 7 $path = "./w_img";
 8 $img = "sample.jpg";
 9 $img_path = $path . "/" . $img;
10 $cfile = "@$img_path;filename=$img;type=image/jpeg";
11 $img_data = array("images_file" => $cfile,"classifier_id" => "default");
12
13 $curl = curl_init();
14
15 curl_setopt($curl, CURLOPT_URL, $base_url.$method.'?api_key='.$api_key.'&version=2018-04-07');
16 curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'POST');
17 curl_setopt($curl, CURLOPT_POSTFIELDS, $img_data);
18 curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
19
20 $response = curl_exec($curl);
21
22 curl_close($curl);
23
24 var_dump($response);
25 ?>

画像を置く

顔認証する画像を置き、プログラムで指定しているパスに保存します。
今回は著作権フリーのこの画像を使います。

やってみた

準備が整ったので早速実行してみます。ブラウザから先ほど作成したプログラムのURLにアクセスします。

結果は

string(1250) "{
    "images": [
        {
            "faces": [
                {
                    "age": {
                        "min": 25,
                        "max": 28,
                        "score": 0.93356967
                    },
                    "face_location": {
                        "height": 406,
                        "width": 363,
                        "left": 839,
                        "top": 275
                    },
                    "gender": {
                        "gender": "MALE",
                        "score": 0.99973804
                    }
                },
                {
                    "age": {
                        "min": 19,
                        "max": 21,
                        "score": 0.9996961
                    },
                    "face_location": {
                        "height": 450,
                        "width": 392,
                        "left": 337,
                        "top": 255
                    },
                    "gender": {
                        "gender": "FEMALE",
                        "score": 0.999969
                    }
                }
            ],
            "image": "sample.jpg"
        }
    ],
    "images_processed": 1
}"

となりました。
説明すると

赤枠の範囲で顔を認識し、左の枠は「19~21歳の女性」、右の枠は「25~28歳の男性」という結果のようです。

あとはアイデア次第?

ここまでは私でも2時間程度でできたので、弊社の開発部の方であればもっと早くできるでしょう。
感想としては、身近にAIを体験できるサービスができていて、試せる状況が整っているという事で、アイデアや組み合わせ次第で
面白い事ができそうと思いました。
ただ、AIの精度などは今回は検証できなかったので、シビアな要件には十分に検討が必要ですね。

なんか当初は「プログラムを久しぶりに書いてみよう」だったのに、結局25ステップしか書いてないっていう。。。

MRT

一覧に戻る