La détection des libellés d'image identifie les informations telles que les scènes, les objets et les événements présents dans une image. Utilisez cette fonctionnalité pour étiqueter automatiquement vos images.
Cas d'utilisation
|
Scénario |
Description |
|
Reconnaissance de contenu |
Détectez les éléments, les 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 les sites e-commerce. |
Cas d'utilisation
|
Scénario |
Description |
|
Reconnaissance de contenu |
Détectez les éléments, les 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 les sites e-commerce. |
Cas d'utilisation
|
Scénario |
Description |
|
Reconnaissance de contenu |
Détectez les éléments, les 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 les sites e-commerce. |
Cas d'utilisation
|
Scénario |
Description |
|
Reconnaissance de contenu |
Détectez les éléments, les 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 les sites e-commerce. |
Précautions
La détection des libellés d'image prend uniquement en charge les images aux formats JPG, PNG ou JPEG.
-
Les limites suivantes s'appliquent à la taille des images :
La taille de l'image ne doit pas dépasser 20 Mo.
La hauteur ou la largeur de l'image ne doit pas dépasser 30 000 pixels.
Le nombre total de pixels de l'image ne doit pas dépasser 250 millions.
La détection des libellés d'image prend uniquement en charge le traitement synchrone, via la méthode
x-oss-process.L'accès anonyme est refusé.
L'accès anonyme est refusé.
L'accès anonyme est refusé.
L'accès anonyme est refusé.
L'accès anonyme est refusé.
Utilisation
Prérequis
Dans OSS, créez un bucket et téléchargez les fichiers que vous souhaitez traiter dans le bucket.
Créez et associez un projet IMM. Vous pouvez l'associer depuis la console OSS ou en appelant une API. Le projet IMM doit se trouver dans la même région que le bucket.
Détecter les libellés d'image
Les exemples suivants montrent comment détecter des libellés à l'aide des SDK courants. Adaptez le code de ces exemples pour les autres SDK.
Python
Utilisez le SDK Python version 2.18.4 ou ultérieure.
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
# Obtain access credentials from environment variables.
# Set OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET before running this code.
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# Set the endpoint for the region where the bucket is located.
endpoint = 'https://oss-cn-hangzhou.aliyuncs.com'
region = 'cn-hangzhou'
bucket = oss2.Bucket(auth, endpoint, 'examplebucket', region=region)
# Specify the object key. Include the full path if the image is not in the root directory,
# for example, exampledir/example.jpg.
key = 'example.jpg'
process = 'image/labels'
try:
result = bucket.get_object(key, process=process)
image_labels = result.read().decode('utf-8')
print("Image labels:")
print(image_labels)
except oss2.exceptions.OssError as e:
print("Error:", e)
Java
Utilisez le SDK Java version 3.17.4 ou ultérieure.
import com.aliyun.oss.ClientBuilderConfiguration;
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.common.auth.CredentialsProviderFactory;
import com.aliyun.oss.common.auth.EnvironmentVariableCredentialsProvider;
import com.aliyun.oss.common.comm.SignVersion;
import com.aliyun.oss.model.OSSObject;
import com.aliyun.oss.model.GetObjectRequest;
import com.aliyuncs.exceptions.ClientException;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
public class Demo {
public static void main(String[] args) throws ClientException, ClientException {
// Set the endpoint for the region where the bucket is located.
String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
String region = "cn-hangzhou";
// Obtain access credentials from environment variables.
// Set OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET before running this code.
EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
String bucketName = "examplebucket";
// Specify the object key. Include the full path if the image is not in the root directory,
// for example, exampledir/example.jpg.
String key = "example.jpg";
ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);
OSS ossClient = OSSClientBuilder.create()
.endpoint(endpoint)
.credentialsProvider(credentialsProvider)
.clientConfiguration(clientBuilderConfiguration)
.region(region)
.build();
try {
GetObjectRequest getObjectRequest = new GetObjectRequest(bucketName, key);
getObjectRequest.setProcess("image/labels");
OSSObject ossObject = ossClient.getObject(getObjectRequest);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int bytesRead;
while ((bytesRead = ossObject.getObjectContent().read(buffer)) != -1) {
baos.write(buffer, 0, bytesRead);
}
String imageLabels = baos.toString("UTF-8");
System.out.println("Image labels:");
System.out.println(imageLabels);
} catch (IOException e) {
System.out.println("Error: " + e.getMessage());
} finally {
ossClient.shutdown();
}
}
}
Go
Utilisez le SDK Go version 3.0.2 ou ultérieure.
package main
import (
"fmt"
"io"
"os"
"github.com/aliyun/aliyun-oss-go-sdk/oss"
)
func main() {
// Obtain access credentials from environment variables.
// Set OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET before running this code.
provider, err := oss.NewEnvironmentVariableCredentialsProvider()
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// Set the endpoint for the region where the bucket is located.
client, err := oss.New("https://oss-cn-hangzhou.aliyuncs.com", "", "", oss.SetCredentialsProvider(&provider), oss.AuthVersion(oss.AuthV4), oss.Region("cn-hangzhou"))
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
bucket, err := client.Bucket("examplebucket")
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// Specify the object key. Include the full path if the image is not in the root directory,
// for example, exampledir/example.jpg.
body, err := bucket.GetObject("example.jpg", oss.Process("image/labels"))
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
defer body.Close()
data, err := io.ReadAll(body)
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
fmt.Println("Image labels:", string(data))
}
PHP
Utilisez le SDK PHP version 2.7.0 ou ultérieure.
<?php
if (is_file(__DIR__ . '/../autoload.php')) {
require_once __DIR__ . '/../autoload.php';
}
if (is_file(__DIR__ . '/../vendor/autoload.php')) {
require_once __DIR__ . '/../vendor/autoload.php';
}
use OSS\Credentials\EnvironmentVariableCredentialsProvider;
use OSS\OssClient;
try {
// Obtain access credentials from environment variables.
// Set OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET before running this code.
$provider = new EnvironmentVariableCredentialsProvider();
// Set the endpoint for the region where the bucket is located.
$endpoint = 'https://oss-cn-hangzhou.aliyuncs.com';
$bucket = 'examplebucket';
// Specify the object key. Include the full path if the image is not in the root directory,
// for example, exampledir/example.jpg.
$key = 'example.jpg';
$config = array(
"provider" => $provider,
"endpoint" => $endpoint,
"signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
"region" => "cn-hangzhou"
);
$ossClient = new OssClient($config);
$options[$ossClient::OSS_PROCESS] = "image/labels";
$result = $ossClient->getObject($bucket, $key, $options);
var_dump($result);
} catch (OssException $e) {
printf($e->getMessage() . "\n");
return;
}
Obtenir des libellés avec le seuil par défaut
Configuration du seuil
Le paramètre thr n'est pas spécifié, le seuil par défaut de 0,7 s'applique donc.
Exemple de traitement
GET /example.jpg?x-oss-process=image/labels HTTP/1.1
Host: image-demo.oss-cn-hangzhou.aliyuncs.com
Date: Fri, 21 Jul 2023 08:30:25 GMT
Authorization: SignatureValue
Exemple de réponse
HTTP/1.1 200 OK
Server: AliyunOSS
Date: Fri, 21 Jul 2023 08:30:26 GMT
Content-Type: application/json;charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive
Vary: Accept-Encoding
x-oss-request-id: 64BA42225DFDD13437ECD00E
Last-Modified: Mon, 10 Jul 2023 13:07:30 GMT
x-oss-object-type: Normal
x-oss-hash-crc64ecma: 13420962247653419692
x-oss-storage-class: Standard
x-oss-ec: 0048-00000104
Content-Disposition: attachment
x-oss-force-download: true
x-oss-server-time: 489
Content-Encoding: gzip
{
"Labels": [
{
"CentricScore": 0.823,
"LabelConfidence": 1.0,
"LabelLevel": 2,
"LabelName": "Outerwear",
"Language": "zh-Hans",
"ParentLabelName": "Clothing"
},
{
"CentricScore": 0.721,
"LabelConfidence": 0.735,
"LabelLevel": 2,
"LabelName": "Apparel",
"Language": "zh-Hans",
"ParentLabelName": "Clothing"
}
...
],
"RequestId": "0EC0B6EC-EB16-5EF4-812B-EF3A60C7D20D"
}
Obtenir des libellés avec un seuil spécifié
Configuration du seuil
Le paramètre thr est défini sur 0,85.
Exemple de traitement
GET /example.jpg?x-oss-process=image/labels,thr_0.85 HTTP/1.1
Host: image-demo.oss-cn-hangzhou.aliyuncs.com
Date: Fri, 21 Jul 2023 08:44:58 GMT
Authorization: SignatureValue
Exemple de réponse
HTTP/1.1 200 OK
Server: AliyunOSS
Date: Fri, 21 Jul 2023 08:45:00 GMT
Content-Type: application/json;charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive
Vary: Accept-Encoding
x-oss-request-id: 64BA458C7FFDC2383651DF09
Last-Modified: Mon, 10 Jul 2023 13:07:30 GMT
x-oss-object-type: Normal
x-oss-hash-crc64ecma: 13420962247653419692
x-oss-storage-class: Standard
x-oss-ec: 0048-00000104
Content-Disposition: attachment
x-oss-force-download: true
x-oss-server-time: 421
Content-Encoding: gzip
{
"RequestId": "B7BDAFD5-C0AF-5042-A749-88BF6E4F2712",
"Labels": [
{
"CentricScore": 0.797,
"Language": "zh-Hans",
"LabelConfidence": 0.927,
"LabelName": "Apparel",
"LabelLevel": 2,
"ParentLabelName": "Clothing"
}
...
]
}
Paramètres
Action : image/labels
Paramètres de requête
|
Paramètre |
Type |
Obligatoire |
Description |
Exemple |
|
thr |
float |
Non |
Les libellés dont la valeur |
0,5 |
Augmentez la valeur de thr pour ne renvoyer que les libellés ayant un niveau de confiance élevé. Réduisez la valeur de thr pour renvoyer davantage de libellés.
Paramètres de réponse
Pour plus d'informations sur les paramètres de réponse, consultez DetectImageLabels - Détecter les libellés dans une image.
Facturation
La détection des libellés d'image fait appel à IMM. Par conséquent, elle génère des éléments facturables pour OSS et IMM :
OSS : Pour les informations tarifaires, consultez Tarification Object Storage Service.
|
API |
Élément facturable |
Description |
|
GetObject |
Requêtes GET |
La facturation est basée sur le nombre de requêtes réussies. |
|
GetObject |
Trafic sortant via Internet |
Si vous appelez l'opération GetObject via un endpoint public (par exemple, l'endpoint Chine (Hangzhou) oss-cn-hangzhou.aliyuncs.com) ou un endpoint d'accélération (par exemple, oss-accelerate.aliyuncs.com), le trafic sortant via Internet est facturé en fonction du volume de données. |
|
GetObject |
Volume de données Infrequent Access (IA) récupérées |
Si les données récupérées sont des données Infrequent Access (IA), la récupération des données est facturée en fonction du volume de données récupérées. |
|
GetObject |
Volume de données récupérées via l'accès en temps réel aux objets Archive |
Si vous lisez un objet Archive depuis un bucket pour lequel l'accès en temps réel aux objets Archive est activé, la récupération des données via l'accès en temps réel aux objets Archive est facturée en fonction du volume de données récupérées. |
|
GetObject |
Accélération du transfert |
Si l'accélération du transfert est activée et que vous utilisez un endpoint d'accélération pour accéder à votre bucket, l'accélération du transfert est facturée en fonction du volume de données. |
|
HeadObject |
Requêtes GET |
La facturation est basée sur le nombre de requêtes réussies. |
IMM : Pour les informations tarifaires, consultez Éléments facturables IMM.
À partir du 28 juillet 2025 à 11 h 00 (UTC+8), le prix du service de détection des libellés d'image IMM reste inchangé, mais l'élément facturable est renommé de ImageClassification à ImageLabel. Pour plus d'informations, consultez Annonce concernant l'ajustement de la facturation IMM.
|
API |
Élément facturable |
Description |
|
DetectImageLabels |
ImageLabel |
La facturation est basée sur le nombre de requêtes réussies. |