○○に似てると言われ困ったので、AIに判定させてみた


概要

皆さんも一度は○○さん(有名人)に似てると言われたことがあるのではないでしょうか。
私も初対面の人のうち、7回に1回くらいは星○源に似ていると言われることがあります。
自分では似てないと思うのですが、毎回否定するのも面倒なので、
AzureのCustom Visionを使って、AIに定量的に判断してもらうことにしました。

システム

構成

・macOS Mojave
・Python 3.6.5
・Custom Vision(Azure)

概念図

①スクレイピングで画像を集める
②集めた画像を分類する
③AzureのCustom Visionにアップし、学習させる
④自分の画像をアップし、評価を返す

画像収集/スクレイピング

学習用のデータを集めることにします。
PythonでGoogleの画像を大量スクレープする
こちらを参考に、Pythonで画像をスクレイピング。

python scraping.py -s hoshinogen  -n 70

scraping.pyで70枚ほど画像を集めて、複数人で写っている画像や関連性の低い画像は手動で省いていきます。

これを繰り返し、同じような系統の顔の有名人の画像をいくつかピックアップします。
塩顔っぽい系統だと思うので、関連性の高い有名人を探します。
高橋一生さん、綾野剛さん、森山未來さん など。

Custom Visionを使用

Custom Vision

使い方はこのあたりが参考になります。
Microsoft Custom Vision Service を使用して画像を分類する

タグ付け

先ほど分類した画像とタグを紐付けて、画像をCustom Visionにアップしていきます。

今回は10人ほど有名人ピックアップしています。
スクレイピングした画像を精査した結果、それぞれ50枚程度になりました。

アップが終わったら、右上のボタンからトレーニングさせます。

自分の画像を用意(自撮り)

いよいよ学習させたモデルから自分が似ているかどうかを判定させます。
と、その前に自分の画像を用意しましょう。

カメラデータを確認したが、自分の画像がなかったため急いで自撮りしました。

結果判定

右上にあるQuick testから自分の画像をアップし、返ってくる評価を確認します。

ローカルファイルをアップしたときの結果がこちら。

……星野源75.8%になりました。

結論、比較的似ていると言えるだろうという温度感ですね。

ちなみにメガネありでやった場合も用意していたのですが、
サンプルデータが少なく高い数字が出たので、ここはもう少し学習精度上げる必要がありそうです。

まとめ

Azureのサービスを使うのは2回目だが、使いやすかった。
けっこう応用もできそうで捗りそう。

以前、Google Cloud PlatformでNatural Languageを使って、
機械学習(テキスト解析)×LINE Botを作ってみたのでよろしければこちらもどうぞ
悩める恋心を助けるためのLINE BOTを作ってみた

番外編
AIに自分の顔を判定させたら失敗した話(番外編)

ネクストアクション

今回作ったCustom Visionの画像認識とIoT機器を組み合わせる