顔認証技術を用いた被撮影者がどの女優に似ているか診断するアプリ

2022/01/29に公開

この記事で書かれていること

学生祭で展示したアプリの紹介をしていきます.撮影した写真の目と口を補正し,その写真に対してAIがどの女優に似ているのかを教えてくれる顔認証アプリを作成しました.

誰に読んでもらいたいか

この記事は誰かを楽しませるためにアプリを作ろうとしている人に向けて書いています.したがって技術的なことよりも,「〇〇な工夫をしたらどのような反応を頂けた」ということに重点をおいて説明していきます.

アプリの手順説明

展示の際に使用した説明書を基に流れを説明していきます.
[Step 1]
展示物であるパソコンを来場者が見た時に写っている画面です.私もそうですが,来場者がこの時点で求めているものは,アプリのおもしろさよりも操作がシンプルで分かりやすいかどうかです.したがって「スペースキーを押すだけで大丈夫!」という説明はとても重要です.(スペースキーがどこのキーなのかも)

[Step 2]
ここでアプリの説明をしていきます.来場者は緊張しているのでアイスブレイクのために冗談を言うことが大事です.私は「右の5人の女優は全員自分の好みの女優なんですよ」と伝えると場が和みました.

[Step 3]
まずプリクラ撮影を行っていきます.何も補正がないカメラは抵抗感があると考えたのでプリクラ機能を実装しました.
余談...ゲームセンターなどにあるプリクラの技術はとても高いことを知りました.私の技術力では逆に無加工の写真より,プリクラ写真の方が可愛くない事態となってしまいました.しかしながら,これはこれで笑ってくれたり,撮影への抵抗感が少なくなったので良かったです.
当初はWindows上でSnowやB615などのアンドロイドカメラアプリを動かそうと考えていました(Androidエミュレーター).しかしながらノートパソコンのスペックでは動作が重かったので断念しました.

[Step 4]
実際に映し出される画面です.スペースを押すと撮影が出来ます.顔全体,目,口をOpenCVにより検出しています.OpenCVとは、Open Souece Computer Vision Libraryの略で、画像や動画を処理するための機能がまとめて実装されているオープンソースのライブラリのことです.OpenCVで口を検出する際,笑顔かどうか識別することができます.笑顔を検出するとNiceSmileと表示されるようにしました.

[Step 5]
撮影が終わると目と口を補正したプリクラ写真が出てきます.

[Step 6]
褒めます.ベタな演出ですがかなりの確率で場が和みます.

[Step 7]
プリクラ撮影の後は本題のAI診断です.「診断対象となる5人の女優って誰だったっけ?」となるころなので再度画面に表示して説明することが大事です.

[Step 8]
結果を表示します.AI(深層学習)が最も似ている女優を教えてくれます.具体的には綾瀬はるかさんに56 %似ている.新垣結衣に13 %似ている...と,合計が100 %になるように5人の女優の似ている度を算出し,そして最も確率が高かった女優名を表示しています.

[Step 9]
おわりです.スペースキーを押すと[Step 1]の画面に戻ります.

技術的背景

➀プリクラ機能
目を大きくする機能を搭載したプリクラを作成しました.
[Step 1]
OpenCVを用いて写真内の目がある範囲を四角形で囲み切り取ります,
[Step 2]
目を大きくするために,切り取った範囲を拡大します.
[Step 3]
元の画像に拡大した範囲を張り付けます.
[Step 4]
元の画像と拡大して張り付けた画像の境界をぼかします.
[+α]
口に対しても目と同様の手順で拡大します.

②深層学習による女優診断機能
スクレイピングで画像を取得し分類する深層学習を行いました.
[Step 1]
認識したい人の名前を複数定義する.今回選んだ女優は,綾瀬はるかさん, 石田ゆり子さん, 新垣結衣さん, 深田恭子さん, 松岡茉優さんの5人です.
[Step 2]
スクレイピングでGoogle画像検索から画像を取得.今回は女優一人あたり300枚ほど取得ました.
[Step 3]
本人が写っていない画像を削除(自力で).
[Step 4]
OpenCVを用いて,顔部分を抽出し切り抜きます.
[Step 5]
本人が写っていない画像を削除(自力で).
[Step 6]
画像処理をして、画像の水増し.女優一人あたり約2000枚に増やしました.
[Step 7]
用意した画像をトレーニングデータ、テストデータ,評価データの3つに割り振ります.
[Step 8]
Kerasでモデルの構築、学習、評価を行います.
[+α]
Google Colaboratory → GPUを無料で利用して学習時間を短縮します.

GitHubで編集を提案

Discussion