Ứng dụng AWS Rekognition cùng Fipix

Ứng dụng AWS Rekognition cùng Fipix

Xin chào tất cả các bạn, lại là mình đây. Ngày 26.07 vừa rồi mình rất may mắn khi được sếp của mình và các anh chị em ở Cloud Kinetics Việt Nam tạo điều kiện để tham gia, trình bày trong sự kiện Unlock Your Future with GenAI. Ở trong sự kiện này thì mình sẽ trình bày về một use case thực tế mà mình đã ứng dụng được AWS Rekognition vào production, trong bài viết này thì mình cũng sẽ trình bày lại các ý mà mình đã trình bày ở sự kiện trên. Vì tính chất công việc nên mình sẽ không đi sâu quá nhiều vào Technical nhé mọi người.

I. Sơ lược về Face Recognition

1. Face recognition là gì?

Face Recognition (nhận diện khuôn mặt) là một những tính năng của thị giác máy tính để nhận dạng và xác định danh tính của con người dựa trên các đặc điểm khuôn mặt trên một tấm hình kỹ thuật số hoặc từ những khung hình trong các đoạn video. Công nghệ này được ứng dụng rộng rãi trong nhiều lĩnh vực, từ bảo mật cá nhân đến giám sát an ninh công cộng, giúp tăng cường hiệu quả và an toàn. Vậy chính xác thì công nghệ này sẽ được hoạt động như thế nào?

2. Cách hoạt động của face recognition

Face Recognition hoạt động thông qua hàng loạt các bước kỹ thuật vô cùng thú vị, để chia ra thì thường chúng ta sẽ có 3 cách sau để có thể phân tích khuôn mặt:

Bước 1: Phát hiện khuôn mặt (Face detection)

Bước đầu tiên và quan trọng nhất trong nhận diện khuôn mặt đó chính là tìm ra cái mặt chúng ta trong cái ảnh đúng không ạ. Nếu quá trình này mà không có được khuôn mặt các bước sau còn gì thú vị đâu. Trong một tấm hình đầu vào chúng ta có thể sẽ có một hoặc nhiều khuôn mặt trong đó, việc của chúng ta là tìm ra các khuôn mặt trong đấy, vậy chúng ta sẽ tìm ra bằng cách nào? Có nhiều cách khác nhau để triển khai quy trình nhận dạng khuôn mặt. Ở bài viết này thì mình sẽ bàn về một trong những phương pháp phát hiện khuôn mặt nổi tiếng là MTCNN.

MTCNN (Multi-task Cascaded Convolutional Networks) là một mô hình học sâu (deep learning) trong lĩnh vực computer vision (thị giác máy tính). Được thiết kế để thực hiện các nhiệm vụ liên quan đến nhận diện khuôn mặt, MTCNN kết hợp nhiều mạng nơ-ron tích chập (convolutional neural networks - CNNs) để thực hiện ba nhiệm vụ chính: phát hiện khuôn mặt, nhận diện điểm mốc trên khuôn mặt (như mắt, mũi, miệng), và phân loại khuôn mặt. MTCNN bao gồm ba mạng nơ-ron được xếp chồng lên nhau, được gọi là P-Net, R-Net và O-Net. Mỗi mạng nơ-ron được thiết kế để thực hiện một nhiệm vụ cụ thể trong quá trình phát hiện và phân loại khuôn mặt.

  • P-Net (Proposal Network): Mạng này xác định các vùng hình chữ nhật có khả năng chứa khuôn mặt. Mạng này trả về các tọa độ của hình chữ nhật (bounding boxes) và xác suất mà khuôn mặt có thể xuất hiện trong các vùng đó. Các vùng này sau đó được gửi đến mạng tiếp theo.
  • R-Net (Refine Network): Mạng này tiếp nhận các vùng đề xuất từ P-Net và thực hiện một quá trình lọc để loại bỏ các cửa sổ không chứa khuôn mặt. Nó sử dụng một thuật toán (Non-Maximum Suppression) để cải thiện độ chính xác của các cửa sổ chứa khuôn mặt.
  • O-Net (Output Network): Mạng này nhận các cửa sổ đã được lọc từ R-Net và thực hiện một quá trình cuối cùng để xác định chính xác các khung hình bao quanh khuôn mặt. Kết quả cuối cùng chúng ta sẽ có được 5 điểm nút trên khuôn mặt, bao gồm: 2 điểm mắt, 1 điểm mũi và 2 điểm khóe miệng.

