Intelligent Media Management (IMM) の顔の類似度比較では、収集された顔画像をシステムに記録されている顔と比較し、類似度スコアを提供します。このスコアは、顔が特定の人物と一致するかどうかを判断するために使用されます。この機能は、認証、本人確認、顔認識などのビジネスアプリケーションで使用して、正確かつ効率的な識別を提供できます。このトピックでは、顔の類似度比較機能の使用方法について説明します。
前提条件
AccessKey ペアが作成され、取得されていること。詳細については、AccessKey ペアの作成を参照してください。
OSS がアクティブ化され、バケットが作成され、オブジェクトがバケットにアップロードされていること。詳細については、オブジェクトのアップロードを参照してください。
IMM がアクティブ化されていること。詳細については、IMM のアクティブ化を参照してください。
IMM コンソールでプロジェクトが作成されていること。詳細については、プロジェクトの作成を参照してください。
説明CreateProject オペレーションを呼び出して、プロジェクトを作成できます。詳細については、CreateProjectを参照してください。
ListProjects オペレーションを呼び出して、特定のリージョンにある既存のプロジェクトをクエリできます。詳細については、ListProjectsを参照してください。
使用方法
CompareImageFaces オペレーションを呼び出して、2 つの画像の 2 つの顔を比較します。
画像
IMM プロジェクト: test-project
画像パス:
oss://test-bucket/test-object1.jpg

oss://test-bucket/test-object2.jpg

リクエスト例
{
"ProjectName": "test-project",
"Source": "{\"URI1\":\"oss://test-bucket/test-object1.jpg\",\"URI2\":\"oss://test-bucket/test-object2.jpg\"}"
}レスポンス例
{
"RequestId": "23AFD925-06CD-56AA-B521-76EC6F******",
"Similarity": 0.18605702
}類似度スコアの最高値は 1 です。類似度スコアが高いほど、顔は類似しています。上記の例では、顔の類似度スコアは 0.18605702 です。類似度スコアが 0.7 を超える場合、顔は同一人物と一致すると見なされます。顔のオクルージョンは類似度スコアに影響を与える可能性があります。
サンプルコード
次のサンプルコードは、IMM SDK for Python を使用して顔の類似度を比較する方法の例を示しています。
# -*- coding: utf-8 -*-
# このファイルは自動生成されています。編集しないでください。
import sys
import os
from typing import List
from alibabacloud_imm20200930.client import Client as imm20200930Client
from alibabacloud_tea_openapi import models as open_api_models
from alibabacloud_imm20200930 import models as imm_20200930_models
from alibabacloud_tea_util import models as util_models
from alibabacloud_tea_util.client import Client as UtilClient
class Sample:
def __init__(self):
pass
@staticmethod
def create_client(
access_key_id: str,
access_key_secret: str,
) -> imm20200930Client:
"""
AccessKey ID と AccessKey Secret を使用してクライアントを初期化します。
@param access_key_id:
@param access_key_secret:
@return: Client
@throws Exception
"""
config = open_api_models.Config(
access_key_id=access_key_id,
access_key_secret=access_key_secret
)
# IMM エンドポイントを指定します。
config.endpoint = f'imm.cn-beijing.aliyuncs.com'
return imm20200930Client(config)
@staticmethod
def main(
args: List[str],
) -> None:
# Alibaba Cloud アカウントの AccessKey ペアは、すべての API オペレーションに対する権限を持っています。セキュリティリスクを防ぐため、API オペレーションの呼び出しや日常の O&M は RAM ユーザーとして実行することをお勧めします。
# AccessKey ペア (AccessKey ID と AccessKey Secret) をプロジェクトコードに含めないことをお勧めします。含めると、AccessKey ペアが漏洩し、アカウント内のすべてのリソースのセキュリティが侵害される可能性があります。
# この例では、API アクセスの ID 検証を実装するために、環境変数から AccessKey ペアを読み取ります。環境変数の設定方法については、https://www.alibabacloud.com/help/document_detail/2361894.html を参照してください。
imm_access_key_id = os.getenv("AccessKeyId")
imm_access_key_secret = os.getenv("AccessKeySecret")
client = Sample.create_client(imm_access_key_id, imm_access_key_secret)
source = imm_20200930_models.CompareImageFacesRequestSource(
uri1='oss://test-bucket/test-object1.jpg',
uri2='oss://test-bucket/test-object2.jpg'
)
compare_image_faces_request = imm_20200930_models.CompareImageFacesRequest(
project_name='test-project',
source=source
)
runtime = util_models.RuntimeOptions()
try:
# API オペレーションのレスポンスを出力することができます。
client.compare_image_faces_with_options(compare_image_faces_request, runtime)
except Exception as error:
# 必要に応じてエラーメッセージを出力します。
UtilClient.assert_as_string(error.message)
@staticmethod
async def main_async(
args: List[str],
) -> None:
# Alibaba Cloud アカウントの AccessKey ペアは、すべての API オペレーションに対する権限を持っています。セキュリティリスクを防ぐため、API オペレーションの呼び出しや日常の O&M は RAM ユーザーとして実行することをお勧めします。
# AccessKey ペア (AccessKey ID と AccessKey Secret) をプロジェクトコードに含めないことをお勧めします。含めると、AccessKey ペアが漏洩し、アカウント内のすべてのリソースのセキュリティが侵害される可能性があります。
# この例では、API アクセスの ID 検証を実装するために、環境変数から AccessKey ペアを読み取ります。環境変数の設定方法については、https://www.alibabacloud.com/help/document_detail/2361894.html を参照してください。
imm_access_key_id = os.getenv("AccessKeyId")
imm_access_key_secret = os.getenv("AccessKeySecret")
client = Sample.create_client(imm_access_key_id, imm_access_key_secret)
source = imm_20200930_models.CompareImageFacesRequestSource(
uri1='oss://test-bucket/test-object1.jpg',
uri2='oss://test-bucket/test-object2.jpg'
)
compare_image_faces_request = imm_20200930_models.CompareImageFacesRequest(
project_name='test-project',
source=source
)
runtime = util_models.RuntimeOptions()
try:
# API オペレーションのレスポンスを出力することができます。
await client.compare_image_faces_with_options_async(compare_image_faces_request, runtime)
except Exception as error:
# 必要に応じてエラーメッセージを出力します。
UtilClient.assert_as_string(error.message)
if __name__ == '__main__':
Sample.main(sys.argv[1:])