Amazon Rekognition - Phân tích hình ảnh và video với machine learning (Part 2 - Sử dụng)

LAMP Jan 04, 2021

Nếu các bạn chưa đọc bài trước của mình thì mình xin giới thiệu lại, bài trước mình Giới thiệu về Amazon Rekognition. HAY CỰC NUÔN, các bạn vào link dưới đây nhé ↓

Amazon Rekognition - Phân tích hình ảnh và video với machine learning (Part 1 - Giới thiệu)
Nghe giang hồ đồn, chỉ cần bạn có 1 tấm ảnh đàn ruồi là Amazon Rekognition cóthể phân tích được con nào là con đực, con nào là con cái. Vậy thực sự, dịch vụnày của Amazon có ghê gớm như vậy không, sau đây các bạn hãy cùng tôi tìm hiểuvề Amazon Rekognition nhé. Ảnh minh hoạ (lấy ở đâu đó trên int…

Bài này mình sẽ nói từng bước cài đặt và sử dụng Amazon Rekognition (dùng NodeJS) nhé. Nội dung sau đây, mình sẽ tập trung vào việc Labels Detection trong ảnh hoặc video.

Bước 1: Tạo folder của project và chạy lệnh khởi tạo

mkdir rekognition_demo
cd rekognition_demo
npm init

Bước 2: Cài đặt aws-sdk package

npm install aws-sdk

Bước 3: Import package và sử dụng

// AWS rekognition
const AWS = require('aws-sdk');

var rekognition = new AWS.Rekognition({
    region: 'us-east-1',
    apiVersion: '2017-11-27'
});
// End AWS rekognition

Bước 4: Viết hàm xử lý

Trong phần xử lý có 2 loại: xử lý ảnh, và xử lý video.

1. Xử lý ảnh từ URL

// Using node-fetch package
const fetch = require('node-fetch');

// Detect labels from image
const processImageFromURL = (imageUrl) => {
    return new Promise(async (resolve, reject) => {
        const response = await fetch(imageUrl, {});
        if (!response.ok) {
            reject(`Could not fetch image, (status ${response.status}`);
        }
        const file = await response.arrayBuffer();
        var params = {
            Image: {
                Bytes: file
            },
            MinConfidence": 80
        };
        rekognition.detectLabels(params, function (err, data) {
            if (err) reject(err); // an error occurred
            else {
                resolve(data);
            }
        });
    });
}

2. Xử lý video, tương tự logic xử lý ảnh chỉ khác parameter truyền vào rekognition như sau:

var params = {
    Video: {
        S3Object: {
            Bucket: "bucket",
            Name: "video.mp4"
        }
    },
    MinConfidence": 80
};

Lưu ý: Có bạn nào đặt câu hỏi tại sao phần 1, trong biến params mình lại truyền vào là bytes, còn phần 2 mình lại truyền S3Object không? Lý do là nếu bạn chưa có file ở trên S3 thì bạn phải upload file lên Rekognition để nó phân tích, còn nếu bạn có rồi thì nó sẽ reference đến S3Object đó luôn. Đương nhiên, trường hợp 2 xử lý nhanh hơn, vì file đó đã tồn tại trên S3 rồi Amazon Rekognition chỉ cần refer đến object đó để phân tích thôi.

Bước 5: Sử dụng kết quả sau khi phân tích

Sau khi phân tích Amazon Rekognition sẽ trả về một chuỗi JSON như sau:

{
            
    {
    	"Labels": [
            {
                "Name": "Vehicle",
                "Confidence": 99.15271759033203,
                "Instances": [],
                "Parents": [
                    {
                        "Name": "Transportation"
                    }
                ]
            },
            {
                "Name": "Transportation",
                "Confidence": 99.15271759033203,
                "Instances": [],
                "Parents": []
            },
            {
                "Name": "Person",
                "Confidence": 98.9914321899414,
                "Instances": [
                    {
                        "BoundingBox": {
                            "Width": 0.19360728561878204,
                            "Height": 0.2742200493812561,
                            "Left": 0.43734854459762573,
                            "Top": 0.35072067379951477
                        },
                        "Confidence": 98.9914321899414
                    },
                    {
                        "BoundingBox": {
                            "Width": 0.03801717236638069,
                            "Height": 0.06597328186035156,
                            "Left": 0.9155802130699158,
                            "Top": 0.5010883808135986
                        },
                        "Confidence": 85.02790832519531
                    }
                ],
                "Parents": []
            }
    	],
    	"LabelModelVersion": "2.0"
    }
}

Như các bạn thấy, kết quả sẽ được đánh giá Confidence tức là độ tự tin đối với từ khoá khi được phân tích bởi Rekognition.

Do vậy, tuỳ mục đích sử dụng mà chúng ta lọc kết quả này cho hợp lý.

Tổng kết

Sau khi thực hành xong demo này, chắc chắn bạn vẫn chưa thể biết đâu là ruồi đực ruồi cái. Vậy nên hãy tìm hiểu thêm hoặc đón đọc phần tiếp theo nhé.

Hẹn gặp lại!!!

Tags

Great! You've successfully subscribed.
Great! Next, complete checkout for full access.
Welcome back! You've successfully signed in.
Success! Your account is fully activated, you now have access to all content.