Smart CDN jetzt mit KI-gestützter Gesichtserkennung

Unser Smart CDN gehört zu den spannendsten Funktionen, die wir in den vergangenen Jahren veröffentlicht haben. Es bietet unseren Nutzern die kürzesten Anfragezeiten, die wir ermöglichen können, und macht trotz Betastatus jeden Tag große Fortschritte. Heute freuen wir uns, ein Update anzukündigen: Die Liste der kompatiblen Robots umfasst jetzt auch unseren KI-gestützten Robot /image/facedetect!

Vor Kurzem haben wir die bisher verwendete API durch den KI-Dienst von AWS ersetzt. Dadurch haben wir unseren Robot zur Gesichtserkennung verbessert und das Transkodieren beim Dateiimport aus einem S3-Bucket beschleunigt. Damit passt unser Robot /image/facedetect jetzt bestens zu unserem Smart CDN.
Im Folgenden zeigen wir Ihnen kurz, wie Sie dieses Update nutzen können.
Einrichtung
Bevor wir mit einem Beispiel beginnen, benötigen wir einen Cloud-Speicher mit einem Bild, auf dem Gesichter zu sehen sind, und ein Template. Da unsere API auf AWS läuft, empfehlen wir, Ihre Dateien in einem S3-Bucket zu speichern, um die geringstmögliche Latenz zu erzielen. Wenn Sie etwas anderes bevorzugen, können Sie stattdessen einen unserer anderen Robots für den Dateiimport wählen.
Erstellen wir zunächst unser Template. Notieren Sie sich bitte den Namen für Ihr Template, da wir ihn später in diesem Beispiel benötigen.
{
"steps": {
"imported": {
"robot": "/s3/import",
"result": true,
"credentials": "YOUR_S3_CREDENTIALS",
"path": "upload/${fields.input}"
},
"facedetect": {
"robot": "/image/facedetect",
"use": "imported",
"crop": true,
"faces": "${fields.type}",
"format": "preserve",
"crop_padding": "10%",
"result": true
},
"served": {
"use": "facedetect",
"robot": "/file/serve"
}
}
}
Wie oben erwähnt, nutzen wir in unserem Template S3 für den
Dateiimport. Entscheidend im ersten Step „imported“ ist
der Parameter path. Sein Wert legt fest, dass wir einen bestimmten Ordner
ansprechen möchten. Anschließend richten wir eine
Assembly Variable ein, die bestimmt, welche Datei
wir in unserer URL-Transformation aufrufen möchten.
Das importierte Bild wird nun an den Step
facedetect übergeben, in dem unser KI-gestützter
Robot /image/facedetect die
Gesichtserkennung übernimmt. Auch dieser Step nutzt
Assembly Variables, um beim Aufruf der erstellten
URL den Parameter faces anzusprechen. Eine ausführlichere Erklärung zu diesem
Parameter finden Sie in unserem früheren
Blogbeitrag zu /image/facedetect.
Zum Abschluss nutzen wir in unserem Template den Robot /file/serve, um das Ergebnis unserer Assembly auszuliefern.
Signature Authentication
Ich möchte hier auch kurz zeigen, wie einfach sich Signature Authentication in unsere Methode zur URL-Transformation integrieren lässt.
Signature Authentication ist nicht zwingend nötig, wir empfehlen sie jedoch als bewährtes Verfahren. Signierte URLs mit Ablaufzeit begrenzen unautorisierte Transformationen und die Dauer, während der eine URL wiederverwendet werden kann. Sie bieten jedoch keinen vollständigen Schutz vor DDoS-Angriffen. Außerdem dauert die Integration in Ihr Backend vermutlich nur wenige zusätzliche Minuten.
Wie Sie unser Smart CDN ohne Signature Authentication nutzen können, erfahren Sie auf der Seite zur Dateiauslieferung auf unserer Website.
Quellcode
Für dieses Beispiel haben wir die Signature Authentication in Node.js implementiert. Wenn Sie in Ihrem Backend eine andere Sprache bevorzugen, finden Sie hier einige Beispiele.
Installieren Sie unsere gemeinsamen Hilfsfunktionen in Ihrem Serverprojekt:
yarn add @transloadit/utils
import { getSignedSmartCdnUrl } from '@transloadit/utils/node'
const authSecret = process.env.TRANSLOADIT_AUTH_SECRET
const authKey = process.env.TRANSLOADIT_AUTH_KEY
if (!authSecret || !authKey) throw new Error('Set your Transloadit credentials on the server')
const url = getSignedSmartCdnUrl({
workspace: 'YOUR-WORKSPACE',
template: 'YOUR-TEMPLATE-NAME',
input: 'faces.jpg',
authKey,
authSecret,
expiresAt: Date.now() + 60 * 60 * 1000,
urlParams: { type: 'max-confidence' },
})
console.log(url)
Führen Sie dieses Programm auf Ihrem Server aus, niemals im Browser. Verwenden Sie den für Smart CDN freigeschalteten Auth Key und das zugehörige Auth Secret. Die Bibliothek erzeugt eine HMAC-Signatur über den URL-Pfad und die sortierten Anfrageparameter, einschließlich einer Ablaufzeit in Millisekunden. Sie authentifiziert die URL, verschlüsselt sie aber nicht und legt das Auth Secret nicht offen.
Ersetzen Sie YOUR-TEMPLATE-NAME durch den Namen für Ihr eigenes
Template und setzen Sie input auf
den Namen Ihres Bildes. In diesem Beispiel heißt die Datei faces.jpg.
Das Feld type in urlParams übergibt
max-confidence an die Assembly Variable in unserem
Template. Die Bibliothek sortiert die Anfrageparameter
für die Signatur.
Setzen Sie workspace auf den Slug für Ihren Transloadit-Workspace. Sobald alles
eingerichtet ist, erzeugt Ihre Node.js-App beim Ausführen eine Ergebnis-URL!
Ergebnis
Nachdem unsere URL erzeugt wurde, müssen wir sie nur noch aufrufen, um das Encoding zu starten.
Wenn Sie diese URL im Browser aufrufen, erscheint das codierte Ergebnis automatisch, sobald der
Vorgang abgeschlossen ist. Sie können das Ergebnis der Assembly
ebenso einfach mit den folgenden Befehlen direkt auf Ihrem Rechner speichern. Ersetzen Sie die
vollständige Platzhalter-URL in der Zuweisung für url durch die URL, die Ihr
Serverprogramm ausgibt, und behalten Sie die Anführungszeichen bei.
url='https://YOUR-WORKSPACE.tlcdn.com/YOUR-COMPLETE-SIGNED-URL'
curl -fsSLo /your/chosen/path/file_name.jpg "${url}"
Damit endet unser kurzer Überblick über das jüngste Update für unser Smart CDN. Wir freuen uns auf die kreativen Möglichkeiten, mit denen Sie diese neue Funktion in Ihre Projekte integrieren können. Erzählen Sie uns davon auf Twitter!