Amazon Rekognitionで顔の判別をしてみた

顔の判別(分析)

こちらからデモをGUIで行うことができます。

デモ用の画像が元から入っていますが、画像をアップロードするかURLを入力することで任意の画像を分析することができます。

顔か、性別、表情、サングラスを掛けているか、口が空いているか、などが百分率(%)で分かります。

また、リクエストやレスポンスを見ると、JSON形式で結果を見ることができます。

実際にSDKやAWS CLIなどでAPIを叩く場合は、こちらのJSON形式でやり取りされるので、こちらを参考にJSONをPOSTすれば、レスポンスと同じようなJSONを受け取ることができます。

AWS CLIで実行

上記で述べたように、実際はAPIを叩いて実行します。

SDKを使ってpythonやjavaなど様々な言語でAPIを扱うことができますが、今回はAWS CLIを使ってみます。

  • Amazon RekognitionのAWS CLIのリファレンスはこちら

以下のコマンドで実行できます。

(--attributes "ALL"を付けると詳細情報(性別や表情など)も取得できます)

S3から読み込む場合

aws rekognition detect-faces --image "S3Object={Bucket=BucketName,Name=ImageName}"

ローカルから読み込む場合

aws rekognition detect-faces --image-bytes fileb://ImageName

レスポンス

{
    "FaceDetails": [
        {
            "BoundingBox": {
                "Width": 0.6987500190734863,
                "Top": 0.19571568071842194,
                "Left": 0.03500000014901161,
                "Height": 0.5443037748336792
            },
            "Landmarks": [
                {
                    "Y": 0.42555564641952515,
                    "X": 0.25307589769363403,
                    "Type": "eyeLeft"
                },
                {
                    "Y": 0.4183715581893921,
                    "X": 0.48155713081359863,
                    "Type": "eyeRight"
                },
                {
                    "Y": 0.554298460483551,
                    "X": 0.33134591579437256,
                    "Type": "nose"
                },
                {
                    "Y": 0.6315187215805054,
                    "X": 0.2754933834075928,
                    "Type": "mouthLeft"
                },
                {
                    "Y": 0.6272069215774536,
                    "X": 0.4577423334121704,
                    "Type": "mouthRight"
                }
            ],
            "Pose": {
                "Yaw": -10.272496223449707,
                "Roll": -1.964564561843872,
                "Pitch": -13.099748611450195
            },
            "Quality": {
                "Sharpness": 99.9305191040039,
                "Brightness": 43.62629699707031
            },
            "Confidence": 99.97090911865234
        }
    ],
    "OrientationCorrection": "ROTATE_0"
}

レスポンスを見ると分かるように、顔や顔の部位などを認識していますね!

こんな感じで画像を分析することができました!

顔の分析以外

顔の分析以外にもできることがたくさんあります。

  • 有名人の認識
  • 顔の比較
  • イメージ内のテキスト
  • ビデオ分析

試しに有名人の認識を行ってみます。

Wikipediaにあった「モナ・リザ」の画像を使いました。

バッチリ認識されています!

実際に使う場合はAPIを叩いて行いますが、GUIでデモを触れておくことでイメージが湧きやすいですね!