Hoppa till huvudinnehåll
Denna artikel kommer att introducera en fem kännetecken positionering API integration beskrivning, som kan genom att mata in en bild, utföra fem kännetecken positionering (även kallad ansiktsnyckelpunktspositionering), beräkna 90 punkter som utgör ansiktskonturen, inklusive ögonbryn (8 punkter på vardera sidan), ögon (8 punkter på vardera sidan), näsa (13 punkter), mun (22 punkter), ansiktsform kontur (21 punkter), ögonkulor [eller pupiller] (2 punkter).

Ansökningsprocess

För att använda API:et måste du först gå till Fem kännetecken positionering API motsvarande sida för att ansöka om den tjänst som behövs, när du kommer in på sidan, klicka på “Acquire” knappen, som visas i bilden nedan: Om du inte har loggat in eller registrerat dig, kommer du automatiskt att omdirigeras till inloggningssidan som bjuder in dig att registrera och logga in, efter inloggning och registrering kommer du automatiskt att återvända till den aktuella sidan. Vid första ansökan kommer det att finnas en gratis kvot som ges, så att du kan använda API:et gratis.

Grundläggande användning

Först bör du förstå den grundläggande användningsmetoden, vilket är att mata in en bildlänk för att få den bearbetade resultatbilden, först behöver du enkelt överföra ett image_url fält, ansiktsbilden visas nedan:

Vi kan sedan fylla i motsvarande innehåll på gränssnittet, som visas i bilden nedan:

Här kan vi se att vi har ställt in Request Headers, inklusive:
  • accept: vilken typ av format du vill ta emot som svar, här anges som application/json, det vill säga JSON-format.
  • authorization: nyckeln för att anropa API:et, efter ansökan kan du direkt välja från rullgardinsmenyn.
Dessutom har vi ställt in Request Body, inklusive:
  • image_url: länken till den ansiktsbild som ska bearbetas.
  • mode: detekteringsläge. 0 för att detektera alla förekommande ansikten, 1 för att detektera det största ansiktet. Standard är 0.
  • face_model_version: algoritmmodellversionen som används av ansiktsigenkänningstjänsten, standard är 3.0.
  • need_rotate_detection: om bildrotationsigenkänning ska aktiveras. 0 för att inte aktivera, 1 för att aktivera. Standard är 0.
När du har valt kan du se att motsvarande kod också har genererats till höger, som visas i bilden nedan:

Klicka på “Try” knappen för att utföra testet, som visas i bilden ovan, här har vi fått följande resultat:
{
  "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
        }
      ]
    }
  ]
}
Vi kan se att vi har fått information om ansiktet i bilden, inklusive specifik information om placeringen av ansiktsdrag (nyckelpunkter) och versionen av algoritmmodellen som används för ansiktsigenkänning. Fältbeskrivningen är som följer:
  • image_width :Begärd bildbredd.
  • image_height :Begärd bildhöjd.
  • face_model_version:Algoritmmodellversionen som används för ansiktsigenkänning.
  • face_shape_set:Specifik information om ansiktsdetektering (ansiktsnyckelpunkter).
    • face_profile :Beskriver ansiktsprofilens 21 punkter.
      • x :x-koordinat
      • y :y-koordinat
    • left_eye :Beskriver konturen av vänster öga med 8 punkter.
      • x :x-koordinat
      • y :y-koordinat
    • right_eye :Beskriver konturen av höger öga med 8 punkter.
      • x :x-koordinat
      • y :y-koordinat
    • left_eye_brow :Beskriver konturen av vänster ögonbryn med 8 punkter.
      • x :x-koordinat
      • y :y-koordinat
    • right_eye_brow :Beskriver konturen av höger ögonbryn med 8 punkter.
      • x :x-koordinat
      • y :y-koordinat
    • mouth :Beskriver konturen av munnen med 22 punkter.
      • x :x-koordinat
      • y :y-koordinat
    • nose :Beskriver konturen av näsan med 13 punkter.
      • x :x-koordinat
      • y :y-koordinat
    • left_pupil :Konturen av vänster pupill med 1 punkt.
      • x :x-koordinat
      • y :y-koordinat
    • right_pupil :Konturen av höger pupill med 1 punkt.
      • x :x-koordinat
      • y :y-koordinat
Dessutom, om du vill generera motsvarande integrationskod kan du direkt kopiera den, till exempel CURL-koden nedan:
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"
}'
Python-integrationskoden ser ut så här:
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)

Felhantering

När du anropar API:et, om du stöter på fel, kommer API:et att returnera motsvarande felkod och information. Till exempel:
  • 400 token_mismatched:Felaktig begäran, möjligtvis på grund av saknade eller ogiltiga parametrar.
  • 400 api_not_implemented:Felaktig begäran, möjligtvis på grund av saknade eller ogiltiga parametrar.
  • 401 invalid_token:Obehörig, ogiltig eller saknad auktoriseringstoken.
  • 429 too_many_requests:För många begärningar, du har överskridit hastighetsgränsen.
  • 500 api_error:Intern serverfel, något gick fel på servern.

Exempel på felrespons

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

Slutsats

Genom detta dokument har du fått en förståelse för hur man använder ansiktsdetekterings-API:et för att utföra ansiktsdetektering på den inmatade bilden. Vi hoppas att detta dokument kan hjälpa dig att bättre integrera och använda API:et. Om du har några frågor, tveka inte att kontakta vårt tekniska supportteam.