- Published on
RailsでMicrosoftのFace APIを使って写真の顔認識をする方法
- Authors
- ジャバ・ザ・ハットリ
写真の顔認識はいろんなプロジェクトで地味に実装されていて、まーまー重要な機能のひとつになってきた。いろんな方法があるが今のところ Microsoft の Face API に一日の長を感じる。精度が高くまた無料枠でもいい感じに使えるからだ。
しかしなぜかドキュメントには Python と C#、Java(Android)の分しかないので Ruby(Rails)版をここに書いた。
以下のサイトで Microsoft の outlook アカウント(無料)を取って、Face API のキーを取得する。
Face API - Facial Recognition Software | Microsoft Azure
登録が完了すると以下のような画面に API キーが表示される。
顔認識をさせる Rails プロジェクトの Gemfile にcurbを入れてインストールする。
# Gemfile
gem 'curb'
$ bundle install
secrets.yml とかに Face API のキーを書き込む。
ここでは Rails.application.secrets.microsoft['face_api_key']に入れることにする。
development:
microsoft:
face_api_key: *****************
後は写真をアップロードさせるモデルの中に curl で顔認識の結果をとってくるメソッドを書く。
class Photo < ActiveRecord::Base
belongs_to :user
has_attached_file :file, default_url: "missing.jpg"
def face_detection
Curl.post("https://api.projectoxford.ai/face/v1.0/detect", "{ url: '#{self.file.url}' }" ) do |curl|
curl.headers["Ocp-Apim-Subscription-Key"] = Rails.application.secrets.microsoft['face_api_key']
curl.headers["Content-Type"] = 'application/json'
end
end
end
としておくと、
$ rails c
> p = Photo.find(??)
> face = p.face_detection
> face.body_str
顔認識の結果がズラズラ
これで完了。
後、他にもパラメータやらを追加してもっと詳しい顔認識をさせたいのなら、こちらのドキュメントにいろいろ載ってる。
こんなおもしろ機能が数分で実装できてしまうなんて、なんていい時代になったんだ。