Zum Hauptinhalt springen
Dieser Artikel beschreibt eine API zur Gesichtsmerkmale-Positionierung, die durch Eingabe eines Bildes die Gesichtsmerkmale (auch als Gesichts-Kennpunkt-Positionierung bezeichnet) lokalisieren kann. Sie berechnet 90 Punkte, die die Konturen des Gesichts bilden, einschließlich Augenbrauen (jeweils 8 Punkte), Augen (jeweils 8 Punkte), Nase (13 Punkte), Mund (22 Punkte), Gesichtsformkontur (21 Punkte) und Pupillen (2 Punkte).

Antragsprozess

Um die API zu nutzen, müssen Sie zunächst auf die entsprechende Seite der Gesichtsmerkmale-Positionierungs-API gehen und den entsprechenden Dienst beantragen. Nach dem Betreten der Seite klicken Sie auf die Schaltfläche „Acquire“, wie im Bild gezeigt: Wenn Sie noch nicht angemeldet oder registriert sind, werden Sie automatisch zur Anmeldeseite weitergeleitet, um sich zu registrieren und anzumelden. Nach der Anmeldung werden Sie automatisch zur aktuellen Seite zurückgeleitet. Bei der ersten Antragstellung gibt es ein kostenloses Kontingent, mit dem Sie die API kostenlos nutzen können.

Grundlegende Nutzung

Zunächst sollten Sie die grundlegende Nutzungsmethode verstehen, bei der Sie einfach den Bildlink eingeben, um das verarbeitete Ergebnisbild zu erhalten. Zunächst müssen Sie ein einfaches image_url-Feld übermitteln. Das Gesichtsbild ist wie im folgenden Bild gezeigt:

Nun können wir die entsprechenden Inhalte auf der Benutzeroberfläche ausfüllen, wie im Bild gezeigt:

Hier haben wir die Request-Header festgelegt, einschließlich:
  • accept: In welchem Format Sie die Antwort erhalten möchten, hier eingetragen als application/json, also im JSON-Format.
  • authorization: Der Schlüssel zur Nutzung der API, den Sie nach der Beantragung direkt auswählen können.
Zusätzlich haben wir den Request-Body festgelegt, einschließlich:
  • image_url: Der Link zum zu verarbeitenden Gesichtsbild.
  • mode: Der Erkennungsmodus. 0 steht für die Erkennung aller sichtbaren Gesichter, 1 für das Gesicht mit der größten Fläche. Standardmäßig ist es 0.
  • face_model_version: Die Version des Algorithmusmodells, das für den Gesichtsidentifikationsdienst verwendet wird, standardmäßig 3.0.
  • need_rotate_detection: Ob die Unterstützung für die Erkennung von Bildrotationen aktiviert werden soll. 0 bedeutet nicht aktiv, 1 bedeutet aktiv. Standardmäßig ist es 0.
Nach der Auswahl können Sie feststellen, dass auf der rechten Seite auch der entsprechende Code generiert wurde, wie im Bild gezeigt:

Klicken Sie auf die Schaltfläche „Try“, um einen Test durchzuführen, wie im obigen Bild gezeigt. Hier haben wir das folgende Ergebnis erhalten:
{
  "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
        }
      ]
    }
  ]
}
Man kann sehen, dass wir zu diesem Zeitpunkt die relevanten Informationen über das Gesicht der Person im Bild erhalten haben, einschließlich der spezifischen Informationen zur Position der Gesichtszüge (Gesichtsschlüsselstellen) und der Version des verwendeten Algorithmusmodells zur Gesichtserkennung. Die Feldbeschreibung lautet wie folgt:
  • image_width :Die angeforderte Bildbreite.
  • image_height :Die angeforderte Bildhöhe.
  • face_model_version:Die Version des Algorithmusmodells, das für die Gesichtserkennung verwendet wird.
  • face_shape_set:Detaillierte Informationen zur Gesichtsmerkmale (Gesichtsschlüsselpunkt).
    • face_profile :21 Punkte, die die Gesichtsform beschreiben.
      • x :x-Koordinate
      • y :y-Koordinate
    • left_eye :8 Punkte, die die Kontur des linken Auges beschreiben.
      • x :x-Koordinate
      • y :y-Koordinate
    • right_eye :8 Punkte, die die Kontur des rechten Auges beschreiben.
      • x :x-Koordinate
      • y :y-Koordinate
    • left_eye_brow :8 Punkte, die die Kontur der linken Augenbraue beschreiben.
      • x :x-Koordinate
      • y :y-Koordinate
    • right_eye_brow :8 Punkte, die die Kontur der rechten Augenbraue beschreiben.
      • x :x-Koordinate
      • y :y-Koordinate
    • mouth :22 Punkte, die die Kontur des Mundes beschreiben.
      • x :x-Koordinate
      • y :y-Koordinate
    • nose :13 Punkte, die die Kontur der Nase beschreiben.
      • x :x-Koordinate
      • y :y-Koordinate
    • left_pupil :1 Punkt, der die Kontur der linken Pupille beschreibt.
      • x :x-Koordinate
      • y :y-Koordinate
    • right_pupil :1 Punkt, der die Kontur der rechten Pupille beschreibt.
      • x :x-Koordinate
      • y :y-Koordinate
Außerdem, wenn Sie den entsprechenden Integrationscode generieren möchten, können Sie ihn direkt kopieren, zum Beispiel der CURL-Code ist wie folgt:
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"
}'
Der Python-Integrationscode ist wie folgt:
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)

Fehlerbehandlung

Bei der Verwendung der API, wenn ein Fehler auftritt, gibt die API den entsprechenden Fehlercode und die Informationen zurück. Zum Beispiel:
  • 400 token_mismatched:Ungültige Anfrage, möglicherweise aufgrund fehlender oder ungültiger Parameter.
  • 400 api_not_implemented:Ungültige Anfrage, möglicherweise aufgrund fehlender oder ungültiger Parameter.
  • 401 invalid_token:Unbefugt, ungültiger oder fehlender Autorisierungstoken.
  • 429 too_many_requests:Zu viele Anfragen, Sie haben das Kontingent überschritten.
  • 500 api_error:Interner Serverfehler, etwas ist auf dem Server schiefgelaufen.

Fehlerantwortbeispiel

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

Fazit

Durch dieses Dokument haben Sie gelernt, wie Sie die Gesichtsmerkmale-API verwenden, um die Gesichtsmerkmale in das eingegebene Bild zu lokalisieren. Wir hoffen, dass dieses Dokument Ihnen hilft, die API besser zu integrieren und zu nutzen. Bei Fragen wenden Sie sich bitte jederzeit an unser technisches Support-Team.