Passer au contenu principal
Cet article présentera une documentation sur l’API de localisation des traits du visage, qui peut localiser les traits du visage (également appelés points clés du visage) à partir d’une image d’entrée, en calculant 90 points qui composent le contour du visage, y compris les sourcils (8 points de chaque côté), les yeux (8 points de chaque côté), le nez (13 points), la bouche (22 points), le contour du visage (21 points) et les pupilles (2 points).

Processus de demande

Pour utiliser l’API, vous devez d’abord vous rendre sur la page correspondante de l’API de localisation des traits du visage pour demander le service correspondant. Une fois sur la page, cliquez sur le bouton « Acquire », comme indiqué ci-dessous : Si vous n’êtes pas encore connecté ou inscrit, vous serez automatiquement redirigé vers la page de connexion pour vous inviter à vous inscrire et à vous connecter. Après vous être connecté ou inscrit, vous serez automatiquement renvoyé à la page actuelle. Lors de la première demande, un quota gratuit sera offert, vous permettant d’utiliser cette API gratuitement.

Utilisation de base

Tout d’abord, comprenez la méthode d’utilisation de base, qui consiste à entrer un lien d’image pour obtenir l’image résultante après traitement. Vous devez d’abord transmettre un champ image_url, l’image du visage est montrée ci-dessous :

Nous pouvons ensuite remplir le contenu correspondant sur l’interface, comme indiqué ci-dessous :

Ici, nous avons configuré les en-têtes de requête, y compris :
  • accept : le format de réponse souhaité, ici rempli avec application/json, c’est-à-dire au format JSON.
  • authorization : la clé d’API pour appeler l’API, que vous pouvez sélectionner directement après la demande.
De plus, nous avons configuré le corps de la requête, y compris :
  • image_url : le lien de l’image du visage à traiter.
  • mode : le mode de détection. 0 pour détecter tous les visages présents, 1 pour détecter le visage de plus grande surface. Par défaut, c’est 0.
  • face_model_version : la version du modèle d’algorithme utilisé pour le service de reconnaissance faciale, par défaut c’est 3.0.
  • need_rotate_detection : si la prise en charge de la détection de rotation d’image doit être activée. 0 pour ne pas activer, 1 pour activer. Par défaut, c’est 0.
Après avoir fait votre sélection, vous pouvez constater que le code correspondant a également été généré à droite, comme indiqué ci-dessous :

