AWS Rekognition: Reconocimiento de imagen / video

AWS Rekognition

Reconocimiento de imagen / video AI con Node.js y AWS Rekognition

AWS Rekognition — Hoy en día, muchos proveedores brindan servicios relacionados con la detección de etiquetas de objetos de imagen/video. He enumerado algunos de los proveedores que brindan un servicio de detección de visión AI/AutoML con una alta tasa de precisión y rentable.

https://aws.amazon.com/rekognition

https://azure.microsoft.com/en-in/services/cognitive-services/computer-vision/#features

https://cloud.google.com/vision/automl/object-detection/docs


Como estoy más familiarizado con AWS y tengo un conocimiento sólido y nuestro servidor también estaba configurado en AWS, preferí usar AWS Rekognition en lugar de Azure o GCP.

Amazon Rekognition facilita la adición de análisis de imágenes y videos a sus aplicaciones mediante tecnología de aprendizaje profundo comprobada y altamente escalable que no requiere experiencia en aprendizaje automático para su uso. Con Amazon Rekognition, puede identificar objetos, personas, texto, escenas y actividades en imágenes y videos, así como detectar cualquier contenido inapropiado.

Para Node.js, hay 2 formas de detectar las etiquetas de imagen/video usando AWS Rekognition.

Requisito previo :

Cree o actualice un usuario de IAM con permisos  AmazonRekognitionFullAccessAmazonS3ReadOnlyAccess . Para obtener más detalles, consulte el Paso 1: Configure una cuenta de AWS y cree un usuario de IAM.

#1 Mediante el uso de SDK de AWS

De esta manera, puede detectar los objetos de las etiquetas de la imagen y el video, pero es como si hubiera cargado el archivo adjunto en s3 y ese objeto cargado tiene que pasarlo al método detectLabels de AWS Rekognition.

Veamos cómo podemos hacer esto.

  • Instale y configure los SDK de AWS. Para obtener más detalles, consulte el Paso 2: Configurar la CLI de AWS y los SDK de AWS.
  • Utilice el siguiente ejemplo de Node.js para detectar los objetos lable.

 

// Load the SDK
var AWS = require(‘aws-sdk’);
const bucket = your_bucket_name’ // the bucketname without s3://
const photo = ‘photo’ // the name of file
const config = new AWS.Config({
accessKeyId: process.env.AWS_ACCESS_KEY_ID,
secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY,
region: process.env.AWS_REGION
})

const client = new AWS.Rekognition();

const params = { Image: { S3Object: { Bucket: bucket, Name: photo }, }, MaxLabels: 10 }

client.detectLabels(params, function(err, response) {
if (err) {
console.log(err, err.stack); // if an error occurred
} else {
console.log(`Detected labels for: ${photo}`);
console.log(‘Detected labled’, response);
} // if
});

 

#2 Usando el reconocimiento de nodos

Al usar esta forma, puede detectar las etiquetas de objetos de imagen/video con el código de secuencia de comandos mínimo y lograr un resultado superior. Además, al usar esta biblioteca de reconocimiento de nodos, puede hacer 2 cosas para detectar las etiquetas de los objetos.

  1. Puede detectar las etiquetas de imagen/video usando el objeto s3 después de cargarlo en s3.
  2. Pase los datos de imagen/video en formato de bytes y puede recuperar el resultado.

La biblioteca de reconocimiento de nodos admite muchas acciones, incluidas detectLabels, detectFaces, compareFaces y muchas más.

Volvamos a la integración usando node-rekognition.

  • Instale el paquete npm usando npm install node-rekognition
  • Inicialice la biblioteca y establezca los parámetros de AWS requeridos.

 

const Rekognition = require(‘node-rekognition’)
const fs = require(“fs”);

// Set your AWS credentials
const AWSParameters = {
“accessKeyId”: “XXXXXXXX”,
“secretAccessKey”: “XXXXXX”,
“region”: “YOUR_REGION”,
“bucket”: “YOUR_BUCKET_NAME”,
// “ACL”: “XXX” // optional
}

const rekognition = new Rekognition(AWSParameters);

if(req.file){

#2.a To detect labels by using s3 object

const s3Images = await rekognition.uploadToS3(req.file.path, ‘FOLDER_WHERE_YOU_WANT_UPLOAD_FILE’);
const imageLabels = await rekognition.detectLabels(s3Images)
console.log(imageLabels);

#2.b To detect labels by using image buffer data

const base64 = fs.readFileSync(req.file.path, “base64”);
// Convert base64 to buffer => <Buffer ff d8 ff db 00 43 00 …
const buffer = Buffer.from(base64, “base64”);
const imageLabels = await rekognition.detectLabels(buffer)
console.log(imageLabels);

}

Sample response format :

{
Labels: [
{
Name: ‘Pc’,
Confidence: 99.83708190917969,
Instances: [],
Parents: [Array]
},
{
Name: ‘Computer’,
Confidence: 99.83708190917969,
Instances: [],
Parents: [Array]
},
{
Name: ‘Electronics’,
Confidence: 99.83708190917969,
Instances: [],
Parents: []
},
{
Name: ‘Laptop’,
Confidence: 99.5391845703125,
Instances: [],
Parents: [Array]
},
{
Name: ‘Person’,
Confidence: 89.86421203613281,
Instances: [Array],
Parents: []
},
{
Name: ‘Human’,
Confidence: 89.86421203613281,
Instances: [],
Parents: []
}
],
LabelModelVersion: ‘2.0’
}

 


Enlace de referencia:

Aquí, puede encontrar y explorar más sobre el reconocimiento de IA y otras acciones requeridas.

Footnotes

Avíseme si ha encontrado mejores ideas o si hay un error en mi código o en la descripción. Si tiene alguna consulta o confusión con respecto a la implementación, deje un comentario. Estaré encantado de ayudarlo lo antes posible.

Recent Post