Intelligent Media Management (IMM) は、画像内のすべての人物を検出し、画像内の各人物の位置や信頼度などの情報を取得できる人物検出機能を提供します。この機能は、セキュリティ監視や人流統計など、さまざまな分野に応用できます。このトピックでは、人物検出機能の使用方法について説明します。
シナリオ
セキュリティ監視: 人物検出を使用して、制限されたエリアや非公開エリアへの不正な個人のアクセスを検出できます。このような人物の活動を検出すると、システムは自動的にアラートをトリガーし、セキュリティ担当者に通知します。
人流統計: ショッピングモール、公共の場所、または大規模な活動において、人物検出を使用して人数をカウントし、混雑レベルを分析し、群衆管理と避難計画を支援できます。
人物検出は、特に照明が不十分な環境、障害物がある環境、または高密度の群衆がいる環境など、すべての状況で高い精度を維持できるとは限りません。
複雑なバックグラウンドや動的なシナリオでは、人物と他のオブジェクトを区別することがより困難になる場合があり、誤検出が発生しやすくなります。
前提条件
AccessKey ペアが作成され、取得されていること。詳細については、「AccessKey ペアの作成」をご参照ください。
OSS が有効化され、バケットが作成され、オブジェクトがバケットにアップロードされていること。詳細については、「オブジェクトのアップロード」をご参照ください。
IMM が有効化されていること。詳細については、「IMM の有効化」をご参照ください。
IMM コンソールでプロジェクトが作成されていること。IMM コンソールを使用してプロジェクトを作成する方法の詳細については、「プロジェクトの作成」をご参照ください。
説明CreateProject 操作を呼び出してプロジェクトを作成することもできます。詳細については、「CreateProject」をご参照ください。
ListProjects 操作を呼び出して、特定のリージョン内の既存のプロジェクトをクエリできます。詳細については、「ListProjects」をご参照ください。
使用方法
DetectImageBodies 操作を呼び出して、画像内の人物に関する情報をクエリします。
画像情報
IMM プロジェクト: test-project
画像の場所: oss://test-bucket/test-object.jpg
画像:

リクエストの例
{
"ProjectName": "test-project",
"SourceURI": "oss://test-bucket/test-object.jpg",
"Sensitivity": 1
}レスポンスの例
{
"RequestId": "E9BDE106-1436-5077-9F6E-65D81DC6FEC8",
"Bodies": [
{
"Confidence": 0.733,
"Boundary": {
"Left": 115,
"Top": 97,
"Height": 103,
"Width": 63
}
},
{
"Confidence": 0.732,
"Boundary": {
"Left": 214,
"Top": 121,
"Height": 86,
"Width": 63
}
},
{
"Confidence": 0.596,
"Boundary": {
"Left": 63,
"Top": 102,
"Height": 100,
"Width": 82
}
},
{
"Confidence": 0.566,
"Boundary": {
"Left": 194,
"Top": 123,
"Height": 82,
"Width": 40
}
}
]
}検出結果
レスポンスの例は、画像内で 4 人の人物が検出されたことを示しています。各人物の位置は次の図にマークされています。

コード例
次のコード例は、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 操作に対する権限を持っています。セキュリティリスクを防ぐため、Resource Access Management (RAM) ユーザーとして API 操作を呼び出すか、日常の O&M を実行することをお勧めします。
# プロジェクトコードに AccessKey ペア (AccessKey ID と AccessKey Secret) を含めないことをお勧めします。そうしないと、AccessKey ペアが漏洩し、アカウント内のすべてのリソースのセキュリティが損なわれる可能性があります。
# この例では、環境変数から AccessKey ペアを読み取り、API アクセスの ID 検証を実装します。環境変数の設定方法の詳細については、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)
detect_image_bodies_request = imm_20200930_models.DetectImageBodiesRequest(
project_name='test-project',
source_uri='oss://test-bucket/test-object.jpg',
sensitivity=1
)
runtime = util_models.RuntimeOptions()
try:
# API 操作のレスポンスをプリントアウトすることもできます。
client.detect_image_bodies_with_options(detect_image_bodies_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 操作に対する権限を持っています。セキュリティリスクを防ぐため、Resource Access Management (RAM) ユーザーとして API 操作を呼び出すか、日常の O&M を実行することをお勧めします。
# プロジェクトコードに AccessKey ペア (AccessKey ID と AccessKey Secret) を含めないことをお勧めします。そうしないと、AccessKey ペアが漏洩し、アカウント内のすべてのリソースのセキュリティが損なわれる可能性があります。
# この例では、環境変数から AccessKey ペアを読み取り、API アクセスの ID 検証を実装します。環境変数の設定方法の詳細については、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)
detect_image_bodies_request = imm_20200930_models.DetectImageBodiesRequest(
project_name='test-project',
source_uri='oss://test-bucket/test-object.jpg',
sensitivity=1
)
runtime = util_models.RuntimeOptions()
try:
# API 操作のレスポンスをプリントアウトすることもできます。
await client.detect_image_bodies_with_options_async(detect_image_bodies_request, runtime)
except Exception as error:
# 必要に応じてエラーメッセージをプリントアウトします。
UtilClient.assert_as_string(error.message)
if __name__ == '__main__':
Sample.main(sys.argv[1:])課金
人物検出中、OSS と IMM の両側で次の課金アイテムが生成されます:
OSS 側: 詳細な料金については、「OSS 料金」をご参照ください。
API
課金アイテム
説明
GetObject
GET リクエスト
リクエスト料金は、成功したリクエストの数に基づいて計算されます。
低頻度アクセスデータ取得
取得したデータが低頻度アクセスデータの場合、低頻度アクセスデータ取得の料金が発生し、取得したデータの量に基づいて課金されます。
アーカイブオブジェクトのリアルタイムアクセス
読み取り対象のオブジェクトがアーカイブ済みオブジェクトであり、バケットでアーカイブオブジェクトのリアルタイムアクセスが有効になっている場合、アーカイブオブジェクトのリアルタイムアクセスの料金が発生し、取得したデータのサイズに基づいて課金されます。
転送アクセラレーション
転送アクセラレーションが有効になっており、アクセラレーションエンドポイントを使用してバケットにアクセスする場合、転送アクセラレーション料金が発生し、データサイズに基づいて課金されます。
HeadObject
GET リクエスト
リクエスト料金は、成功したリクエストの数に基づいて計算されます。
IMM 側: 詳細な料金については、「IMM 課金アイテム」をご参照ください。
重要2025 年 7 月 28 日 11:00 (UTC + 08:00) より、IMM 人物検出サービスは画像検出サービスに統合され、無料モードは課金モードにアップグレードされます。詳細については、「IMM 課金調整のお知らせ」をご参照ください。
API
課金アイテム
説明
DetectImageBodies
ImageDetect
人物検出料金は、成功したリクエストの数に基づいて計算されます。