ロボット@徳島

徳島からロボットのアプリ開発情報をメインに発信するブログ

ロボット Sota(ソータ) 顔検出まとめ

・顔検出とは

ソータのカメラ画像の中で顔と思われる部分を見つけることです。デジカメ等で撮影中、顔が四角で囲われて表示されるやつです。
その方法としては、肌色・顔の輪郭・パーツ(目・鼻・口など)を見つけて顔と思われる部分を検出する方法、事前に多くの顔画像を読み込んで学習させた情報から顔と思われる部分を検出する方法などがあるようです。
見つけた顔は、その特徴量(各パーツの配置や大きさ等、その顔の情報)を名前等と紐づけて覚えておくことができます。

ちなみに、顔検出、顔認識、顔判定と似たようなワードが今後でてきますが、それぞれ自分なりに書くと、以下のような違いかな?と思います。 

(顔認識)
検出した顔の特徴量と、以前覚えておいた顔の特徴量とを比べて、それらが一致するか?(どのくらい似ているか?)を判定することです。
いわゆる「顔パス」がこれに当り、「顔認証の結果、同一人物だと判定された」と言えます。
詳しくは、(顔認識まとめ)をご覧ください。

(顔判定)
検出した顔画像から、年齢推定、性別推定、笑顔度合の判定をすることです。
童顔や美魔女と言われる方の年齢、女顔イケメンな方の性別、営業スマイルなど、どう判定されるのか気になります(笑)

また、これら顔関連の技術には、PUXさんのFaceUという画像認識ソフトウェアを利用されているようです。そう言えば、購入時の同意書にSotaには「顔認識ライブラリ」のライセンスが付属している旨の記述がありましたね。

・Sotaのできること

<顔検出>
このブロックで囲まれた間、ソータが顔検出を行います。poseブロック等で動作をつけなければ、ずっと同じ場所を見ています。

<顔追従>
顔検出を行う際に、ソータが辺りを見回すように顔を動かします。顔を検出すると、その顔を追従するようにソータも顔を動かします。

<顔が見つかったか?>
上記どちらかの顔検出ブロックの間におき、ソータが顔を検出中かどうか?を知ることができます。「連続で顔を検出できた回数」を条件として指定できるので、3回以上とする等で、安定した動作が可能です。

・アプリ作成例

今回は<顔追従>を使いソータが辺りを見回し、顔を3回以上連続で検出できたら「こんにちわ」と発話するだけの簡単な例です。

顔追従を開始した後は、無限ループでひたすら辺りを見回します。
顔を検出するたびに、内部変数(GlobalVariable.detectCount)が +1 されていく仕様のようですので、発話後にはその値を0に戻しています。そうしないと、3回連続の後も連続で発話してしまいます。

ソータの顔検出アプリをVstoneMagicで作成した画面

 ・使ってみた感想

精度良くスムーズに顔を検出して、動いてもこっちを見てきます。じぃーーーっと見られると、ロボットでも視線が気になり、恥ずかしいものです。
複数人を検出した場合には、どっちも見ようとキョロキョロする場合がありました。例えば、一番近い人のみを追従することは可能なのか等も調べていきたいと思います。

店先にいるソータが辺りを見回しながら、お客様が来たら声かけをする、といった使い方ができそうです。現状ロボットを見る機会が徳島では少ないので、店先で声をかけられると、みんな驚いて気になり、集客効果バツグンかな?とも思います!