Identifica cenas, objetos e eventos em imagens e retorna rótulos estruturados. Oferece suporte a milhares de rótulos distribuídos em mais de 30 categorias em uma taxonomia hierárquica.
Casos de uso
|
Cenário |
Descrição |
|
Reconhecimento de conteúdo |
Detecta itens, cenas e outras informações em imagens capturadas ou enviadas para reconhecimento de objetos ou aplicações educacionais. |
|
Álbum inteligente |
Classifica imagens automaticamente com base no conteúdo para organizar álbuns de fotos e galerias sem esforço manual. |
|
Análise de cena |
Identifica objetos e cenas em imagens e aplica rótulos de conteúdo para reduzir custos de anotação manual. |
|
Operações de conteúdo |
Recupera rótulos de imagens para recomendar conteúdo em plataformas de redes sociais, notícias e e-commerce. |
Limites
|
Restrição |
Limite |
|
Formatos de imagem compatíveis |
PNG, JPG, JPEG |
|
Tamanho máximo do arquivo de imagem |
20 MB |
|
Altura ou largura máxima da imagem |
30.000 pixels |
|
Total máximo de pixels |
250 milhões |
Pré-requisitos
São necessários:
Um par de AccessKey. Criar um par de AccessKey
Um bucket do OSS com pelo menos uma imagem enviada. Enviar arquivos
IMM ativado. Ativar o IMM
Um projeto do IMM na mesma região do bucket do OSS. Criar um projeto
Chame CreateProject para criar um projeto programaticamente ou ListProjects para visualizar projetos existentes em uma região.
Detectar rótulos de imagem
Chame DetectImageLabels para detectar rótulos de imagem.
Parâmetros da solicitação
|
Parâmetro |
Tipo |
Descrição |
|
|
String |
Nome do projeto do IMM. |
|
|
String |
URI do OSS da imagem, no formato |
|
|
Float |
Pontuação mínima de confiança para os rótulos retornados. O sistema filtra rótulos abaixo desse limiar. Exemplo: |
Exemplo de solicitação
{
"ProjectName": "test-project",
"SourceURI": "oss://test-bucket/test-object.jpg",
"Threshold": 0.7
}
Campos da resposta
Cada rótulo no array Labels contém:
|
Campo |
Tipo |
Descrição |
|
|
String |
Nome do rótulo detectado, como |
|
|
Float |
Pontuação de confiança do rótulo, variando de 0 a 1. Valores mais altos indicam maior certeza. |
|
|
Float |
Pontuação que indica a proeminência ou centralidade do objeto rotulado na imagem. Valores maiores significam maior destaque visual do objeto. |
|
|
Integer |
Profundidade hierárquica do rótulo. |
|
|
String |
Nome do rótulo pai na taxonomia. Vazio para rótulos de nível superior. |
|
|
String |
Idioma da taxonomia de rótulos, como |
A resposta também inclui um RequestId que identifica cada solicitação.
Exemplo de resposta
Código de exemplo (Python)
Exemplo com o SDK do IMM para 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:
"""
Initialize the client with an AccessKey ID and 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
)
# Specify the endpoint of IMM.
config.endpoint = f'imm.cn-beijing.aliyuncs.com'
return imm20200930Client(config)
@staticmethod
def main(
args: List[str],
) -> None:
# Obtain credentials from environment variables.
# Do not hardcode AccessKey credentials in your code.
imm_access_key_id = os.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
imm_access_key_secret = os.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
# Initialize the client.
client = Sample.create_client(imm_access_key_id, imm_access_key_secret)
detect_image_labels_request = imm_20200930_models.DetectImageLabelsRequest(
project_name='test-project',
source_uri='oss://test-bucket/test-object.jpg',
threshold=0.7
)
runtime = util_models.RuntimeOptions()
try:
# Print the return value of the API operation.
client.detect_image_labels_with_options(detect_image_labels_request, runtime)
except Exception as error:
# Print the error message if the request fails.
UtilClient.assert_as_string(error.message)
@staticmethod
async def main_async(
args: List[str],
) -> None:
# Obtain credentials from environment variables.
# Do not hardcode AccessKey credentials in your code.
imm_access_key_id = os.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
imm_access_key_secret = os.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
# Initialize the client.
client = Sample.create_client(imm_access_key_id, imm_access_key_secret)
detect_image_labels_request = imm_20200930_models.DetectImageLabelsRequest(
project_name='test-project',
source_uri='oss://test-bucket/test-object.jpg',
threshold=0.7
)
runtime = util_models.RuntimeOptions()
try:
# Print the return value of the API operation.
await client.detect_image_labels_with_options_async(detect_image_labels_request, runtime)
except Exception as error:
# Print the error message if the request fails.
UtilClient.assert_as_string(error.message)
if __name__ == '__main__':
Sample.main(sys.argv[1:])
Use um usuário RAM em vez da conta Alibaba Cloud para chamar operações de API. Armazene as credenciais do AccessKey em variáveis de ambiente (ALIBABA_CLOUD_ACCESS_KEY_ID e ALIBABA_CLOUD_ACCESS_KEY_SECRET) em vez de codificá-las diretamente no código source.
Faturamento
A detecção de rótulos em imagens gera cobranças tanto do OSS quanto do IMM.
Faturamento do OSS
|
API |
Item faturável |
Descrição |
|
GetObject |
Solicitações GET |
Cobrança baseada no número de solicitações bem-sucedidas. |
|
GetObject |
Recuperação de dados de Acesso Pouco Frequente (IA) |
Na recuperação de dados IA, a cobrança baseia-se no volume de dados recuperados. |
|
GetObject |
Recuperação de dados de acesso em tempo real do Archive |
Na leitura de um objeto Archive de um bucket com acesso em tempo real ativado, a cobrança baseia-se no tamanho dos dados recuperados. |
|
GetObject |
Aceleração de transferência |
Com a aceleração de transferência ativada e uso de endpoint de aceleração, a cobrança baseia-se no tamanho dos dados. |
|
HeadObject |
Solicitações GET |
Cobrança baseada no número de solicitações bem-sucedidas. |
Faturamento do IMM
|
API |
Item faturável |
Descrição |
|
DetectImageLabels |
ImageLabel |
Cobrança baseada no número de solicitações bem-sucedidas. |
A partir das 11h00 de 28 de julho de 2025 (UTC+8), o item faturável para detecção de rótulos de imagem do IMM mudou de ImageClassification para ImageLabel. Aviso sobre ajuste de faturamento do IMM.
Perguntas frequentes
A detecção de rótulos em imagens suporta a extração de texto, datas ou locais das imagens como rótulos?
Não. A detecção de rótulos em imagens identifica conteúdo visual (objetos, cenas, eventos), mas não executa OCR nem extrai metadados.
Para extrair texto de imagens, use a pesquisa semântica de imagens e analise os resultados em busca de datas ou nomes de organizações. Para recuperar locais de fotos, leia os dados GPS dos metadados EXIF da imagem por meio de uma operação de API de informações de imagem.
Em imagens com conteúdo violento, pornográfico ou outro conteúdo sensível, a detecção automática pode apresentar imprecisões. Recomenda-se revisão manual nesses casos.