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 AmazonRekognitionFullAccess
y AmazonS3ReadOnlyAccess
. 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.
- Puede detectar las etiquetas de imagen/video usando el objeto s3 después de cargarlo en s3.
- 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.
- https://docs.aws.amazon.com/rekognition/latest/dg/labels-detect-labels-image.html
- https://github.com/oleurud/node-rekognition
- https://docs.aws.amazon.com/rekognition/latest/dg/API_Operations.html
- https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Rekognition.html
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.