Nếu bạn muốn biết chi tiết hơn về CNN hoặc MTCNN, bạn có thể truy cập vào các bài viết sau CNN , MTCNN để xem các thông tin chi tiết, vì mình không có chuyên môn sâu về lĩnh vực này lắm.

Bước 2: Phân tích khuôn mặt (Analytics)

Sau khi đã có được khuôn mặt thì chúng ta sẽ tới bước phân tích khuôn mặt. Lúc này chúng ta cần phân tích các đặc điểm như tỷ lệ chiều cao và chiều rộng của khuôn mặt, vị trí của mắt, mũi, miệng, và các đặc điểm riêng biệt khác. Thì thông thường hầu hết các thuật toán đều biến các đặc điểm trên khuôn mặt thành một face embedding để có thể tính toán và xử lý. Trong phần này thì mình sẽ đề cập tới một cộng nghệ gọi là FaceNet. FaceNet là một mô hình học sâu (deep learning) được phát triển bởi Google, chủ yếu dùng để nhận dạng khuôn mặt. Thay vì chỉ tập trung vào phân loại khuôn mặt thành các danh mục, FaceNet học cách nhúng (embedding) khuôn mặt vào một không gian đặc trưng (feature space) với chiều thấp, trong đó các khuôn mặt của cùng một người sẽ gần nhau, và các khuôn mặt của những người khác nhau sẽ ở xa nhau. FaceNet sử dụng một mạng nơ-ron tích chập sâu (deep convolutional neural network) làm backbone. Mạng này được huấn luyện end-to-end để ánh xạ trực tiếp ảnh khuôn mặt vào một embedding vector 128 chiều, với mục tiêu là các embedding của cùng một người sẽ gần nhau, còn embedding của những người khác sẽ cách xa nhau trong không gian vector này. Sau khi đã có những thông tin về face embedding rồi thì chúng ta nên lưu lại những thông tin để có thể phục vụ cho việc tìm kiếm và xác định hình có matching hay không.

Nếu bạn muốn biết chi tiết hơn về FaceNet, bạn có thể truy cập vào các bài viết sau FaceNet để xem các thông tin chi tiết, vì mình chỉ có thể cung cấp những thông tin sơ lược.

Bước 3: Tìm kiếm (Find a match)

Như đã có trình bày như trên thì sau khi đã có được face embedding thì để tìm ra được những khuôn mặt giống nhau thì chúng ta cần tìm những ảnh có khoảng cách gần nhất với vector hình ảnh đầu vào. Lúc này chúng ta cần phải áp dụng một số thuật toán toán học vào để xử lý quá trình này. Tất nhiên sẽ có nhiều thuật toán có xử lý được việc này, nhưng trong bài viết này mình sẽ liệt kê 2 trong những thuộc toán mà mình hay sử dụng là Euclidean distance và Cosine similarity.

3.1. Euclidean Distance

Euclidean distance đo lường khoảng cách “trực tiếp” giữa hai điểm trong không gian, đại diện bởi các vector embedding. Công thức để tính Euclidean distance giữa hai vector xy là:

alter-text
Euclidean Distance.

Trong đó:

  • x_iy_i là các thành phần của vector xy.
  • n là chiều của các vector embedding.

Euclidean distance là một thước đo đơn giản và trực quan cho khoảng cách giữa hai vector, và nó hoạt động tốt trong nhiều trường hợp. Nếu khoảng cách giữa hai vector nhỏ, điều đó ngụ ý rằng hai khuôn mặt tương tự nhau; ngược lại, nếu khoảng cách lớn, hai khuôn mặt ít giống nhau.

