Smart CDN erweitert um KI-gestützte Gesichtserkennung

Unser Smart CDN ist eine der spannendsten Funktionen, die wir in den letzten Jahren veröffentlicht haben. Es verhilft unseren Nutzern zu den schnellsten Anfragezeiten, die wir bieten können, und macht trotz des Beta-Status jeden Tag große Fortschritte. Heute freuen wir uns, ankündigen zu können, dass wir die Liste der kompatiblen Robots aktualisiert haben: Sie umfasst nun unseren KI-gestützten Robot /image/facedetect!

Vor Kurzem haben wir unsere zuvor genutzte API durch den KI-Dienst von AWS ersetzt. Das verbessert unseren Robot zur Gesichtserkennung und beschleunigt das Transkodieren beim Import von Dateien aus einem S3-Bucket. Damit ist unser Robot /image/facedetect nun bestens in unserem Smart CDN aufgehoben.
Im Folgenden geben wir Ihnen einen kurzen Überblick darüber, wie Sie dieses neue Update nutzen können.
Setup
Bevor wir mit einem Beispiel beginnen, benötigen wir eine Form von Cloud-Speicher, der ein Bild mit einigen Gesichtern enthält, sowie ein Template. Da unsere API auf AWS läuft, empfehlen wir, Ihre Dateien in einem S3-Bucket zu speichern, um die geringste Latenz zu erreichen. Wenn Sie eine andere Lösung bevorzugen, können Sie stattdessen einen unserer anderen Robots für den Import wählen.
Beginnen wir damit, unser Template zu erstellen. Bitte notieren Sie sich den Namen, den Sie dem Template geben, da wir ihn später in dieser Demonstration 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, um
unsere Datei zu importieren. Entscheidend im ersten
Step, „imported“, ist der Parameter
path. Sein Wert gibt an, dass wir einen bestimmten Ordner ansprechen
wollen. Anschließend wird eine Assembly Variable
eingerichtet, 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 verwendet
Assembly Variables, um mit dem Parameter
faces zu interagieren, wenn die von uns erstellte URL aufgerufen wird. Wenn
Sie eine ausführlichere Erklärung zu diesem Parameter wünschen, finden Sie sie in unserem früheren
Blogbeitrag zu /image/facedetect.
Zum Abschluss verwenden wir in unserem Template den Robot /file/serve, um unser Assembly-Ergebnis auszuliefern.
Signature Authentication
An dieser Stelle möchte ich kurz zeigen, wie einfach sich Signature Authentication zu unserer Methode der URL-Transformation hinzufügen lässt.
Es ist nicht zwingend erforderlich, Signature Authentication einzurichten, aber wir empfehlen es als bewährtes Verfahren. Signierte URLs mit Ablaufzeit begrenzen unbefugte Transformationen und die Dauer, über die eine URL wiederverwendet werden kann, sind aber kein vollständiger Schutz gegen DDoS-Angriffe. Darüber hinaus dauert die Implementierung in Ihrem Backend wahrscheinlich nur wenige zusätzliche Minuten.
Wenn Sie sehen möchten, wie Sie unser Smart CDN ohne Signature Authentication nutzen, finden Sie das auf der Seite zur Auslieferung von Inhalten auf unserer Website.
Code
Für dieses Beispiel haben wir die Signature Authentication in Node.js geschrieben. Wenn Sie in Ihrem Backend eine andere Sprache bevorzugen, finden Sie hier einige Beispiele.
Installieren Sie unsere gemeinsam genutzten Hilfsprogramme 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 Auth Key, der für Smart CDN aktiviert ist, und das passende Auth Secret. Die Bibliothek erzeugt eine HMAC-Signatur über den URL-Pfad und die sortierten Query-Parameter, einschließlich einer Ablaufzeit in Millisekunden. Sie authentifiziert die URL; sie verschlüsselt sie nicht und gibt auch das Auth Secret nicht preis.
Ersetzen Sie YOUR-TEMPLATE-NAME durch den Namen, den Sie Ihrem eigenen
Template gegeben haben, 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 übernimmt die Sortierung
der Query-Parameter für die Signatur.
Setzen Sie workspace auf den Slug für Ihren Transloadit Workspace. Wenn all das
eingerichtet ist, erzeugt Ihre Node.js-App beim Ausführen eine Ergebnis-URL!
Ergebnis
Sobald unsere URL erzeugt ist, müssen wir nur noch die neue URL aufrufen, damit unser Encoding
stattfindet. Wenn Sie diese URL in einem Browser aufrufen, erscheint das codierte Ergebnis
automatisch, sobald der Vorgang abgeschlossen ist. Wenn Sie möchten, können Sie das
Assembly-Ergebnis genauso einfach mit dem folgenden Befehl
direkt auf Ihrem Rechner speichern. Achten Sie darauf, url durch den Wert
zu ersetzen, der in Ihrer Konsole ausgegeben wurde.
curl -fsSLo /your/chosen/path/file_name.jpg "${url}"
Damit endet unser kurzer Blick auf das jüngste Update unseres Smart CDN. Wir sind gespannt, auf welche kreativen Weisen Sie diese neue Funktion in Ihre Projekte einbinden werden, und würden gerne auf Twitter davon hören!