LoginSignup
1
0

More than 1 year has passed since last update.

Tencent Cloud Face Recognition API 触ってみた

Last updated at Posted at 2021-11-02

みなさん、顔解析してますか?
僕はやったことがないので、Tencent Cloudのサービスの1つである"Face Recognition API"を用いて、画像の顔解析を試してみました。

TCCLIの準備

$ pip3 install tccli-intl-en

$ tccli --version
3.0.322.1

$ tccli configure
TencentCloud API secretId[None]: xxx
TencentCloud API secretKey[None]: xxx
Default region name[ap-guangzhou]: ap-tokyo
Default output format[json]: json

tccliが使えるようになりました。

DetectFace APIを叩いてみる

評価用画像として、弊社代表を使用(公式webから拝借)。
jin.jpg

当該のAPIはap-tokyoリージョンでサポートされていなかったため、
ap-singaporeを指定し、下記コマンドを実行。

tccli iai DetectFace --region ap-singapore --Url https://mynet.co.jp/assets/uploads/sites/2/2017/05/c7252e9ab2c39d35379de17646d163c5.jpg

2秒ほどでレスポンスが返ってきました。結果は以下。

{
    "ImageWidth": 920,
    "ImageHeight": 800,
    "FaceInfos": [
        {
            "X": 371,
            "Y": 103,
            "Width": 209,
            "Height": 272,
            "FaceAttributesInfo": {
                "Gender": 0,
                "Age": 0,
                "Expression": 0,
                "Glass": false,
                "Pitch": 0,
                "Yaw": 0,
                "Roll": 0,
                "Beauty": 0,
                "Hat": false,
                "Mask": false,
                "Hair": {
                    "Length": 0,
                    "Bang": 0,
                    "Color": 0
                },
                "EyeOpen": false
            },
            "FaceQualityInfo": {
                "Score": 0,
                "Sharpness": 0,
                "Brightness": 0,
                "Completeness": {
                    "Eyebrow": 0,
                    "Eye": 0,
                    "Nose": 0,
                    "Cheek": 0,
                    "Mouth": 0,
                    "Chin": 0
                }
            }
        }
    ],
    "FaceModelVersion": "3.0",
    "RequestId": "1482e17c-5108-4624-803f-75eb257d3b59"
}

FaceInfos.X,YからWidth,Heightを取ると

jin_face.png
こんな感じ。しっかりと顔の領域が取れていますね。

FaceAttributesInfo, FaceQualityInfoが空値なのは、それぞれのデフォルトがFalseなためです。
ためしに、全部入りのレスポンスを受け取ってみましょう。

tccli iai DetectFace --region ap-singapore --Url https://mynet.co.jp/assets/uploads/sites/2/2017/05/c7252e9ab2c39d35379de17646d163c5.jpg --NeedFaceAttributes 1 --NeedQualityDetection 1
{
    "ImageWidth": 920,
    "ImageHeight": 800,
    "FaceInfos": [
        {
            "X": 371,
            "Y": 103,
            "Width": 209,
            "Height": 272,
            "FaceAttributesInfo": {
                "Gender": 99,
                "Age": 33,
                "Expression": 85,
                "Glass": false,
                "Pitch": 12,
                "Yaw": 6,
                "Roll": -4,
                "Beauty": 69,
                "Hat": false,
                "Mask": false,
                "Hair": {
                    "Length": 1,
                    "Bang": 1,
                    "Color": 2
                },
                "EyeOpen": true
            },
            "FaceQualityInfo": {
                "Score": 92,
                "Sharpness": 1045,
                "Brightness": 62,
                "Completeness": {
                    "Eyebrow": 99,
                    "Eye": 99,
                    "Nose": 99,
                    "Cheek": 99,
                    "Mouth": 99,
                    "Chin": 99
                }
            }
        }
    ],
    "FaceModelVersion": "3.0",
    "RequestId": "e63e1c5c-d849-41cc-821f-00fc2abf75a4"
}

詳細な情報を取得できました。
眼鏡や帽子・マスクの有無や推定年齢などがありますね。
Pitch/Yaw/Roll値も取れるため、実装によっては立体的な演出も加えられそうですね。素晴らしい。

1枚の画像から複数の顔を検知する必要がある場合は、--MaxFaceNum値を渡します。
デフォルトは1なので、数量を明示しないと顔を複数検知できる画像でも、1つしか検知しません。
検知の優先条件は今の所不明。

次のステップ

コマンドラインから--Imageで、実データをbase64変換して渡してみたところ、bash: argument list too manyで渡せませんでした。
リダイレクトで渡せそうですが、せっかくなので次はSDKを用いた代替の実装をした上で、実データ渡しの対応と、活用例として簡単な画像処理を試してみます。

おわりに

株式会社マイネットでは一緒に働く仲間を募集しています!
弊社では様々なゲームタイトルをより長く、安定して運営していくために、インフラ最適化にも積極的に取り組んでいます。興味のある方、ご応募お待ちしております!
https://mynet.co.jp/recruitment/

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0