3.2. Cosine Similarity

Cosine similarity đo lường “góc” giữa hai vector thay vì khoảng cách, bằng cách tính toán cosine của góc giữa chúng. Công thức để tính cosine similarity giữa hai vector ab là:

alter-text
Cosine Similarity.

Trong đó:

  • a ⋅ b là tích vô hướng của hai vector.
  • ||a||||b|| là độ dài của các vector ab.

Cosine similarity có giá trị từ -1 đến 1, trong đó 1 biểu thị rằng hai vector hoàn toàn giống nhau, 0 biểu thị rằng hai vector không liên quan, và -1 biểu thị rằng hai vector hoàn toàn đối lập. Cosine similarity thường được sử dụng trong các trường hợp mà độ lớn của vector không quan trọng, mà chỉ quan tâm đến hướng của vector.

3. Khó khăn và hành trình lên Cloud

Sau khi đã dành thời gian ra để tìm hiểu thì team của mình cũng đã triển khai được một hệ thống tìm kiếm bằng khuôn mặt, tuy nhiên có lẽ một phần vì team của mình không phải là một team quá mạnh về ML nên kết quả của hệ thống mình chỉ đạt được khoảng 90% yêu cầu của thị trường, phần còn lại là vì để tự xây dựng và quản lý một service một cách hoàn chỉnh và tốn rất nhiều cost cho nhân lực và công sức. Trong khi đã có những models đã thành công, vậy mình mới đặt ra câu hỏi là tại sao chúng ta không sử dụng những công nghệ đã có được thành quả nhất định để apply vào trong sản phẩm của mình để kiến nó hoàn thiện hơn.

Lúc này thì team của mình cũng rất may mắn và cảm ơn là đã được Cloud Kinetics - Cũng là một partner của AWS tại thị trường Việt Nam tạo điều kiện để tiếp cận với Cloud cũng như các giải pháp hiện có. Và như kỳ vọng của mình thì AWS có một dịch vụ là AWS Rekognition, một dịch vụ tuyệt vời để có apply vào trong sản phẩm của mình.

II. AWS Rekognition

1. AWS Rekognition là gì?

AWS Rekognition là một dịch vụ phân tích hình ảnh và video dựa trên đám mây, giúp dễ dàng tích hợp các khả năng thị giác máy tính tiên tiến vào ứng dụng của bạn. Dịch vụ này được cung cấp bởi công nghệ học sâu đã được chứng minh và không yêu cầu kiến thức chuyên môn về máy học để sử dụng. AWS Rekognition cung cấp một API đơn giản, dễ sử dụng, cho phép phân tích nhanh chóng bất kỳ tệp hình ảnh hoặc video nào được lưu trữ trong Amazon S3.

2. AWS Rekognition có thể làm gì?

AWS Rekognition cung cấp các tính năng mạnh mẽ như phát hiện đối tượng, cảnh, văn bản, nội dung không an toàn, phân tích khuôn mặt và so sánh khuôn mặt. Dịch vụ này cũng hỗ trợ nhận diện người nổi tiếng và cung cấp khả năng tạo các nhãn tùy chỉnh. Các tính năng này có thể được tích hợp vào các ứng dụng để cung cấp các dịch vụ như xác minh người dùng, quản lý thư viện hình ảnh/video, và bảo mật công cộng.

