こんにちは、セカンドサイト株式会社の益永です。
今回はSkyFoxの画像変換機能の一つである「顔写真の特徴推定」をご紹介します。
こちらの機能はディープラーニング技術を活用し、顔写真から、年齢や性別、ひげの有無や推定される感情など、15個の項目を推定し、数値化するものです。
このような非構造化データを活用することで、今まで見えていなかった何かが見えるかもしれませんよ!
顔画像変換の手順
まずは例としてこちらの特徴が出やすそうな2枚の写真を数値化してみましょう。


画像ファイルの準備
画像のファイル形式はjpgとpngに対応しています。
変換処理したい写真をひとつのzipファイルに格納します。
SkyFoxでの操作手順
ツール→データ変換→ 変換方法の選択→顔写真の特徴推定と進みます。


次に変換するzipファイルを指定し、「データを変換」をクリックします。
※サーバー上にデータを保存しない/したくない場合は、変換データの削除のところで”削除する”を選択するとデータ変換後に元データがサーバー上から削除されます。
変換処理が終わると変換結果が表示されます。
「結果をダウンロード」をクリックするとcsvファイルがダウンロードされます。
画像の変換結果
idにはファイル名が格納され、id以外に15個の項目が推定されていることがわかると思います。
higeより下の項目については数値が高いと赤く、低いと青く色づけしています。
写真と見比べてみると、なんとなく正しく表現しているように見えませんか?
それではこれらの15個の項目についてもう少し細かく説明していきます。
特徴量化した15項目
image_brightness(画像の明るさ)
明るいほど高く、暗いほど低くなります。
こちらの写真はimage_brightnessが低い例です。(image_brightness=21.3493)
こちらの写真はimage_brightnessが高い例です。(image_brightness=97.0563)
image_sharpness(画像のシャープネス)
輪郭がクッキリしているほど高く、ボケているほど低くなります。
こちらの写真はimage_sharpnessが低い例です。(image_sharpness=46.0298)
こちらの写真はimage_sharpnessが高い例です。(image_sharpness=95.5162)
age_range(年齢)
推定年齢がレンジでアウトプットされます。
こちらの写真はage_rangeの例です。(左=1-5、中=15-25、右=60-90)
写真のモデルさんの実年齢はわかりませんが、なんとなく当たってそうですよね。



実年齢がわかっているのであれば、レンジの中かもしくは下か上かといった変数を生成しても面白いかもしれませんね。
gender(性別)
Male(男性)かFemale(女性)かの2値でアウトプットされます。
何枚かいろんな写真で試しましたが人が見て男女どちらか迷わないような写真の場合の正解率は100%です。
某女性のみの劇団の男役の方もちゃんと女性と判断されますし、実際は男なのに女性にしか見えないような芸能人の方もちゃんと?女性と判断されます。
実際の性別と合致しているか否かといった変数を生成すると役に立つ場面もあるかもしれませんね。
hige(ヒゲの有無)
0から100の値で表現され、ヒゲがあると判断されるほど高くなります。
glasses(眼鏡の有無)
0から100の値で表現され、眼鏡をかけていると判断されるほど高くなります。
こちらの写真は上記2つが高い例です。(hige=97.7576、glasses=99.7305)
mouth_open(口を開けているか否か)
0から100の値で表現され、口が開いているほど高くなります。
smile(笑顔の度合い)
0から100の値で表現され、笑顔であるほど高くなります。
happy(幸福度合い)
0から100の値で表現され、幸せそうであるほど高くなります。
こちらの写真は上記の3つが高い例です。(month_open=99.9997、smile=99.9999、happy=99.7107)
sad(悲しさ度合い)
0から100の値で表現され、悲しい表情であるほど高くなります。
こちらの写真はsadが高い例です。(sad=85.6197)
angry(怒り度合い)
0から100の値で表現され、悲しい表情であるほど高くなります。
こちらの写真はangryが高い例です。(angry=50.1152)
confused(困惑度合い)
0から100の値で表現され、悲しい表情であるほど高くなります。
こちらの写真はconfusedが高い例です。(confused=84.179)
disgusted(うんざり度合い)
0から100の値で表現され、悲しい表情であるほど高くなります。
こちらの写真はsadが高い例です。(disgusted=65.9767)
surprised(驚き度合い)
0から100の値で表現され、驚いている表情であるほど高くなります。
こちらの写真はsurprisedが高い例です。(surprised=63.5543)
calm(落ち着き度合い)
0から100の値で表現され、落ち着いている表情であるほど高くなります。
こちらの写真はcalmが高い例です。(calm=96.7495)
特徴量を推定しにくい/できない事例
以下のような場合、上手く顔を検出できなかったり、検出できたとしても特徴量を推定できなかったりしますのでご注意ください。
横向き
横向きの画像であっても数値化はしてくれます。ただ所々精度が落ちるケースがあるようです。例えばこちらの写真では明らかに眼鏡をかけていますが、(glasses=20.5619)と低い値となっています。なのでできるだけ正面からの写真である方が望ましいです。
二人以上写っている
この場合一人しか検出できません。向かって左側に写っている人物を優先する傾向がありますのでご注意ください。
もはや誰も写ってない
人間が写っていない場合は、「Can't detect face」としてエラーが返されます。


まとめ
いかがだったでしょうか?
SkyFoxがあれば顔写真をサクッと数値化できてしまいますので、試してみてはいかがでしょうか?きっと何か面白い発見ができると思いますよ。
※トライアル版のSkyFoxはこちらのリンク( https://trial.skyfox.ai/signup )からご利用頂けます。どなた様もメールアドレスとパスワードを入力頂くだけで無期限・無料でご利用頂けますので是非試してみてください。宜しくお願い致します。