個人的に画像認識に少し興味があったのと、GoogleGlassのSDKまで出していて注目を少し浴びていたのでReKognitionを使ってみた。
普段rubyで書いているので、実際にrailsのアプリに組み込んでいきます。
####①まずはサービスに登録します。
https://rekognition.com/
####②gemをインストールします。
gem 'rekognize'
####③実際に使ってみます。
require 'rekognize'
client = Rekognize::Client::Base.new(api_key: '会員登録後に得たapi keyを入力', api_secret: '会員登録後に得たapi_secretを入力')
client.face_detect(urls: "画像のURL", jobs: '※1')
このように簡単に使う事が可能です。
上記では顔認識なのですが、このサービスは大きく分けて3つ。
・顔認識
→年齢/性別/表情/人種/....
・場所認識
→海/山/レストラン...
・場面認識
→セミナー/クリニック/研究... (※最近でたやつみたいです)
####④顔認識を深く掘ってみます。
docsを見てもらえれば一発なのですが、一応使ってみたものだけ簡単にここにまとめておきます。
https://rekognition.com/developer/face
・jobs
名前 | 説明 | 例 |
---|---|---|
gender | 性別 | 0.84(1:男性⇔0:女性) |
emotion | 感情 | {happy: 0.93, sad: 0.2}(1が最大値) |
race | 人種 | {asian: 0.99, white: 0.12} |
age | 年齢 | 23.4(少数点第一位までで記載) |
glass | 眼鏡の有無 | 0.22(最大値1) |
mouth_open_wide | 口の開き具合 | 0.24(最大値1) |
beauty | 美しさ(?) | 0.79(最大値1) |
ちなみに鼻の位置や目の位置なんかも当たり前ですが、取る事は可能です。
####⑤このサービスに画像を登録してみる
僕がこの「ReKognition」で面白いな〜と思ったのは、表情を認識する事もそうなんですが、顔検索ができるという所。
例えば自分のFBの友達のプロフィール画像をこのサービスに保存し、
(ちなみにFace Crawlというapiのメソッドを使えば、友達の画像とか全て取ってきてくれます。もちろんFBのid、access_tokenが必要です)何かの画像から、そのDBに登録した中でどれが一番近いか?というのを出してくれます。
GUIでも提供してくれているので、こちらをどうぞ。
https://rekognition.com/user/panel
ますが画像を追加していきます。
client.face_detect(urls: "画像URL", jobs: 'face_add')
これを実行すれば、ReKognitionに画像を保存してくれます。
※まだapiを通してtagを登録するやり方は分かっておりません...orz
いくつか登録したら、いよいよメインの検索をしてみましょう。
client.face_detect(urls: "画像URL", jobs: 'face_search')
=> {"url"=>"画像URL",
"face_detection"=>
[{"boundingbox"=>
{"tl"=>{"x"=>94.62, "y"=>56.15},
"size"=>{"width"=>97.69, "height"=>97.69}},
"confidence"=>1,
"matches"=>
[{"tag"=>"hogekawa", "img_index"=>"1010634", "score"=>"1.00"},
{"tag"=>"hogekawa", "img_index"=>"1471688", "score"=>"0.91"},
{"tag"=>"hogekawa", "img_index"=>"1065556", "score"=>"0.80"}],
"pose"=>{"roll"=>5.73, "yaw"=>-3.64, "pitch"=>1.85}}],
"ori_img_size"=>{"width"=>300, "height"=>300},
"usage"=>{"quota"=>3262, "status"=>"Succeed.", "api_id"=>"CiQabQj3a9F1Sp0H"}}
若干伏せさせていただいてますが、このように何とmatchしたか?というデータを取り出す事ができます。
今回はtagに名前を入れてますが、少しidを変形させた文字列等にしておけば、どのuserと合致したか?なんてのも使えそう。
ざっくりでしたが、個人的には
・顔認証に使えそう
・好みの顔の人をレコメンドするような出会い系が作れそう