Identifie les scènes, objets et événements dans les images et renvoie des libellés structurés. Prend en charge des milliers de libellés répartis dans plus de 30 catégories au sein d'une taxonomie hiérarchique.
Cas d'utilisation
| Scénario | Description |
|---|---|
| Reconnaissance de contenu | Détectez des éléments, des scènes et d'autres informations dans les images capturées ou téléchargées pour la reconnaissance d'objets ou les applications éducatives. |
| Album intelligent | Classez automatiquement les images en fonction de leur contenu afin d'organiser les albums photo et les galeries sans intervention manuelle. |
| Analyse de scène | Détectez les objets et les scènes dans les images, puis appliquez des libellés de contenu pour réduire les coûts d'annotation manuelle. |
| Opérations sur le contenu | Récupérez les libellés d'image pour la recommandation de contenu sur les réseaux sociaux, les plateformes d'actualités et de commerce électronique. |
Limites
| Contrainte | Limite |
|---|---|
| Formats d'image pris en charge | PNG, JPG, JPEG |
| Taille maximale du fichier image | 20 Mo |
| Hauteur ou width maximale de l'image | 30 000 pixels |
| Nombre total maximal de pixels | 250 millions |
Prérequis
Vous avez besoin des éléments suivants :
Une paire AccessKey. Créer une paire AccessKey
Un bucket OSS contenant au moins une image téléchargée. Télécharger des fichiers
IMM activé. Activer IMM
Un projet IMM situé dans la même région que votre bucket OSS. Créer un projet
Appelez CreateProject pour créer un projet par programmation, ou ListProjects pour consulter les projets existants dans une région.
Détecter les libellés d'image
Appelez DetectImageLabels pour détecter les libellés d'image.
Paramètres de la requête
| Paramètre | Type | Description |
|---|---|---|
ProjectName |
String | Le nom du projet IMM. |
SourceURI |
String | L'URI OSS de l'image, au format oss://bucket-name/object-key. |
Threshold |
Float | Le score de confiance minimal pour les libellés renvoyés. Les libellés inférieurs à ce seuil sont filtrés. Exemple : 0.7. |
Exemple de requête
{
"ProjectName": "test-project",
"SourceURI": "oss://test-bucket/test-object.jpg",
"Threshold": 0.7
}
Champs de la réponse
Chaque libellé du tableau Labels contient :
| Champ | Type | Description |
|---|---|---|
LabelName |
String | Le nom du libellé détecté, tel que Dog, Building ou Camping. |
LabelConfidence |
Float | Le score de confiance du libellé, compris entre 0 et 1. Des valeurs plus élevées indiquent une certitude plus grande. |
CentricScore |
Float | Un score indiquant la proéminence ou la centralité de l'objet étiqueté dans l'image. Des valeurs plus élevées signifient que l'objet est visuellement plus prédominant. |
LabelLevel |
Integer | La profondeur hiérarchique du libellé. 1 = catégorie de niveau supérieur, 2 = catégorie intermédiaire, 3 = libellé granulaire. |
ParentLabelName |
String | Le nom du libellé parent dans la taxonomie. Vide pour les libellés de niveau supérieur. |
Language |
String | La langue de la taxonomie des libellés, telle que zh-Hans. |
La réponse inclut également un RequestId qui identifie chaque requête.
Exemple de réponse
Exemple de code (Python)
Exemple utilisant le SDK Python pour IMM :
# -*- 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:])
Utilisez un utilisateur RAM plutôt que votre compte Alibaba Cloud pour appeler les opérations API. Stockez les identifiants AccessKey dans des variables d'environnement (ALIBABA_CLOUD_ACCESS_KEY_ID et ALIBABA_CLOUD_ACCESS_KEY_SECRET) au lieu de les coder en dur dans votre code source.
Facturation
La détection de libellés d'image entraîne des frais pour OSS et IMM.
Facturation OSS
| API | Élément facturable | Description |
|---|---|---|
| GetObject | Requêtes GET | Facturé en fonction du nombre de requêtes réussies. |
| GetObject | Récupération de données Infrequent Access (IA) | Si vous récupérez des données IA, les frais sont calculés en fonction du volume de données récupérées. |
| GetObject | Récupération de données Archive en temps réel | Si vous lisez un objet Archive depuis un bucket avec accès en temps réel activé, les frais sont calculés en fonction de la taille des données récupérées. |
| GetObject | Accélération de transfert | Si l'accélération de transfert est activée et qu'un endpoint d'accélération est utilisé, les frais sont calculés en fonction de la taille des données. |
| HeadObject | Requêtes GET | Facturé en fonction du nombre de requêtes réussies. |
Facturation IMM
| API | Élément facturable | Description |
|---|---|---|
| DetectImageLabels | ImageLabel | Facturé en fonction du nombre de requêtes réussies. |
À partir du 28 juillet 2025 à 11 h 00 (UTC+8), l'élément facturable pour la détection de libellés d'image IMM est passé de ImageClassification à ImageLabel. Avis concernant l'ajustement de la facturation IMM.
FAQ
La détection de libellés d'image prend-elle en charge l'extraction de texte, de dates ou de localisations à partir des images sous forme de libellés ?
Non. La détection de libellés d'image identifie le contenu visuel (objets, scènes, événements), mais n'effectue pas de reconnaissance optique de caractères (OCR) ni n'extrait de métadonnées.
Pour extraire du texte des images, utilisez la recherche sémantique d'image, puis analysez les résultats pour obtenir des dates ou des noms d'organisation. Pour récupérer l'emplacement des photos, lisez les données GPS des métadonnées EXIF de l'image via une opération API d'information sur l'image.
Pour les images contenant du contenu violent, pornographique ou autre contenu sensible, la détection automatique peut manquer de précision. Une révision manuelle peut être nécessaire.