p5js:xx.faceapi

FaceApiを利用して顔認識

顔を認識するjs用のライブラリには様々な種類がありますが,これまで授業では clmtrackerを利用していました.このライブラリはすでに4年前のものであり,認識もトラッキング要素がつよいため,顔を早く動かすとパーツがずれたままになってしまうなど,微妙に使い勝手が悪いところがありました.

学生から「もっといいのありますよ」と以前にも言われてたんですが,ちゃんと調べようとおもって,FaceApiを使ったところとっても良かったので,このページに纏めておこうと思った次第です.これからはface trakcerを使っている教材は全部これで置き換えちゃえばいいなって思いました.というわけでまずは以下のリンクがとってもすごかった.

FaceApi.jsをフル活用したい場合は上記リンクのexampleを動かして見ると良いでしょう。以下ではp5.jsと連携させて動作させる場合を紹介していきます。

face-api.jsは tensorflow-js を利用してネットワークフォワーディングを実装しています。機械学習系でp5.jsといえばml5.jsですが、ml5.jsのウェブサイトを見てみると、face-api.js用の実装が準備されています。

簡単にlandmark(顔の頂点座標)を取得することができます。ただしこれでは満足できません。というのもface-apiでは顔の位置やlandmark以外にももっとたくさんの昨日が提供されています。個人的には 表情推定と性別・年齢推定も扱いたいなっておもいます。ml5.jsのページをよく読むと、ml5.jsのapiではface-apiではこれら機能はサポートしていないことが明記されています。

この辺実装されてるのないかな〜って探してみたら次のようなページを見つけました。

同じml5.apiを利用しているのですが、expressionsオプションが利用できるようになっています。どうやらDanielの授業の中で作られたml5.jsライブラリのようです。公式のライブラリでは実装されてないところが追加で実装されていました。コードの中にある、faceOptionsをtrueにすることで、表情認識も行ってくれます。せっかくなのでそのへんのサンプルを作っておきました。

gender,ageの推定はこちらで実装追加する必要がありそうでした.もしくはface-api.jsの公式exampleから利用してもよいでしょう.

ところがどっこい,facemesh by Googleがもっと良かったんで,ここで紹介しておきます.表情認識はできませんが,詳細な頂点座標(400点以上!)があって,更に実行速度がfaceapiよりも早い(これ大事)ので,単純に顔面の特徴点をとるだけだったらこっちを利用したほうがよいです.

  • /home/users/2/lolipop.jp-4404d470cd64c603/web/ws/data/pages/p5js/xx.faceapi.txt
  • 最終更新: 2021/06/09 08:54
  • by baba