Le Smart CDN enrichi par la détection de visages par IA

Notre Smart CDN est l’une des fonctionnalités les plus enthousiasmantes que nous ayons lancées ces dernières années. Il permet à nos utilisateurs de bénéficier des temps de réponse les plus courts que nous puissions proposer et, bien qu’il soit en bêta, il progresse à grands pas chaque jour. Aujourd’hui, nous sommes ravis d’annoncer que nous avons élargi la liste des Robots compatibles pour y inclure notre Robot /image/facedetect alimenté par l’IA !

Récemment, nous avons remplacé l’API que nous utilisions par le service d’IA d’AWS, améliorant ainsi notre Robot de détection de visages et contribuant à accélérer le transcodage lors de l’importation de fichiers depuis un bucket S3. Notre Robot /image/facedetect a donc désormais toute sa place au sein de notre Smart CDN.
Voyons rapidement comment vous pouvez profiter de cette mise à jour.
Configuration
Avant de passer à un exemple, nous devons disposer d’un stockage cloud contenant une image avec des visages, ainsi que d’un Template. Comme notre API fonctionne sur AWS, nous vous recommandons de stocker vos fichiers dans un bucket S3 pour obtenir la latence la plus faible. Si vous préférez une autre solution, vous pouvez choisir l’un de nos autres Robots d’importation de fichiers.
Commençons par créer notre Template. Veillez à noter le nom de votre Template, car nous en aurons besoin plus tard dans cette démonstration.
{
"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"
}
}
}
Comme indiqué plus haut, nous utilisons S3 dans notre
Template pour importer notre fichier. Le point essentiel
à examiner dans le premier Step, « imported », est
le paramètre path. Sa valeur précise que nous souhaitons cibler un dossier
particulier. Une Assembly Variable est ensuite
configurée pour déterminer quel fichier nous souhaitons utiliser dans notre transformation par URL.
L’image importée est alors transmise au Step
facedetect, où notre Robot
/image/facedetect alimenté par l’IA assure la détection des visages.
Là encore, ce Step utilise des
Assembly Variables pour interagir avec le
paramètre faces lorsque l’URL que nous avons créée est appelée. Si vous
souhaitez une explication plus détaillée de ce paramètre, vous la trouverez dans notre précédent
article de blog sur /image/facedetect (English).
Pour terminer notre Template, nous utilisons le Robot /file/serve pour fournir le résultat de notre Assembly.
Signature Authentication
J’aimerais également prendre un instant pour vous montrer à quel point il est facile d’ajouter Signature Authentication à notre méthode de transformation par URL.
Il n’est pas nécessaire de configurer Signature Authentication, mais nous le recommandons comme bonne pratique. Les URL signées avec une date d’expiration limitent les transformations non autorisées et la durée pendant laquelle une URL peut être réutilisée, mais elles ne constituent pas une protection complète contre les attaques DDoS. De plus, l’intégration de Signature Authentication à votre backend ne prend probablement que quelques minutes supplémentaires.
Si vous souhaitez découvrir comment utiliser notre Smart CDN sans Signature Authentication, consultez la page consacrée à la diffusion de contenu sur notre site.
Code
Pour cet exemple, nous avons implémenté Signature Authentication en Node.js. Si vous préférez utiliser un autre langage dans votre backend, vous trouverez des exemples ici.
Installez nos utilitaires partagés dans votre projet serveur :
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)
Exécutez ce programme sur votre serveur, jamais dans le navigateur. Utilisez l’Auth Key activée pour le Smart CDN et son Auth Secret associé. La bibliothèque génère une signature HMAC à partir du chemin de l’URL et des paramètres de requête triés, y compris une date d’expiration en millisecondes. Elle authentifie l’URL ; elle ne la chiffre pas et n’expose pas l’Auth Secret.
Remplacez YOUR-TEMPLATE-NAME par le nom de votre propre
Template et définissez input
sur le nom de votre image. Dans cet exemple, le fichier s’appelle faces.jpg.
Le champ type dans urlParams transmet
max-confidence à l’Assembly Variable de notre
Template. La bibliothèque se charge du tri des
paramètres de requête pour la signature.
Définissez workspace sur le slug de votre Workspace Transloadit. Une fois
ces éléments en place, l’exécution de votre application Node.js générera une URL de résultat !
Résultat
Une fois notre URL générée, il suffit de la consulter pour lancer l’encodage. Si vous ouvrez
cette URL dans un navigateur, le résultat encodé s’affichera automatiquement une fois le
traitement terminé. Si vous le souhaitez, vous pouvez tout aussi facilement enregistrer le
résultat de l’Assembly directement sur votre ordinateur
à l’aide des commandes ci-dessous. Dans l’affectation à url, remplacez
l’intégralité de l’URL utilisée comme valeur provisoire par l’URL affichée par votre programme
serveur, en conservant les guillemets.
url='https://YOUR-WORKSPACE.tlcdn.com/YOUR-COMPLETE-SIGNED-URL'
curl -fsSLo /your/chosen/path/file_name.jpg "${url}"
Voilà qui conclut ce bref aperçu de la récente mise à jour de notre Smart CDN. Nous avons hâte de voir les façons créatives dont vous pourrez intégrer cette nouvelle fonctionnalité à vos projets et serions ravis que vous nous en parliez sur Twitter !