Bereits in unserem ersten Blogeintrag haben wir euch unsere Architekturskizze nährgebracht. Dort haben wir berichtet, dass unsere Gesichtserkennung mithilfe einer Schnittstelle namens KAIROS umgesetzt wird. In diesem Blogbeitrag werde ich nun genauer beschreiben, welche KAIROS Funktionen wir für unser Projekt eingesetzt haben. Außerdem werde ich darauf eingehen, wie diese technisch von unserem Backend aufgerufen werden.

Abbildung 1: Ein Anwendungsbeispiel der KAIROS API

Mithilfe von KAIROS können Bilder in einer Galerie hochgeladen werden, um im Anschluss verschiedene Funktionen auf Grundlage dieser Bilder auszuführen. Zum Aufruf der Funktionen wird als Basis der Link https://api.kairos.com verwendet. Diesem werden dann verschiedene Aktionswörter angehängt. Nachfolgend sind unterschiedliche Funktionen der API und die zugehörigen Aktionswörter aufgelistet:

  • Es können verschiedene Merkmale von Gesichtern erfragt werden. Diese Funktion wird mit dem Aufruf von „detect“ zur Verfügung gestellt. In Abbildung 1 ist diese Funktion noch einmal dargestellt.
  • Mit KAIROS „enroll“ kann ein Bild in der KAIROS Galerie hochgeladen werden.
  • Ein übergebenes Gesicht wird mit allen anderen Gesichtern der Galerie verglichen. Diese Funktion ist vor allem für unser Projekt interessant und wird unter dem Namen „recognize“ bereitgestellt.

Um die API nutzen zu können wird sowohl eine APP ID als auch ein API Key benötigt. Beide werden dem Entwickler nach der kostenlosen Registrierung zur Verfügung gestellt. Bei einer Anfrage an die API wird sowohl die APP ID als auch der API Key als Header in der HTTP-Anfrage erwartet.

request({
headers: headers,
uri: url,
body: JSON.stringify(payload),
method: ‚POST‘
}, function (err, res, body) {

Abbildung 2: HTTP-Aufruf über die Request-Library von Node js

In Abbildung 2 werden die verschiedenen Bestandteile der Anfrage in einem JSON-Objekt verpackt. Im Header ist neben der APP ID und dem API Key außerdem das Format der Nachricht als JSON festgeschrieben. Die URL wird in unserer Backendfunktion dynamisch festgesetzt, je nachdem welche Funktionalität in KAIROS aufrufen werden soll. Im Body der Nachricht sind unterschiedliche Informationen hinterlegt, die von der KAIROS API benötigt werden. Der Body enthält somit alle Parameter, die für den Aufruf der entsprechenden API URL benötigt werden. Fest definiert ist für jeden Aufruf das HTTP-Verb POST, da alle KAIROS Schnittstellen dieses verwenden. Kommt auf die Anfrage eine Antwort vom Server, kann diese in der Callback-Funktion verarbeitet werden. Verschiedene Anfragen an die KAIROS API können so zentral über eine Funktion im Backend versendet werden.

Zum korrekten Aufruf der KAIROS API benötigt die Backendfunktion 3 verschiedene Parameter:

  • Den URL-Namen, der das entsprechende Aktionswort enthält.
  • Das Bild im Base 64 Format. Das Format der Bilder ist von der KAIROS API vorgeschrieben.
  • Außerdem wird die Id des KAIROS Objekts (Bildes) benötigt, auf dem die Aktion ausgeführt werden soll.

Je nach übergebenem URL-Namen kann einer der beiden anderen Parameter (Base 64 Bilder, Id des Objekts) nicht definiert sein. Wird beispielsweise der URL-Name „recognize“ übergeben wird keine Id des Objekts benötigt, da die KAIROS API selbstständig alle Bilder in der Galerie mit dem übergebenen Bild vergleicht.

Ich hoffe ich konnte euch einen kleinen Einblick in die KAIROS API und deren Funktionen liefern. Als nächsten Blogpost wird Yanis die Softwarearchitektur des Python Programms vorstellen und einen Einblick in die KI geben die wir verwenden.

 

SmartLock (6): Die Kommunikation zwischen Backend und der KAIROS API