Phân tích hình ảnh:

  • Phát hiện Đối tượng, Cảnh và Khái niệm: Tính năng này cho phép phân loại và phát hiện các đối tượng, cảnh, và khái niệm cụ thể trong hình ảnh, bao gồm cả nhận diện người nổi tiếng.
  • Phát hiện Văn bản: Rekognition có thể phát hiện và nhận diện văn bản in và viết tay trong hình ảnh, hỗ trợ nhiều ngôn ngữ khác nhau.
  • Nội dung không an toàn: Phát hiện và lọc nội dung không an toàn như hình ảnh mang tính bạo lực, khiêu dâm hoặc không phù hợp.
  • Phân tích Khuôn mặt: Tính năng này cung cấp khả năng phát hiện, phân tích các thuộc tính khuôn mặt như giới tính, độ tuổi, và cảm xúc, cũng như so sánh khuôn mặt.
  • Nhãn Tùy chỉnh: Người dùng có thể tạo các bộ phân loại tùy chỉnh để phát hiện các đối tượng hoặc khái niệm cụ thể, phù hợp với nhu cầu kinh doanh riêng.
  • Thuộc tính Hình ảnh: Rekognition cung cấp khả năng phân tích các thuộc tính của hình ảnh như chất lượng, màu sắc, độ sắc nét, và độ tương phản.

Phân tích video:

  • Phát hiện Đối tượng, Cảnh và Khái niệm: Tính năng này cho phép phát hiện và phân loại các đối tượng, cảnh, khái niệm và người nổi tiếng trong video.
  • Theo dõi Người: Rekognition có khả năng theo dõi đường di chuyển của người trong các khung hình video, hỗ trợ trong việc nhận diện và theo dõi cá nhân.
  • Phân tích Khuôn mặt: Tính năng này cho phép phát hiện, phân tích và so sánh khuôn mặt trong video, hỗ trợ cả video trực tuyến và lưu trữ.
  • Nhận diện Người nổi tiếng: Khả năng nhận diện người nổi tiếng trong video giúp xác định sự xuất hiện của các cá nhân nổi tiếng trong các danh mục khác nhau.
  • Phát hiện Nội dung không an toàn: Tính năng này giúp phát hiện các nội dung không an toàn trong video, bao gồm cả những nội dung bạo lực, khiêu dâm.
  • Phân đoạn Video: Rekognition có thể tự động xác định các đoạn video hữu ích như khung đen hoặc phần kết thúc.

3. UseCases có thể ứng dụng?

Thư viện phương tiện tìm kiếm được: AWS Rekognition giúp phát hiện và gắn nhãn các đối tượng, cảnh, và khái niệm trong hình ảnh và video, tạo điều kiện cho việc xây dựng thư viện phương tiện có thể tìm kiếm dễ dàng. Đây là giải pháp hữu ích cho các tổ chức truyền thông, các công ty sản xuất nội dung, và các nhà nghiên cứu.

Xác minh danh tính người dùng dựa trên khuôn mặt: Dịch vụ này có thể so sánh khuôn mặt trong hình ảnh hiện tại với các hình ảnh tham chiếu để xác minh danh tính, hỗ trợ các ứng dụng yêu cầu xác thực người dùng.

Phát hiện nội dung không an toàn: Rekognition có khả năng phát hiện và lọc các nội dung không phù hợp hoặc bạo lực trong hình ảnh và video, giúp quản lý các nội dung do người dùng tạo ra, bảo đảm tuân thủ các chính sách an toàn.

Nhận diện người nổi tiếng: Tính năng này cho phép nhận diện sự xuất hiện của các người nổi tiếng trong hình ảnh và video, phục vụ cho các ứng dụng quản lý sự kiện, truyền thông, và phân tích nội dung.

Phát hiện văn bản: Rekognition giúp trích xuất văn bản từ hình ảnh và video, hỗ trợ các ứng dụng tìm kiếm trực quan hoặc trích xuất siêu dữ liệu từ các biển hiệu, biểu ngữ.

Nhãn tùy chỉnh: Người dùng có thể tạo các nhãn tùy chỉnh để nhận diện các đối tượng hoặc khái niệm cụ thể trong hình ảnh và video, phù hợp với nhu cầu của các ngành công nghiệp khác nhau như nhận diện thương hiệu, sản phẩm.

Tích hợp dễ dàng với các dịch vụ khác của AWS: Rekognition có thể tích hợp với Amazon S3, Lambda, và các dịch vụ khác của AWS, giúp xây dựng các ứng dụng phân tích hình ảnh và video mạnh mẽ, dễ dàng triển khai và mở rộng.

