画像メタデータをデータセットにインデックス登録した後、顔検索を使用して、特定の顔に最も類似した画像を指定した数だけ検索できます。 顔検索は、顧客識別などの顔ベースのビジネスシナリオで使用できます。
シナリオ
インテリジェント安全監視
顔検索は、顔認識と組み合わせて使用することで、工場、学校、モール、レストランなどの環境で群衆をインテリジェントに監視できます。 この機能により、群衆行動の自動統計収集、分析、追跡が可能になり、潜在的なリスクを特定し、それに応じてアラートを発行できます。 その結果、公共スペースの安全性と管理が向上すると同時に、手動監視に関連するコストが削減されます。
生産安全
顔検索は、ソフトウェアとハードウェアの両方を統合した職場監視ソリューションで使用される重要な技術です。 これらのソリューションは、工場や作業場に設置されたカメラでキャプチャされた顔画像を分析して、不正侵入を検出し、職場の安全リスクを軽減します。
顔ベースのアクセス制御
顔認識技術は、バッフルゲートに実装して、ビジネス構造やアパート複合施設へのアクセスを制御できます。 管理者は、承認された個人の顔情報を信頼性の高いデータベースに安全に保存して、顔ベースのアクセス制御を有効にすることができます。これにより、不正侵入を防ぎ、利便性を向上させることができます。
顔ベースの出勤追跡
顔検索を利用して、モバイルクロックインシステム、迅速なクロックインシステム、統合クロックインおよびアクセス制御システムなど、顔ベースの出勤追跡ソリューションを確立できます。 顔ベースの出勤追跡システムは、キャプチャされた顔画像を 1 秒以内に事前に保存された画像のライブラリとすばやく比較して、出席者の身元を確認します。 この技術は、出勤詐欺を防ぎ、従業員管理を強化するのに役立ちます。
前提条件
比較する画像のメタデータが対応するデータセットにインデックス登録されています。 CreateBinding を呼び出してバケットをデータセットにバインドすることでメタデータを自動的にインデックス登録するか、IndexFileMeta または BatchIndexFileMeta オペレーションを呼び出してメタデータを手動でインデックス登録できます。CreateDataset
次の要件を満たす、同じ人物の顔画像が少なくとも 2 つデータセットに含まれています。
画像の顔領域は 75 × 75 ピクセルより大きくする必要があります。
HeadPose パラメーターの 3 つの要素それぞれの絶対値は 30 未満である必要があります。
FaceQuality パラメーターの値は 0.8 より大きい必要があります。
Simple Message Queue(SMQ)キューが作成されます。 詳細については、「Python 用 SMQ SDK を使用してキューのメッセージを管理する」をご参照ください。
説明この例では、タスク通知は SMQ SDK for Python を使用して送信されます。 詳細については、「非同期タスク処理」をご参照ください。
ステップ 1:OSS にファイルをアップロードする
[オブジェクトストレージサービス(OSS)コンソール] のバケットに、比較する顔を含む画像をアップロードします。

ステップ 2:データセットに画像を追加する
[インテリジェントメディア管理(IMM)コンソール] でデータセットに画像を追加して、顔ライブラリを作成します。 次の図は手順を示しています。


BatchIndexFileMeta オペレーションを呼び出して、複数の画像からデータセットに顔情報を一度に書き込むこともできます。 顔情報の書き込みは非同期プロセスです。 Notification パラメーターを指定して、タスク情報を取得できます。
ステップ 3:顔検索タスクを作成する
CreateFacesSearchingTask オペレーションを呼び出して、指定された画像の最大の顔に最も類似した顔を含む画像を指定された数だけ検索します。 次の例は、test-dataset データセットを検索して、oss://test-bucket/test-object.jpg 画像の顔に最も類似した顔を含む画像を検索する方法を示しています。
サンプルリクエスト
TopicName パラメーターは SMQ トピックを指定します。 この例では、トピック tf-test-mns-topic が使用されています。
MaxResults パラメーターは、返される類似画像の数を指定します。 このパラメーターはオプションです。 パラメーターの値の範囲は 0 ~ 100 です。 デフォルト値は 5 です。
{
"ProjectName": "test-project",
"DatasetName": "test-dataset",
"Sources": [{"URI": "oss://test-bucket/test-object.jpg"}],
"Notification": {"MNS": {"TopicName": "tf-test-mns-topic"}},
"MaxResult": 100
}サンプルレスポンス
{
"TaskId": "CreateFacesSearchingTask-dedf1bd9-7edc-4d16-97f2-bbb2a4fc****",
"RequestId": "BB9C38A3-BB7A-53B7-A168-6DBC1CF6****",
"EventId": "0DA-1TAZO4ClNnKbn4Ungls8SOk****"
}レスポンスが上記のサンプルレスポンスと類似している場合、顔検索タスクが作成されます。
サンプルコード
ステップ 4:顔検索結果をクエリする
顔検索タスクが作成された後、SMQ を使用してタスク情報をクエリできます。 次の例は、SMQ SDK for Python を使用してタスク情報をクエリする方法を示しています。 詳細については、「Python 用 SMQ SDK を使用してキューのメッセージを管理する」をご参照ください。
サンプルプロジェクトディレクトリで次のコマンドを実行します。
python recvdelmessage.py tf-test-mns-queue出力を JSON 形式でフォーマットします。 次の抜粋は、メッセージの content 要素のみを示しています。
{ "ProjectName": "test-project", "DatasetName": "test-dataset", "RequestId": "BB9C38A3-BB7A-53B7-A168-6DBC1CF6****", "StartTime": "2023-01-04T05:08:28.582Z", "EndTime": "2023-01-04T05:08:28.785Z", "UserData": "", "TaskType": "FacesSearching", "TaskId": "CreateFacesSearchingTask-dedf1bd9-7edc-4d16-97f2-bbb2a4fc****", "Status": "Succeeded", "Code": "", // 空の値は、リクエストが成功したことを示します。 "Message": "Success", "SimilarFaces": [ { "URI": "oss://test-bucket/test-object.jpg", "Boundary": { "Width": 109, "Height": 150, "Left": 69, "Top": 49 }, // 類似した顔のリスト。 "SimilarFaces": [ { "URI": "oss://test-bucket/test-object-1.jpg", "FigureId": "4cacbb71-52fd-4d3f-9d14-0840fecee0bf", "Similarity": 0.73321015 }, { "URI": "oss://test-bucket/test-object-2.jpg", "FigureId": "7a4cd08d-bcd0-4bc4-93f4-1291075819cf", "Similarity": 0.77035695 }, { "URI": "oss://test-bucket/test-object-3.jpg", "FigureId": "da920124-410a-4493-9fd3-1a3b366dca86", "Similarity": 0.9836307 } ] } ] }説明メッセージの内容によると、test-dataset データセットには、指定された画像の顔に類似した顔が含まれている画像が 3 つあります。
oss://test-bucket/test-object-1.jpg。類似度は 0.73321015 です。
oss://test-bucket/test-object-2.jpg。類似度は 0.77035695 です。
oss://test-bucket/test-object-3.jpg。類似度は 0.9836307 です。