電脳ヨーグルト

プログラミングの備忘録と私生活を

dlibライブラリでAIに和田アキ子の顔を認識させてみた!

f:id:at25250410:20180810131618p:plain

dlibという機械学習ライブラリで、顔認識をやってみました。

dlibには標準で顔認識のためのサンプルプログラムが同梱されているので、適当な写真を用意すれば、すぐに顔認識を試すことができます。

コードとか全く書かずに試せるので、パソコンの基本操作さえできれば誰でも試せるレベルです。

パソコンで楽しむ自分で動かす人工知能

パソコンで楽しむ自分で動かす人工知能

この本の流れに従えば、すぐできるのでとりあえずAIを触ってみたいという方にオススメです。

ちなみに、ホストOSがWindowsで、ゲストOSがUbuntu16.04です。

Virtualboxという仮想化ソフトをインストールすることで、Windows上に仮想環境を構築し、そこでUbuntuを動かすことができます。


dlibには、face_detection_exという、画像の中から顔を識別して、赤線で囲むというプログラムが標準で用意されているので、まずは適当に
用意した画像で顔を識別させてみます。

さっそく顔検出をやってみる

f:id:at25250410:20180810125644p:plain


f:id:at25250410:20180810125543p:plain


はい、こんな感じで、画像から顔を認識することができました。

これは、既に人の顔の特徴を学習したモデルを使っているので用意した画像から人の顔を認識することができました。


今度は自分で用意した和田アキ子の画像を使って、和田アキ子の顔を識別するモデルを作っていきたいと思います。

和田アキ子の画像を学習させる

訓練画像

とりあえず、学習させる和田アキ子の画像(訓練画像)を25枚用意し、顔の部分を赤枠で囲んであげてラベル付けします。

こんな感じで

f:id:at25250410:20180810131618p:plain

以下同様に、アキ子の画像25枚を、赤枠で囲みます。

f:id:at25250410:20180810132739p:plain


そして、学習開始。25枚の和田アキ子の顔画像から和田アキ子の特徴量を抽出します。


学習がデータが少ないのでCPUでも数秒で学習が終了します。


25枚の和田アキ子の画像から、和田アキ子の特徴を掴んだモデルが完成したはずです。


学習させていない、新たな和田アキ子の画像(テスト画像)を与えて、和田アキ子だと識別できるかどうかテストしてみる。

テスト画像

テスト1
f:id:at25250410:20180810133138p:plain

識別できた。

テスト2
f:id:at25250410:20180810133234p:plain

微妙・・・ 泉ピン子も和田アキ子と認識してるっぽい・・・

テスト3
f:id:at25250410:20180810133410p:plain

羽生君とのツーショットですが、和田アキ子を認識できていません。

テスト4
f:id:at25250410:20180810133315p:plain

武田さんと石田純一との3ショット。
こちらも認識できません。


訓練データを増やして再チャレンジ!

やはり、学習させる画像の数が少なすぎて認識精度が悪いのかなと思い、訓練画像を倍の50枚にして再チャレンジです。

訓練画像

さっきは、和田アキ子が一人だけ写っている画像ばかりを学習させていたので、今度はツーショットやスリーショットの画像も入れて学習させてみます。

f:id:at25250410:20180810134757p:plain

f:id:at25250410:20180810134853p:plain

f:id:at25250410:20180810135029p:plain

そして、50枚のラベル付けを終えました。結構しんどい・・・

今度は50枚の画像を学習させます。

そして学習が終わり、完成した学習モデルにテスト画像を投げてみます。

結果

テスト画像

f:id:at25250410:20180810142749p:plain

おお!

ツーショットで、ちゃんと和田アキ子だけを認識できてる!

というか、この二人のツーショット多くないですか?

どんだけ仲良しなんだよ。


今度は、ニッチェとのツーショット画像

f:id:at25250410:20180810142906p:plain

いや!こっちは認識できないんかい!

こっちのほうが分かりやすそうなのに・・・

まとめ

・学習する画像が、25~50枚程度と少ないので、それほど劇的に識別することはできなかった。


・学習画像が数千~数万くらいないと高い認識精度は発揮出来ないと思う。


・泉ピン子と和田アキ子は仲良し