ジャバ・ザ・ハットリ

ベルリンのスタートアップで働くソフトウェアエンジニア

RailsでMicrosoftのFace APIを使って写真の顔認識をする方法

2016-06-03プログラミング

Loading...

写真の顔認識はいろんなプロジェクトで地味に実装されていて、まーまー重要な機能のひとつになってきた。いろんな方法があるが今のところMicrosoftのFace APIに一日の長を感じる。精度が高くまた無料枠でもいい感じに使えるからだ。 image

しかしなぜかドキュメントにはPythonとC#、Java(Android)の分しかないのでRuby(Rails)版をここに書いた。

以下のサイトでMicrosoftのoutlookアカウント(無料)を取って、Face APIのキーを取得する。

Face API - Facial Recognition Software | Microsoft Azure

登録が完了すると以下のような画面にAPIキーが表示される。 image

顔認識をさせる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
顔認識の結果がズラズラ

これで完了。
後、他にもパラメータやらを追加してもっと詳しい顔認識をさせたいのなら、こちらのドキュメントにいろいろ載ってる。

image

こんなおもしろ機能が数分で実装できてしまうなんて、なんていい時代になったんだ。

関連記事


海外移住のQ&Aサイト シティーズ


海外移住向けのQ&Aサイトを運営しています。現在、海外にお住まいの方、これから海外移住や留学、転職をお考えの方はぜひご参加ください。 登録はもちろん無料です。

シティーズ https://www.cityz.jp/

cityz