Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
12
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

@mtitg

DeepLearningで似ている芸能人を判定するWebサービスを作りました

Courseraの授業を中心に遅ればせながらDeepLearningの勉強をしてきたので、なにかアウトプットしようと思い立ち、写真を撮るとどの芸能人に似ているか判定するWebサービスを作りました。

Who Am I|似ている芸能人診断Webアプリ|有名人探しサイト

使った技術

Siamese Network

DeepLearningで画像処理を行う場合はCNNをSoftmax関数でフィニッシュして分類問題として取り扱うのが普通ですが、Siamese Networkは異なる2つの画像をCNNに通してそれらがどのくらい似ているか(距離が近いか)をSigmoid関数で数値化するというものです。
画像が似ている/異なっているということがどういうことかを覚えさせ、それを予測に用いるモデルです。Courseraの中ではデータセットが少ない場合の選択肢となりうる、顔認識(オフィス入館のための本人認証など)で使われる、といったことが解説されていました。

Flask

めちゃシンプルなサイトなので、いつもはDjangoを使うところFlaskを使ってみました。
評判の通り軽量で、サイトがソッコーで立ち上がりました。こりゃ簡単なサイトを作る時はいいですね。

face_recognition

DeepLearningに渡す前に顔を認識して切り取る処理にface_recognitionというライブラリを使いました。
当初はOpenCVを使っていたのですが、MacへのインストールまはまだしもLinux上でApache経由で使う時に謎のフリーズが発生し解決できなかったのでスイッチしました。
顔認識だけだったらOpenCVよりも断然使いやすいと思います。Web上ではOpenCVはインストールが大変という声が多いですし。

精度

似ている芸能人を上から10人まで表示していて、その中の3人くらいはまあ確かに言われてみれば、みたいな精度です。
芸能人本人の写真で試すと結構な確率で本人が一番似ていると判定するので、やはりこのモデルは同一人物特定に力を発揮するようです。そう考えると例えば工場のラインで商品の異常を見つける異常検知とか、異常のあるもののデータは基本的に少ないので、少ないデータセットでもうまく動かすことのできるこのモデルが利用できるかもしれません。

その他

  • PCならChrome、Firefox、iPhoneならSafari(設定からカメラのアクセスを許可する必要があります)、AndroidならChrome、Firefoxでの動作確認ができています。
  • 撮影/アップロードされた画像は判定したらすぐに削除する作りです。自分だったら顔写真が保存されるのが嫌なのと、サーバー容量を圧迫したくなかったので。
  • iPhoneアプリで類似のものがありましたが、頻繁に使うものでもないのでWebの方が利便性高いと考え開発しました。
  • 結果ページで見せてる画像は著作権的にアウトっぽいので、万が一アクセスが伸びたら使うのやめたほうが良さそう。。
  • 何度やってもバナナマンの日村に似てると判定される。。悲しい。

よかったら遊んでみてください。

Who Am I|似ている芸能人診断Webアプリ|有名人探しサイト

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
12
Help us understand the problem. What are the problem?