Khả năng thu thập thông tin từ hình ảnh có tiềm năng kinh doanh sâu sắc. Và, à, nó cũng có thể là niềm vui. Trong bài viết này, tôi sẽ phác thảo cách chúng tôi sử dụng
Nói một cách đơn giản, phát hiện đối tượng hình ảnh là quá trình phát hiện và trích xuất thông tin về các thực thể trong một hình ảnh nhất định. Điều này liên quan đến việc phát hiện các đồ vật, hoạt động, địa điểm, động vật, sản phẩm, v.v.
Phát hiện đối tượng hình ảnh có nhiều trường hợp sử dụng trong nhiều ngành khác nhau. Các lĩnh vực chính như ngân hàng, bảo hiểm, truyền thông xã hội, ứng dụng hẹn hò, hãng tin tức và FinTech sử dụng tính năng phát hiện đối tượng dưới hình thức này hay hình thức khác.
Gần đây, chúng tôi được giao nhiệm vụ xây dựng tính năng phát hiện đối tượng hình ảnh cho một công ty khởi nghiệp về mạng xã hội. Trường hợp sử dụng rất đơn giản — người dùng có thể chọn một số ảnh yêu thích của họ và gửi chúng để xuất hiện trên một trong các trang truyền thông xã hội của công ty khởi nghiệp.
Nhóm tiếp thị truyền thông xã hội cần một cách để tìm kiếm thông qua các hình ảnh được gửi cho một số chủ đề nhất định - chẳng hạn như ảnh về đại dương, các địa danh nổi tiếng, động vật, buổi hòa nhạc, v.v.
Phân tích hình ảnh và phân loại chúng dựa trên khung cảnh và vật thể trong ảnh không phải là một công việc đơn giản. Thị giác của con người không có gì đáng chú ý và việc xây dựng một ứng dụng có thể tái tạo khả năng phát hiện vật thể của não là vô cùng phức tạp. Có cả một ngành công nghiệp thị giác máy tính dành để làm việc đó.
Thực hiện phát hiện đối tượng từ đầu thường là một quá trình gồm nhiều bước bao gồm:
Mục đích của chúng tôi đối với tính năng này, giống như tất cả các tính năng khác trong dự án, là xây dựng nó một cách nhanh chóng và kiểm tra tính hiệu quả của nó trong môi trường sản xuất càng sớm càng tốt. Hơn nữa, chúng tôi không muốn dành nguồn lực phát triển để xây dựng giải pháp ngay từ đầu khi chúng tôi có thể tận dụng các dịch vụ đám mây hiện có.
Cue Serverless — toàn bộ phần phụ trợ của phần khởi động hoàn toàn không có máy chủ và hướng đến sự kiện. Với kiến trúc này, chúng tôi có thể có các nhóm nhà phát triển chỉ cần tập trung vào các tính năng giúp phân biệt ứng dụng mạng xã hội với các ứng dụng khác. Serverless cũng cho phép chúng tôi xây dựng các dịch vụ có khả năng mở rộng cao trong khi chỉ trả tiền cho chính xác những gì chúng tôi sử dụng — một điều quan trọng cần cân nhắc khi khởi nghiệp mở rộng quy mô.
Vì vậy, để đạt được tính năng này, chúng tôi đã sử dụng Amazon Rekognition — một dịch vụ phân tích video và hình ảnh Serverless hoàn toàn. Bằng cách sử dụng Rekognition, chúng tôi có thể phát triển quy trình làm việc phức tạp và quan trọng này chỉ trong vài giờ . Hãy đi sâu vào nó.
Amazon Rekognition là một dịch vụ AWS Serverless sử dụng deep learning để thực hiện phân tích hình ảnh và video. Hoàn toàn không có máy chủ có nghĩa là với Rekognition, chúng ta không cần phải lo lắng về sự phức tạp của cơ sở hạ tầng cơ bản; chúng tôi chỉ trả tiền cho những gì chúng tôi sử dụng và nó cung cấp cho chúng tôi phần mềm viết sẵn cho các tác vụ phân tích hình ảnh và video. Rekognition cung cấp một loạt tính năng, bao gồm phát hiện nhãn hình ảnh, nhận diện khuôn mặt, phát hiện người nổi tiếng, kiểm duyệt nội dung và phát hiện văn bản.
Phần tốt nhất? Rekognition loại bỏ bớt gánh nặng trong việc xây dựng, đào tạo và phân tích các mô hình deep learning. Phân tích hình ảnh và video nhanh chóng và đơn giản, chỉ cần thiết lập tối thiểu. Chúng tôi không cần phải lo lắng về việc xây dựng và đào tạo bộ dữ liệu của riêng mình cũng như cung cấp năng lực máy chủ để dịch vụ của chúng tôi có thể mở rộng quy mô. Tất cả những gì chúng tôi cần lo lắng là việc tích hợp.
Kiến trúc rất đơn giản. Ứng dụng di động của chúng tôi tải hình ảnh từ điện thoại của người dùng lên bộ chứa S3. Sau đó, việc tải lên S3 sẽ kích hoạt hàm Lambda, hàm này gọi API Rekognition và lưu trữ kết quả trong DynamoDB để truy vấn.
Sơ đồ kiến trúc phát hiện đối tượng hình ảnh phi máy chủ bằng AWS
Viết code thật thú vị phải không? Chà, viết ít mã hơn thậm chí còn thú vị hơn.
Rekognition hiển thị một bộ API mà bạn gửi dữ liệu hình ảnh để thực hiện phân tích và trả về kết quả. Đối với trường hợp sử dụng của chúng tôi, chúng tôi đã sử dụng
Một phiên bản đơn giản hóa của Cơ sở hạ tầng khung máy chủ của chúng tôi dưới dạng tệp Mã trông như thế này:
//serverless.yamlfunctions: imageLabelDetection: handler: image-label-detection.handler events: - s3: bucket: my-image-bucket event: s3:ObjectCreated:* existing: true iamRoleStatements: - Effect: Allow Action: rekognition:DetectLabels Resource: "*" - Effect: Allow Action: s3:GetObject Resource: arn:aws:s3:::my-image-bucket
Mã Lambda của chúng tôi chỉ gọi API Rekognition và lưu trữ kết quả trong DynamoDB, nhưng bạn có thể sử dụng bất cứ thứ gì phù hợp với trường hợp sử dụng của mình. Chúng tôi lấy tên vùng lưu trữ S3 và tên đối tượng của hình ảnh từ sự kiện S3 rồi chuyển chúng vào hàm detectLabels của
Chúng tôi cũng chuyển vào hai tham số tùy chọn (MaxLabels và MinConfidence) để chỉ định ngưỡng mức độ tin cậy và số lượng nhãn tối đa mà chúng tôi muốn trả về. Trong ví dụ bên dưới, chúng tôi sẽ chỉ nhận được tối đa 20 nhãn trong phản hồi và tất cả các nhãn sẽ có mức độ tin cậy trên 80%.
//image-label-detecion.jsconst AWS = require("aws-sdk");const rekognition = new AWS.Rekognition();exports.handler = async (event) => { const imageDetails = event.Records[0].s3; const bucketName = imageDetails.bucket.name; const objectKey = imageDetails.object.key; const rekognitionResp = await rekognition .detectLabels({ Image: { S3Object: { Bucket: bucketName, Name: objectKey, }, }, MaxLabels: 20, MinConfidence: 80, }) .promise(); // Send to data store, eg DynamoDB // ... };
Ai lại không thích hình ảnh một con chó? Dưới đây là phản hồi cho một hình ảnh mà chúng tôi đã tải lên bộ chứa S3 của mình. Như bạn có thể thấy, Rekognition xác định chính xác rằng đó là hình ảnh một con chó trên con đường trải sỏi ngoài trời (và cho chúng ta biết con chó ở đâu trong hình ảnh!).
Phản hồi Rekognition (trái), hình ảnh được tải lên (phải).
Vậy tôi nghĩ gì sau khi sử dụng Rekognition trong sản xuất được vài tháng? Dưới đây là danh sách các điểm chính:
TLDR: Rekognition cho phép chúng tôi nhanh chóng xây dựng tính năng phát hiện đối tượng hình ảnh một cách chính xác, nhanh chóng và có thể mở rộng.