TensorFlow.jsでイケメン判定サービスを開発しました

thumbnail

TensorFlow.jsを利用して、イケメン判定サービスを作成しました。

この記事は、次の2つの過去記事の続編になります。

サービスの仕組み

前回のMNISTの記事と仕組みはだいたい同じです。

モデルの学習

まず、Python(Keras)で学習して、学習モデルをGitHubとかにアップロードしておきます。 今回学習につかった、Jupyter Notebookはこれです。

以前の記事で使用したtinderのときのNotebookとあまり変わりません。 違いは、PytorchからKerasにしたことです。TensorFlow.jsはKerasのモデルならば読み込めるらしいので。 Keras, 久しぶりに書いたら書き方を忘れていましたので、以下の記事を参考にしました。

もう一つの違いは、今回MobileNetsという学習済みモデルをFine-tuningしたことです。 MobileNetsというのは、名前の通りモバイル端末向けに軽量に作成された画像認識モデルだそうです。 このサービスはモバイルでは動作しないのですが、GitHubから学習モデルを配信するので、 できるだけ軽量なこのモデルを使って転移学習をさせました。

あと、今回は男性が対象です。女性を美人判定すると、あとが怖いので。。

機械学習をWebアプリケーションに組み込む

さて、学習モデルをWebアプリに組み込むのですが、これもMNISTの流用ですね。React製です。

違いは、Webcamから画像を取得するようにしたことですかね。あと、地味にマテリアルデザインに凝っていました。

工夫したところは、モデルをダウンロードするのに時間がかかるので、ダウンロード中という画面を表示したところです。

おわりに

結構ノウハウを流用しているので、2日で開発できました。

このサービスを評価している最中なのですが、自分の場合、なんどやってもイケメンになれません。

なので、バグっているか、ラベルが逆なのだと思います。

AIのくせになんどもなんども私のことをキモいと判定するので、いいかげんしばいたろか?

ソースコードもリンク貼っておきます。