Cliquez sur le bouton « Try » pour effectuer un test, comme indiqué ci-dessus, et nous avons obtenu le résultat suivant :
{
  "image_width": 690,
  "image_height": 920,
  "face_model_version": "3.0",
  "face_shape_set": [
    {
      "face_profile": [
        {
          "x": 294,
          "y": 207
        },
        {
          "x": 289,
          "y": 216
        },
        {
          "x": 286,
          "y": 226
        },
        {
          "x": 284,
          "y": 236
        },
        {
          "x": 283,
          "y": 246
        },
        {
          "x": 283,
          "y": 256
        },
        {
          "x": 284,
          "y": 266
        },
        {
          "x": 286,
          "y": 276
        },
        {
          "x": 289,
          "y": 285
        },
        {
          "x": 294,
          "y": 294
        },
        {
          "x": 301,
          "y": 301
        },
        {
          "x": 314,
          "y": 306
        },
        {
          "x": 327,
          "y": 307
        },
        {
          "x": 340,
          "y": 306
        },
        {
          "x": 353,
          "y": 302
        },
        {
          "x": 365,
          "y": 296
        },
        {
          "x": 374,
          "y": 287
        },
        {
          "x": 382,
          "y": 276
        },
        {
          "x": 387,
          "y": 264
        },
        {
          "x": 392,
          "y": 251
        },
        {
          "x": 396,
          "y": 238
        }
      ],
      "left_eye": [
        {
          "x": 298,
          "y": 208
        },
        {
          "x": 301,
          "y": 212
        },
        {
          "x": 305,
          "y": 214
        },
        {
          "x": 309,
          "y": 215
        },
        {
          "x": 314,
          "y": 216
        },
        {
          "x": 313,
          "y": 210
        },
        {
          "x": 309,
          "y": 207
        },
        {
          "x": 303,
          "y": 206
        }
      ],
      "right_eye": [
        {
          "x": 363,
          "y": 229
        },
        {
          "x": 358,
          "y": 230
        },
        {
          "x": 353,
          "y": 229
        },
        {
          "x": 347,
          "y": 227
        },
        {
          "x": 342,
          "y": 224
        },
        {
          "x": 348,
          "y": 221
        },
        {
          "x": 354,
          "y": 221
        },
        {
          "x": 360,
          "y": 223
        }
      ],
      "left_eye_brow": [
        {
          "x": 296,
          "y": 196
        },
        {
          "x": 302,
          "y": 197
        },
        {
          "x": 308,
          "y": 198
        },
        {
          "x": 313,
          "y": 200
        },
        {
          "x": 319,
          "y": 202
        },
        {
          "x": 315,
          "y": 195
        },
        {
          "x": 309,
          "y": 192
        },
        {
          "x": 302,
          "y": 192
        }
      ],
      "right_eye_brow": [
        {
          "x": 377,
          "y": 221
        },
        {
          "x": 369,
          "y": 217
        },
        {
          "x": 360,
          "y": 213
        },
        {
          "x": 350,
          "y": 211
        },
        {
          "x": 341,
          "y": 208
        },
        {
          "x": 351,
          "y": 204
        },
        {
          "x": 362,
          "y": 206
        },
        {
          "x": 372,
          "y": 211
        }
      ],
      "mouth": [
        {
          "x": 296,
          "y": 262
        },
        {
          "x": 297,
          "y": 269
        },
        {
          "x": 299,
          "y": 276
        },
        {
          "x": 305,
          "y": 281
        },
        {
          "x": 315,
          "y": 283
        },
        {
          "x": 326,
          "y": 282
        },
        {
          "x": 335,
          "y": 277
        },
        {
          "x": 325,
          "y": 269
        },
        {
          "x": 315,
          "y": 262
        },
        {
          "x": 309,
          "y": 261
        },
        {
          "x": 305,
          "y": 258
        },
        {
          "x": 300,
          "y": 259
        },
        {
          "x": 299,
          "y": 265
        },
        {
          "x": 303,
          "y": 269
        },
        {
          "x": 307,
          "y": 272
        },
        {
          "x": 316,
          "y": 275
        },
        {
          "x": 325,
          "y": 276
        },
        {
          "x": 326,
          "y": 272
        },
        {
          "x": 317,
          "y": 269
        },
        {
          "x": 308,
          "y": 265
        },
        {
          "x": 304,
          "y": 263
        },
        {
          "x": 300,
          "y": 262
        }
      ],
      "nose": [
        {
          "x": 311,
          "y": 242
        },
        {
          "x": 325,
          "y": 220
        },
        {
          "x": 319,
          "y": 226
        },
        {
          "x": 313,
          "y": 231
        },
        {
          "x": 307,
          "y": 236
        },
        {
          "x": 302,
          "y": 243
        },
        {
          "x": 306,
          "y": 249
        },
        {
          "x": 311,
          "y": 252
        },
        {
          "x": 318,
          "y": 254
        },
        {
          "x": 329,
          "y": 253
        },
        {
          "x": 327,
          "y": 243
        },
        {
          "x": 326,
          "y": 235
        },
        {
          "x": 326,
          "y": 228
        }
      ],
      "left_pupil": [
        {
          "x": 310,
          "y": 211
        }
      ],
      "right_pupil": [
        {
          "x": 357,
          "y": 225
        }
      ]
    }
  ]
}
On peut voir que nous avons obtenu les informations pertinentes sur le visage de la personne dans l’image, y compris les informations spécifiques sur le positionnement des traits du visage (points clés du visage), la version du modèle d’algorithme utilisé pour la reconnaissance faciale, etc. La description des champs est la suivante :
  • image_width :largeur de l’image demandée.
  • image_height :hauteur de l’image demandée.
  • face_model_version:version du modèle d’algorithme utilisé pour la reconnaissance faciale.
  • face_shape_set:informations spécifiques sur le positionnement des traits du visage (points clés du visage).
    • face_profile :21 points décrivant le contour du visage.
      • x :coordonnée x
      • y :coordonnée y
    • left_eye :8 points décrivant le contour de l’œil gauche.
      • x :coordonnée x
      • y :coordonnée y
    • right_eye :8 points décrivant le contour de l’œil droit.
      • x :coordonnée x
      • y :coordonnée y
    • left_eye_brow :8 points décrivant le contour du sourcil gauche.
      • x :coordonnée x
      • y :coordonnée y
    • right_eye_brow :8 points décrivant le contour du sourcil droit.
      • x :coordonnée x
      • y :coordonnée y
    • mouth :22 points décrivant le contour de la bouche.
      • x :coordonnée x
      • y :coordonnée y
    • nose :13 points décrivant le contour du nez.
      • x :coordonnée x
      • y :coordonnée y
    • left_pupil :1 point décrivant le contour de la pupille gauche.
      • x :coordonnée x
      • y :coordonnée y
    • right_pupil :1 point décrivant le contour de la pupille droite.
      • x :coordonnée x
      • y :coordonnée y
De plus, si vous souhaitez générer le code d’intégration correspondant, vous pouvez le copier directement, par exemple, le code CURL est le suivant :
curl -X POST 'https://api.acedata.cloud/face/analyze' \
-H 'accept: application/json' \
-H 'authorization: Bearer {token}' \
-H 'content-type: application/json' \
-d '{
  "image_url": "https://cdn.acedata.cloud/lrbtcn.jpg"
}'
Le code d’intégration en Python est le suivant :
import requests

url = "https://api.acedata.cloud/face/analyze"

headers = {
    "accept": "application/json",
    "authorization": "Bearer {token}",
    "content-type": "application/json"
}

payload = {
    "image_url": "https://cdn.acedata.cloud/lrbtcn.jpg"
}

response = requests.post(url, json=payload, headers=headers)
print(response.text)

Gestion des erreurs

Lors de l’appel de l’API, si une erreur se produit, l’API renverra le code d’erreur et les informations correspondantes. Par exemple :
  • 400 token_mismatched:Mauvaise requête, probablement en raison de paramètres manquants ou invalides.
  • 400 api_not_implemented:Mauvaise requête, probablement en raison de paramètres manquants ou invalides.
  • 401 invalid_token:Non autorisé, jeton d’autorisation invalide ou manquant.
  • 429 too_many_requests:Trop de requêtes, vous avez dépassé la limite de taux.
  • 500 api_error:Erreur interne du serveur, quelque chose s’est mal passé sur le serveur.

Exemple de réponse d’erreur

{
  "success": false,
  "error": {
    "code": "api_error",
    "message": "fetch failed"
  },
  "trace_id": "2cf86e86-22a4-46e1-ac2f-032c0f2a4e89"
}

Conclusion

Grâce à ce document, vous avez compris comment utiliser l’API de positionnement des traits du visage pour effectuer le positionnement des traits sur l’image d’entrée. Nous espérons que ce document vous aidera à mieux intégrer et utiliser cette API. Si vous avez des questions, n’hésitez pas à contacter notre équipe de support technique.