このトピックでは、顔属性検出 API を使用して、画像内の顔とその属性を識別する方法について説明します。
1. 機能説明
顔属性検出の2.0は、画像内のさまざまな顔の特徴(ぼかし、角度、位置、笑顔の強度、眼鏡、マスク、帽子、口ひげ、前髪、さまざまな髪型の有無など)を分析できます。プロフェッショナル版では、さらに誇張された表情や目が閉じているかどうかを認識します。
サービス | 検出内容 |
サービス名:顔属性検出 サービス:faceDetect_global |
|
サービス名:顔属性検出 プロフェッショナル版 サービス:faceDetect_pro_global |
|
2. 課金説明
画像顔属性検出2.0では、従量課金を含む課金方法を提供しています。
従量課金
Content Moderation2.0 サービスを有効化すると、デフォルトの課金オプションは従量課金になります。料金は実際の使用量に基づいて毎日決済され、サービスを使用しない場合は課金されません。
モデレーションタイプ | サポートされているビジネスシナリオ (サービス) | 単価 |
画像認識 Standard (image_standard) |
| 1,000 回あたり 0.6 米ドル 説明 左側のサービスへの呼び出しは 1 回ごとに課金されます。課金は実際の呼び出し量に基づいています。たとえば、顔属性検出を 100 回呼び出すと、0.06 米ドルかかります。 |
画像認識 Advanced (image_advanced) |
| 1,000 回あたり 1.2 米ドル 説明 左側のサービスへの呼び出しは 1 回ごとに課金されます。課金は実際の呼び出し量に基づいています。たとえば、顔属性検出プロフェッショナル版を 100 回呼び出すと、0.12 米ドルかかります。 |
Content Moderation 2.0 の課金頻度は、 24 時間に 1 回です。課金明細では、moderationType
はモデレーションタイプのフィールドに対応しています。[こちら]で詳細をご確認いただけます。
3. アクセスガイド
Alibaba Cloud アカウントを作成します。[今すぐ登録]して、プロンプトに従って登録を完了します。
従量課金制 Content Moderation を有効化する: サービスを有効化していることを確認します。有効化は無料であり、課金は使用量に基づいて行われます。詳細については、「課金説明」をご参照ください。
AccessKey を作成します。RAM 経由で AccessKey を作成します [AccessKey の作成]。サブアカウント AccessKey を使用する場合は、メインアカウントから AliyunYundunGreenWebFullAccess 権限を付与します。手順については、「[RAM 承認]」をご参照ください。
開発アクセス:SDK メソッドでの呼び出しをお勧めします。詳細は、「画像モデレーション 強化版 2.0 SDK およびアクセスガイド」をご参照ください。
4. API インターフェイス
使用方法
画像コンテンツ検出タスクを作成するには、このインターフェイスを呼び出します。HTTP リクエストの作成については、「アクセスガイド」をご参照ください。または、事前に作成された HTTP リクエストを使用します。詳細については、「SDK リファレンス」をご参照ください。
ビジネスインターフェイス:ImageModeration
サポートされているリージョンとアクセスアドレス:
リージョン | パブリックアクセスアドレス | プライベートアクセスアドレス | サポートされているサービス |
シンガポール | https://green-cip.ap-southeast-1.aliyuncs.com | https://green-cip-vpc.ap-southeast-1.aliyuncs.com | faceDetect_global, faceDetect_pro_global |
課金情報:
このインターフェイスは有料です。HTTP ステータスコード 200 のリクエストのみが課金されます。エラーコードは課金されません。課金オプションについては、「課金説明」をご参照ください。
画像要件:
サポートされている形式は、PNG、JPG、JPEG、BMP、WEBP、TIFF、SVG、HEIC (最長辺は 8192 px 未満である必要があります)、GIF (最初のフレーム)、ICO (最後の画像) です。
画像サイズは 20 MB に制限されており、最大高または幅は 16,384 px、ピクセル総数は 1 億 6,700 万 px を超えません。効果的なモデレーションのために、画像は 200 × 200 px 以上の解像度であることをお勧めします。
画像のダウンロード時間は 3 秒に制限されています。これを超えると、ダウンロードがタイムアウトになります。
QPS 制限
シングルユーザーの QPS 制限は、10 回/秒 (プロフェッショナル版:5 回/秒) です。この制限を超えると、API 呼び出しがスロットルされ、サービスに影響を与える可能性があります。責任を持って呼び出してください。大量または緊急のスケールアウトのために、より高い QPS が必要な場合は、ビジネス マネージャーにお問い合わせください。
デバッグ
アクセスする前に、Alibaba Cloud OpenAPI を介してオンラインでデバッグし、2.0 インターフェースのコード例と SDK の依存関係を確認し、インターフェースの使用方法とパラメーターについて理解しておいてください。
オンラインデバッグでは、現在ログインしているアカウントを使用して Content Moderation API インターフェイスを呼び出すため、呼び出し量はアカウントの課金使用量に含まれます。
リクエストパラメーター
必須のパブリックリクエストパラメーターについては、
必須のパブリックリクエストパラメーターについては、「画像モデレーション 強化版 2.0 SDK およびアクセスガイド」をご参照ください。
リクエスト本文は、次のフィールドを持つ JSON 構造体です。
名前 | タイプ | 必須 | 例 | 説明 |
Service | String | はい | faceDetect_global | 画像検出強化版でサポートされている検出サービス。有効な値:
|
ServiceParameters | JSONString | はい | コンテンツ検出オブジェクトの関連パラメーターセット。JSON 文字列形式。各文字列の説明については、「ServiceParameters」をご参照ください。 |
表 1. ServiceParameters
名前 | タイプ | 必須 | 例 | 説明 |
imageUrl | String | はい。画像認識強化版では、画像を入力する 3 つの方法をサポートしています。いずれか 1 つを選択してください。
| https://img.alicdn.com/tfs/TB1U4r9AeH2gK0jSZJnXXaT1FXa-2880-480.png | 検出対象オブジェクトの URL。URL はパブリックネットワーク経由でアクセスできること、URL の長さが 2048 文字を超えないことを確認してください。 説明 URL に中国語の文字を含めることはできません。また、リクエストごとに 1 つの URL のみを入力してください。 |
ossBucketName | String | bucket_01 | 承認された OSS バケットのバケット名。 説明 OSS 画像プライベートネットワークアドレスを使用する場合は、まず Alibaba Cloud アカウント (つまり、メインアカウント) を使用して [クラウド リソースアクセス承認ページ] にアクセスして承認する必要があります。 | |
ossObjectName | String | 20240307/04/24/test.jpg | 承認された OSS バケットのファイル名。 | |
ossRegionId | String | cn-beijing | OSS バケットが配置されているリージョン。 | |
dataId | String | いいえ | img123**** | 検出オブジェクトに対応するデータ ID。 大文字と小文字の英字、数字、アンダースコア (_)、ハイフン (-)、ピリオド (.) で構成され、64 文字を超えません。ビジネスデータを一意に識別するために使用できます。 |
referer | String | いいえ | www.aliyun.com | referer リクエストヘッダー。ホットリンク保護などのシナリオで使用されます。長さは 256 文字を超えません。 |
戻りデータ
名前 | タイプ | 例 | 説明 |
RequestId | String | 70ED13B0-BC22-576D-9CCF-1CC12FEAC477 | リクエストの ID。問題の特定とトラブルシューティングに使用されます。 |
Data | Object | 画像コンテンツ検出結果。詳細については、「Data」をご参照ください。 | |
Code | Integer | 200 | レスポンスコード。詳細については、「コードの説明」をご参照ください。 |
Msg | String | OK | このリクエストのレスポンスメッセージ。 |
表 2. Data
名前 | タイプ | 例 | 説明 |
Ext | Object | 顔属性検出結果。詳細については、「Ext」をご参照ください。 | |
DataId | String | img123****** | 検出オブジェクトに対応するデータ ID。 説明 検出リクエストパラメーターで dataId パラメーターを指定した場合、対応する dataId がここに返されます。 |
Result | Array | 画像モデレーションのリスクタグと信頼度スコア。詳細については、「Result」をご参照ください。 説明 顔属性検出を使用する場合、この戻り値は一時的に無視できます。 |
表 3. Ext
名前 | タイプ | 例 | 説明 |
FaceData | Array | 顔属性検出結果。詳細については、「FaceData」をご参照ください。 |
表 4. FaceData
名前 | タイプ | 例 | 説明 |
Location | JSONObject | 顔の位置情報。具体的な構造の説明については、「Location」をご参照ください。 | |
Smile | Float | 85.88 | 顔の笑顔の度合い。値の範囲は 0 ~ 100 です。スコアが高いほど、笑顔の度合いが大きくなります。 |
Glasses | String | None | 眼鏡をかけているかどうかの認識結果。有効な値:
|
Age | Integer | 18 | 年齢認識結果。 |
Quality | JSONObject | 顔画像の品質情報。具体的な構造の説明については、「Quality」をご参照ください。 | |
Mask | JSONObject | マスクをかけているかどうかの認識結果。具体的な構造の説明については、「Mask」をご参照ください。 | |
Hat | JSONObject | 帽子をかぶっているかどうかの認識結果。具体的な構造の説明については、「Hat」をご参照ください。 | |
Mustache | JSONObject | 口ひげがあるかどうかの認識結果。具体的な構造の説明については、「Mustache」をご参照ください。 | |
Bang | JSONObject | 前髪があるかどうかの認識結果。具体的な構造の説明については、「Bang」をご参照ください。 | |
Hairstyle | JSONObject | 髪型の認識結果。具体的な構造の説明については、「Hairstyle」をご参照ください。 | |
Gender | JSONObject | 性別の認識結果。具体的な構造の説明については、「Gender」をご参照ください。 |
表 5.Location
名前 | タイプ | 例 | 説明 |
X | Float | 41 | 画像の左上隅から顔領域の左上隅の y 軸までの距離 (ピクセル単位)。 |
Y | Float | 84 | 画像の左上隅から顔領域の左上隅の x 軸までの距離 (ピクセル単位)。 |
W | Float | 83 | 顔領域の幅 (ピクセル単位)。 |
H | Float | 26 | 顔領域の高さ (ピクセル単位)。 |
表 6.Quality
名前 | タイプ | 例 | 説明 |
Blur | Float | 5.88 | 顔画像のぼかしの度合い。値の範囲は 0 ~ 100 です。スコアが高いほど、ぼかしが強くなります。 推奨値の範囲:0 ~ 25。 |
Integrity | Float | 100.0 | 顔の完全性。値の範囲は 0 ~ 100 です。スコアが高いほど、完全性が高くなります。 推奨値の範囲:80 ~ 100。 |
Pitch | Float | 5.88 | 顔のピッチ角。 推奨値の範囲:-30 ~ 30。 |
Yaw | Float | 5.18 | 顔のヨー角。 推奨値の範囲:-30 ~ 30。 |
Roll | Float | 5.18 | 顔のロール角。 推奨値の範囲:-30 ~ 30。 |
表 7.Mask
名前 | タイプ | 例 | 説明 |
Value | String | None | マスクをかけているかどうかの認識結果。有効な値:
|
Confidence | Float | 99.99 | マスク認識結果の信頼度。値の範囲は 0 ~ 100 です。値が高いほど、結果は信頼性が高くなります。 |
表 8.Hat
名前 | タイプ | 例 | 説明 |
Value | String | Wear | 帽子をかぶっているかどうかの認識結果。有効な値:
|
Confidence | Float | 88.88 | 帽子認識結果の信頼度。値の範囲は 0 ~ 100 です。値が高いほど、結果は信頼性が高くなります。 |
表 9.Mustache
名前 | タイプ | 例 | 説明 |
Value | String | None | 口ひげがあるかどうかの認識結果。有効な値:
|
Confidence | Float | 99.99 | 口ひげ認識結果の信頼度。値の範囲は 0 ~ 100 です。値が高いほど、結果は信頼性が高くなります。 |
表 10.Bang
名前 | タイプ | 例 | 説明 |
Value | String | None | 前髪があるかどうかの認識結果。有効な値:
|
Confidence | Float | 81.88 | 前髪認識結果の信頼度。値の範囲は 0 ~ 100 です。値が高いほど、結果は信頼性が高くなります。 |
表 11.Hairstyle
名前 | タイプ | 例 | 説明 |
Value | String | Short | 髪型の認識結果。有効な値:
|
Confidence | Float | 81.88 | 髪型認識結果の信頼度。値の範囲は 0 ~ 100 です。値が高いほど、結果は信頼性が高くなります。 |
表 12.Gender
名前 | タイプ | 例 | 説明 |
Value | String | Male | 性別の認識結果。有効な値:
|
Confidence | Float | 81.88 | 性別認識結果の信頼度。値の範囲は 0 ~ 100 です。値が高いほど、結果は信頼性が高くなります。 |
表 13. Result
名前 | タイプ | 例 | 説明 |
Label | String | nonLabel | 顔属性検出プロフェッショナル版は、次の値を含む属性ラベルを返します。
説明 誇張された表情と目が閉じているかどうかは、画像内の顔に基づいて総合的に判断されます。単一顔のシナリオで使用することをお勧めします。 |
Confidence | Float | 99.99 | 信頼度スコア、0 ~ 100 ポイント、小数点以下 2 桁まで保持。nonLabel が返された場合は、信頼度スコアは返されません。 |
例
リクエスト例
{
"Service": "faceDetect_global",
"ServiceParameters": {
"imageUrl": "https://img.alicdn.com/tfs/TB1U4r9AeH2gK0jSZJnXXaT1FXa-2880-480.png",
"dataId": "test0307****"
}
}
レスポンス例
顔属性検出レスポンス例:
{
"Code": 200,
"Data": {
"DataId": "test0307****",
"Ext": {
"FaceData": [
{
"Age": 24,
"Bang": {
"Confidence": 100.0,
"Value": "None"
},
"Gender": {
"Confidence": 95.72,
"Value": "Male"
},
"Glasses": "None",
"Hairstyle": {
"Confidence": 98.23,
"Value": "Short"
},
"Hat": {
"Confidence": 99.99,
"Value": "None"
},
"Location": {
"H": 98,
"W": 98,
"X": 550,
"Y": 251
},
"Mask": {
"Confidence": 99.99,
"Value": "None"
},
"Mustache": {
"Confidence": 99.58,
"Value": "None"
},
"Quality": {
"Blur": 13.72,
"Integrity": 100.0,
"Pitch": 5.84,
"Roll": 3.66,
"Yaw": 21.22
},
"Smile": 82.49
}
]
},
"Result": [
{
"Confidence": null,
"Description": "リスクは検出されませんでした",
"Label": "nonLabel"
}
],
"RiskLevel": "none"
},
"Msg": "success",
"RequestId": "TEST001-2024-0307-0728-5201314YHX"
}
顔属性検出プロフェッショナル版レスポンス例:
{
"Code": 200,
"Data": {
"DataId": "test0307****",
"Ext": {
"FaceData": [
{
"Age": 24,
"Bang": {
"Confidence": 100.0,
"Value": "None"
},
"Gender": {
"Confidence": 95.72,
"Value": "Male"
},
"Glasses": "None",
"Hairstyle": {
"Confidence": 98.23,
"Value": "Short"
},
"Hat": {
"Confidence": 99.99,
"Value": "None"
},
"Location": {
"H": 98,
"W": 98,
"X": 550,
"Y": 251
},
"Mask": {
"Confidence": 99.99,
"Value": "None"
},
"Mustache": {
"Confidence": 99.58,
"Value": "None"
},
"Quality": {
"Blur": 13.72,
"Integrity": 100.0,
"Pitch": 5.84,
"Roll": 3.66,
"Yaw": 21.22
},
"Smile": 82.49
}
]
},
"Result": [
{
"Label": "face_exaggerated",
"Description": "画像内の人物は誇張された表情をしています",
"Confidence": 80.0
}
],
"RiskLevel": "high"
},
"Msg": "success",
"RequestId": "TEST001-2024-0307-0728-5201314YHX"
}
このドキュメントで提供されているリクエストと戻りの例は、読みやすくするためにフォーマットされています。実際のリザルトは、改行、インデント、その他のフォーマットなしで返されます。
コードの説明
インターフェイスによって返されるコードの意味を以下に詳しく説明します。コード 200 のリクエストのみがメーターされ、課金されます。その他のコードは課金されません。
コード | 説明 |
200 | リクエストは正常です。 |
400 | リクエストパラメーターが空です。 |
401 | 指定されたパラメーターが無効です。 |
402 | リクエストパラメーターの長さがインターフェイスの要件を満たしていません。確認して変更してください。 |
403 | リクエストが QPS 制限を超えています。同時実行性を確認して調整してください。 |
404 | 入力画像のダウンロード中にエラーが発生しました。確認するか、再試行してください。 |
405 | 入力画像のダウンロードがタイムアウトしました。画像にアクセスできない可能性があります。確認して調整してから、再試行してください。 |
406 | 入力画像が大きすぎます。画像サイズを確認して調整してから、再試行してください。 |
407 | 入力画像形式はサポートされていません。確認して調整してから、再試行してください。 |
408 | このアカウントには、このインターフェイスを呼び出す権限がありません。アカウントが有効化されていないか、期限切れであるか、呼び出しアカウントにアクセスが承認されていない可能性があります。 |
500 | システム例外が発生します。 |