Smart CDN aprimorado com detecção facial por IA

Nosso Smart CDN é um dos recursos mais empolgantes que lançamos nos últimos anos. Ele ajuda nossos usuários a obter os menores tempos de resposta que podemos oferecer e, mesmo estando em beta, avança bastante a cada dia. Hoje, temos o prazer de anunciar que atualizamos a lista de Robots compatíveis para incluir nosso Robot /image/facedetect, que usa IA!

Recentemente, substituímos a API que usávamos pelo serviço de IA da AWS, aprimorando nosso Robot de detecção facial e ajudando a acelerar a transcodificação na importação de arquivos de um bucket S3. Isso significa que nosso Robot /image/facedetect agora se integra perfeitamente ao nosso Smart CDN.
Continue lendo para ver como você pode aproveitar essa atualização.
Configuração
Antes de começarmos com um exemplo, precisamos de algum armazenamento em nuvem que contenha uma imagem com alguns rostos, além de um Template. Como nossa API é executada na AWS, recomendamos armazenar seus arquivos em um bucket S3 para obter a menor latência. Se você tiver outra preferência, pode optar por um dos nossos outros Robots de importação de arquivos.
Vamos começar criando nosso Template. Anote o nome do seu Template, pois precisaremos usá-lo mais adiante nesta demonstração.
{
"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"
}
}
}
Como mencionado acima, usamos o S3 no nosso Template
para importar nosso arquivo. O ponto principal no primeiro
Step, “imported”, é o parâmetro path.
Seu valor especifica que queremos usar uma pasta específica. Em seguida, configuramos uma
Assembly Variable para determinar qual arquivo
queremos acessar na nossa transformação por URL.
A imagem importada é então passada ao Step
facedetect, no qual nosso Robot
/image/facedetect, que usa IA, cuida da detecção facial.
Novamente, esse Step usa
Assembly Variables para interagir com o parâmetro
faces quando a URL que criamos é acessada. Se você quiser uma explicação
mais detalhada sobre esse parâmetro, pode encontrá-la no nosso
artigo anterior sobre /image/facedetect (English).
Para concluir nosso Template, usamos o Robot /file/serve para entregar o resultado da nossa Assembly.
Signature Authentication
Também gostaria de mostrar rapidamente como é fácil adicionar Signature Authentication ao nosso método de transformação por URL.
Não é necessário configurar Signature Authentication, mas recomendamos isso como uma boa prática. URLs assinadas com prazo de expiração limitam as transformações não autorizadas e o tempo durante o qual uma URL pode ser reutilizada, mas não oferecem uma defesa completa contra ataques DDoS. Além disso, provavelmente bastam alguns minutos a mais para implementar esse recurso no seu back-end.
Se quiser ver como usar nosso Smart CDN sem Signature Authentication, você pode consultar a página de entrega de conteúdo no nosso site.
Código
Implementamos a Signature Authentication em Node.js para este exemplo. Se você preferir usar outra linguagem no seu back-end, pode ver alguns exemplos aqui.
Instale nossos utilitários compartilhados no projeto do seu servidor:
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)
Execute este programa no seu servidor, nunca no navegador. Use a Auth Key habilitada para o Smart CDN e o Auth Secret correspondente. A biblioteca gera uma assinatura HMAC sobre o caminho da URL e os parâmetros de consulta ordenados, incluindo um horário de expiração em milissegundos. Ela autentica a URL; não a criptografa nem expõe o Auth Secret.
Substitua YOUR-TEMPLATE-NAME pelo nome do seu próprio
Template e defina input como o nome
da sua imagem. Neste exemplo, o arquivo se chama faces.jpg.
O campo type em urlParams passa
max-confidence para a Assembly Variable no nosso
Template. A biblioteca cuida da ordenação dos parâmetros
de consulta para a assinatura.
Defina workspace como o slug do seu Workspace na Transloadit. Com tudo
configurado, executar seu aplicativo Node.js gerará uma URL de resultado!
Resultado
Com a URL gerada, basta acessar a nova URL para que nossa codificação seja realizada.
Ao acessar essa URL em um navegador, o resultado codificado aparecerá automaticamente assim
que o processo for concluído. Se quiser, você também pode salvar o resultado da
Assembly diretamente na sua máquina usando os comandos
abaixo. Substitua toda a URL de exemplo na atribuição de url pela URL
impressa pelo programa do seu servidor, mantendo as aspas.
url='https://YOUR-WORKSPACE.tlcdn.com/YOUR-COMPLETE-SIGNED-URL'
curl -fsSLo /your/chosen/path/file_name.jpg "${url}"
Isso encerra nossa breve apresentação da atualização recente do Smart CDN. Estamos na expectativa de ver as formas criativas como você poderá incorporar esse novo recurso aos seus projetos e adoraríamos saber mais sobre elas no Twitter!