Để tìm hiểu thêm, vui lòng xem phần “What is Amazon Rekognition Custom Labels?” trong Amazon Rekognition Custom Labels Developer Guide.

III. Fipix - Actiup

1. Fipix là gì?

Với mình nói riêng và Actiup nói chung thì đây là một đứa con, đứa con do chính tay chúng mình vun đắp và phát triển từ những ngày còn non dại, cho tới khi vươn mình để có thể live thành một production cụ thể. Với Fipix, đây là một giải pháp cung cấp một dịch vụ lọc hình cho loại hình sự kiện từ truyền thông, hội thảo, hội nghị, đám cưới,.. Fipix giải quyết câu chuyên của người dùng là khi chúng ta tham gia một sự kiện, chúng ta rất nóng lòng có hình ảnh của mình để có thể post facebook, post instagram,.. Tuy nhiên chúng ta lại phải mất thời gian để có được hình của mình tại các sự kiện đó để có thể download chúng về, hoặc một sự kiện hơn ngàn tấm ảnh, việc chúng ta lướt từng trang để tìm hình ảnh quá là cực khổ,… Hiểu được vấn đề đó, Fipix ra đời để mong trở thành một giải pháp về hình ảnh của bạn trong các sự kiện, bằng cách upload hình ảnh lên trên Fipix, và người dùng có thể vào trang Fipix để có thể tìm kiếm hình ảnh bằng chính khuôn mặt của người dùng, điều này rút ngắn thời gian phải đi tìm hình ảnh bản thân trong các sự kiện. Quá là tuyệt lợi đúng không nào? Vậy còn chần chờ gì nữa mà không liên hệ về Fipix chúng mình để các sự kiện của bạn tổ chức sẽ có một trải nghiệm tuyệt vời cho các khách tham dự nào.

alter-text
Architecture of Face Search.

Để triển khai được vấn đề search face bằng aws rekognition thì mình đã triển khai một mô hình serverless. Để hiểu rõ hơn về mô hình này thì sẽ cung cấp một số thông tin như sau:

Đầu tiên chúng ta phải hiểu về 2 concept sau trong AWS Rekognition:

  • Collection ID: Trong Amazon Rekognition, collection ID (ID của bộ sưu tập) là một định danh duy nhất được sử dụng để tạo và quản lý các bộ sưu tập khuôn mặt. Một bộ sưu tập là nơi lưu trữ các khuôn mặt đã được nhận diện và phân tích từ hình ảnh hoặc video. Mỗi bộ sưu tập có thể chứa nhiều khuôn mặt, và ID này giúp phân biệt giữa các bộ sưu tập khác nhau trong hệ thống.
  • Index Faces: IndexFaces là một API trong Amazon Rekognition, cho phép người dùng phát hiện và thêm các khuôn mặt từ một hình ảnh vào một bộ sưu tập (collection) đã được chỉ định. API này không lưu trữ hình ảnh thực tế của các khuôn mặt mà chỉ lưu trữ các đặc điểm của chúng dưới dạng vector đặc trưng trong cơ sở dữ liệu backend. Điều này cho phép thực hiện các thao tác tìm kiếm và so khớp khuôn mặt sau này thông qua các API khác như SearchFaces và SearchFacesByImage.

Tiếp theo chúng ta cũng phải nên biết về các dịch vụ sau của AWS:

  • Amazon S3 (Simple Storage Service) là dịch vụ lưu trữ đối tượng của Amazon Web Services (AWS) cho phép người dùng lưu trữ và truy xuất bất kỳ số lượng dữ liệu nào từ bất kỳ đâu trên web. Các đối tượng được lưu trữ trong các “buckets” (thùng chứa) và có thể được truy cập thông qua một URL duy nhất.

  • Event Notification trong S3 cho phép bạn thiết lập các sự kiện để thông báo về các hành động xảy ra trong một bucket. Khi một sự kiện được kích hoạt, S3 có thể gửi thông báo đến các dịch vụ khác của AWS như:

    • Amazon SNS (Simple Notification Service): Gửi thông báo qua email, SMS hoặc các kênh thông báo khác.
    • Amazon SQS (Simple Queue Service): Đẩy thông báo vào hàng đợi để xử lý bất đồng bộ.
    • AWS Lambda: Kích hoạt một hàm Lambda để thực hiện các tác vụ khi sự kiện xảy ra, như xử lý hình ảnh, phân tích dữ liệu, v.v. Cách cấu hình Event Notification rất linh hoạt, cho phép bạn chỉ định loại sự kiện (như tải lên, xóa) và đích đến của thông báo. Tuỳ theo cách sử dụng của bạn mà có thể tinh chỉnh, trong architecture mình cung cấp thì mình sử dụng SQS như nơi delivery notification.
  • AWS Lambda là dịch vụ điện toán mà bạn có thể chạy mã mà không cần quản lý máy chủ. Lambda tự động quản lý các tài nguyên máy chủ và tự động mở rộng để đáp ứng với khối lượng công việc của bạn. Bạn chỉ cần cung cấp mã và Lambda xử lý phần còn lại.

  • MongoDB là một cơ sở dữ liệu NoSQL tài liệu phổ biến, cung cấp khả năng mở rộng và hiệu suất cao cho các ứng dụng. Trong AWS Marketplace, bạn có thể tìm thấy các bản phân phối MongoDB có sẵn dưới dạng AMI (Amazon Machine Image) hoặc dịch vụ quản lý như MongoDB Atlas. Mình xài MongoDB như một công cụ để có thể search, thì các bạn cũng có thể thay thế bằng OpenSearch, DynamoDB tuỳ theo nhu cầu của các bạn.

Thì cơ bản những dịch vụ trên sẽ phối hợp với nhau để tạo thành một flow cơ bản để có thể search face bằng images. Các bạn cũng có thể kham thảo thêm về nguyên lý search face trong 1 collection tại: Searching faces in a collection

3. Fipix

Thì phần này mình sẽ không nói nhiều, mình sẽ để lại website ở đây: https://fipix.actiup.net/vi/unlock-your-future-with-genai . Mọi người có thể vào đây trải nghiệm dịch vụ bằng cách nếu mọi người có mặt trong sự kiện này thì có thể tự quét bằng mặt của mình, hoặc mọi ngừoi sử dụng mặt của Nghĩa (là mình) để có thể thấy được kết quả tìm kiếm bằng khuôn mặt. Nếu thấy phù hợp với doanh nghiệp thì có thể liên hệ cho Actiup nhé.

IV. Tổng kết

Thì lan man cũng nhiều nên chắc là mình sẽ dừng bút tại đây. Cảm ơn mọi người dành thời gian đọc và trải nghiệm dịch vụ mới nhất của Actiup. Chúc mọi người sức khoẻ ạ.

Bài Viết Liên Quan

[AWS] Chapter 0: AWS là gì?

[AWS] Chapter 0: AWS là gì?

  • Kai
  • June 24, 2024

Giới thiệu AWS (Amazon Web Services) là một nền tảng điện toán đám mây được phát triển và cung cấp bởi Amazon.

Đọc Thêm

[Docker] Chapter 1: Docker là gì?

  • Kai
  • January 24, 2021

Docker là một nền tảng mã nguồn mở dùng để phát triển, vận chuyển và chạy các ứng dụng. Docker cho phép bạn tách biệt ứng dụng của bạn khỏi cơ sở hạ tầng để bạn có thể triển khai phần mềm một cách nhanh chóng.

Đọc Thêm

[AWS] Chapter 13: AWS CloudFront

  • Kai
  • August 28, 2024

Xin chào các bạn, trong bài blogs này chúng ta sẽ tìm hiểu về AWS CloudFront, một dịch vụ CDN (Content Delivery Network) của AWS.

Đọc Thêm