Chương 1: GIỚI THIỆU Chương 2: CƠ SỞ LÝ THUYẾT (Chương 2 sẽ tìm hiểu cơ sở lý thuyết nhận dạng khuôn mặt, model phát hiện và trích xuất đặc trưng khuôn mặt Face Detection and Feature Extraction models, phần mềm hỗ trợ lập trình và phần mềm hỗ trợ thiết kế giao diện hệ thống.) Chương 3: THIẾT KẾ HỆ THỐNG (Chương 3: Sơ đồ khối, phân tích lựa chọn model phát hiện và nhận diện khuôn mặt, thiết kế ứng dụng và chức năng ứng dụng) Chương 4: KẾT QUẢ THỰC NGHIỆM 3 Chương 2: CƠ SỞ LÝ THUYẾT 2. Model phát hiện khuôn mặt (Face Detection Model) Mô hình phát hiện khuôn mặt là là mô hình học sâu thực hiện chức năng xác định và trích xuất các điểm (landmarks) trên khuôn mặt. Các mô hình học sâu phát hiện khuôn mặt đã được nhiều công ty và chính phủ đặc biệt quan tâm những năm gần đây, ứng dụng trong rất nhiều lĩnh vực như: giám sát, bảo mật, điều khiển tự động,. Vì thế, ở thời điểm hiện tại có rất nhiều mô hình phát hiện khuôn mặt, và mô hình BlazeFace [5] với các ưu điểm sẽ được trình bài ở các phần tiếp theo.
Để hiểu hơn về nguồn gốc của mô hình BlazeFace này, chúng ta sẽ tìm hiểu về thư viện MediaPipe [6] một thư viện máy học về thị giác máy tính đang rất phổ biến từ năm 2020. Tổng quan về MediaPipe MediaPipe [6] là một thư viện mã nguồn mở được nghiên cứu và phát triển bởi Google. Với mục tiêu là cung cấp các giải pháp máy học đa nền tảng (PC: Linux, Windows; Mobile: Android, iOS; Web) và đa ngôn ngữ (Python, C++, JavaScript…), hầu hết các model trong thư viện MediaPipe đều có chung đặc điểm là: tốc độ xử lý nhanh, nhẹ và không kém phần chính xác. Hiện nay MediaPipe cung cấp các mô hình học sâu cho các ứng dụng quan trọng trong thị giác máy tính như: phát hiện mống mắt, phân đoạn tóc, phát hiện tư thế,… Và đặc biệt, Model quan trọng được người nghiên cứu sử dụng đó là Model phát hiện khuôn mặt BlazeFace [5] trong thư viện MediaPipe [6].
Mô hình BlazeFace trong MediaPipe BlazeFace [5] là một bộ phát hiện khuôn mặt (Face Detector) cực kỳ nhẹ và chính xác. Để đạt được tốc độ và độ chính xác trên, mô hình BlazeFace [5] được thiết kế và cải tiến dựa trên kiến trúc mạng của mô hình SSD [7], một bộ phát hiện đối tượng (Object detector) tốc độ cao, kết hợp với mạng trích xuất đặc trưng vốn được thiết dành riêng cho các mô hình học sâu chạy trên thiết bị di động: MobileNet [8]. Để hiểu rõ hơn về các cải tiến mà BlazeFace mang lại, chúng ta sẽ tìm hiều sơ lược cách một mạng nơron học sâu có thể phát hiện ra đối tượng cần được phát hiện, cũng như kiến trúc và cách thức hoạt động của 2 mô hình học sâu: SSD [7] và MobileNet [8] ở mục 2. Phát hiện đối tượng (Object Detection) Phát hiện đối tượng là một thuật ngữ chung để mô tả một tập hợp các nhiệm vụ thị giác máy tính có liên quan liên quan đến việc xác định các đối tượng trong ảnh kỹ thuật số.
Phân loại hình ảnh liên quan đến việc dự đoán lớp của một đối tượng trong một hình ảnh. Định vị vật thể đề cập đến việc xác định vị trí của một hoặc nhiều đối tượng trong một hình ảnh và vẽ bounding box xung quanh chúng. Phát hiện đối tượng kết hợp hai nhiệm vụ trên và thực hiện cho một hoặc nhiều đối tượng trong hình ảnh. Chúng ta có thể phân biệt giữa ba nhiệm vụ thị giác máy tính cơ bản trên thông qua input và output của chúng như sau: Phân loại hình ảnh: Dự đoán nhãn của một đối tượng trong một hình ảnh.
o Input: Một hình ảnh với một đối tượng, chẳng hạn như một bức ảnh. o Output: Nhãn lớp (ví dụ: một hoặc nhiều số nguyên được ánh xạ tới nhãn lớp). Định vị đối tượng: Xác định vị trí hiện diện của các đối tượng trong ảnh và cho biết vị trí của chúng bằng bounding box. o Input: Một hình ảnh có một hoặc nhiều đối tượng, chẳng hạn như một bức ảnh.
o Output: Một hoặc nhiều bounding box được xác định bởi tọa độ tâm, chiều rộng và chiều cao. Phát hiện đối tượng: Xác định vị trí hiện diện của các đối tượng trong bounding box và nhãn của các đối tượng nằm trong một hình ảnh. o Input: Một hình ảnh có một hoặc nhiều đối tượng, chẳng hạn như một bức ảnh. o Output: Một hoặc nhiều bounding box và nhãn cho mỗi bounding box.
Ở các phần tiếp theo chúng ta sẽ tìm hiểu các thuật toán học sâu dùng trong bài toán phát hiện đối tượng nói chung và phát hiện khuôn mặt nói riêng, bao gồm các họ mô hình mạng R-CNN [9] (regions with CNN features), SSD [7] và BlazeFace [5]. RCNN – Mạng tích chập nơ ron phát hiện đối tượng R-CNN [9] được giới thiệu lần đầu vào 2014 bởi Ross Girshick và các cộng sự ở UC Berkeley một trong những trung tâm nghiên cứu AI hàng đầu thế giới trong bài báo “Rich feature hierarchies for accurate object detection and semantic segmentation.” Nó có thể là một trong những ứng dụng nền móng đầu tiên của mạng nơ ron tích chập đối với vấn đề phát hiện đối tượng. Cách tiếp cận này đã được chứng minh là hiệu quả trên các bộ dữ liệu điểm chuẩn, đạt được kết quả tốt nhất trên bộ dữ liệu VOC-2012 và bộ dữ liệu phát hiện đối tượng ILSVRC-2013 gồm 200 lớp. Kiến trúc của R-CNN [9] gồm 4 thành phần như hình 2.1 đó là: Ảnh đầu vào (Input Image) Vùng đề xuất hình ảnh (Region proposal): Có tác dụng tạo và trích xuất các vùng đề xuất chứa vật thể được bao bởi các bounding box.
Trích lọc đặc trưng (Feature Extractor): Trích xuất các đặc trưng giúp nhận diện hình ảnh từ các region proposal thông qua các mạng tích chập nơ ron sâu (deep convolutional neural network). Phân loại (Classifier): Dựa vào input là các features ở phần trước để phân loại hình ảnh chứa trong region proposal về đúng nhãn. Kiến trúc của mô hình được mô tả trong biểu đồ bên dưới: Hình 2.1: Tổng quan cách hoạt động của R-CNN 6 Một kỹ thuật được sử dụng để đề xuất các vùng đề xuất hình ảnh (region proposal) hoặc các bounding box chứa các đối tượng tiềm năng trong hình ảnh được gọi là “selective search”, các vùng đề xuất hình ảnh có thể được phát hiện bởi đa dạng những thuật toán khác nhau. Nhưng điểm chung là đều dựa trên tỷ lệ IoU giữa bounding box và ground truth box.
Trích xuất đặc trưng về bản chất là một mạng CNN học sâu, ở đây là AlexNet [10], mạng đã giành chiến thắng trong cuộc thi phân loại hình ảnh ILSVRC-2012. Đầu ra của CNN là một vectơ 4096 chiều mô tả nội dung của hình ảnh được đưa đến một mô hình SVM tuyến tính để phân loại. Đây là một ứng dụng tương đối đơn giản và dễ hiểu của CNN đối với vấn đề định vị vật thể và phát hiện vật thể. Một nhược điểm của phương pháp này là chậm, đòi hỏi phải vượt qua nhiều module độc lập trong đó có trích xuất đặc trưng từ một mạng CNN học sâu trên từng vùng đề xuất hình ảnh được tạo bởi thuật toán đề xuất vùng chứa ảnh.
Đây là một vấn đề chính cần giải quyết vì bài viết mô tả mô hình hoạt động trên khoảng 2000 vùng được đề xuất cho mỗi hình ảnh tại thời điểm thử nghiệm. Để giải quết những nhược điểm kể trên của mạng R-CNN [9], Fast R-CNN [11] và Faster R-CNN [12] lần lượt ra đời. Tuy nhiên, cả 3 kiến trúc mạng vẫn dựa trên thuật toán gồm 2 phần xử lý riêng biệt: phát hiện các vùng đề xuất và phân loại hình ảnh. Phát hiện các vùng đề xuất hình ảnh và trích xuất đặc trưng của từng vùng đề xuất hình ảnh bằng mạng CNN học sâu tiêu tốn nhiều tài nguyên và thời gian, vì thế các các mạng R-CNN rất hiếm được sử dụng trong thực tế vì đòi hỏi thiết bị phần cứng vô cùng mạnh mẽ để có thể chạy trong thời gian thực được.
SSD – Single Shot Multibox Detector Mô hình phát hiện khuôn mặt BlazeFace được thiết kế dựa trên cấu trúc mạng của cũng như cách thức hoạt động của SSD [7]. Vì thế ở phần này, chúng ta sẽ làm rõ cách thức hoạt động, kiến trúc và ưu điểm của nó so với mạng R-CNN [9] để hiểu được tại sao BlazeFace lại chọn nó làm nền tảng phát triển của mình. Cũng giống như hầu hết các kiến trúc phát hiện vật thể dựa trên mạng nơ rơn tích chập khác, đầu vào của SSD [7] là các tọa độ gồm tâm của bounding box (x, y) và chiều dài, chiều rộng (w, h) của bounding box chứa vật thể (hay còn gọi là offsets của bounding box) và nhãn của vật thể chứa trong bounding box. Điểm đặc biệt làm nên tốc độ của SSD [7] model là mô hình sử dụng một mạng nơ rơn duy nhất.
Cách tiếp cận của nó dựa trên việc nhận diện vật thể trong các feature map (là một output shape 3D của một mạng deep CNN sau khi bỏ các fully connected layers cuối) có độ phân giải khác nhau. Mô hình sẽ tạo ra một lưới các ô vuông gọi là grid 7 cells trên các feature map, mỗi ô được gọi là một cell và từ tâm của mỗi cell xác định một tập hợp các boxes mặc định (default boxes) để dự đoán khung hình có khả năng bao quanh vật thể. Tại thời điểm dự báo, mạng nơ ron sẽ trả về 2 giá trị đó là: phân phối xác suất nhãn của vật thể chứa trong bounding box và một tọa độ gọi là offsets. Quá trình huấn luyện cũng là quá trình tinh chỉnh xác suất nhãn và bounding box về đúng với các giá trị ground truth input của mô hình (gồm nhãn và offsets bounding box).
Thêm nữa, network được kết hợp bởi rất nhiều các feature map với những độ phân giải khác nhau giúp phát hiện được những vật thể đa dạng các kích thước và hình dạng. Trái với mô hình fast R-CNN [10], SSD [7] bỏ qua bước tạo mặt nạ region proposal network để đề xuất vùng vật thể. Thay vào đó tất cả quá trình phát hiện vật thể và phân loại vật thể được thực hiện trong cùng 1 mạng. Bản thân tên của mô hình - Single Shot MultiBox Detector cũng nói lên được rằng mô hình sử dụng nhiều khung hình box với tỷ lệ (scales) khác nhau nhằm nhận diện vùng vật thể và phân loại vật thể, giảm thiểu được bước tạo region proposal network so với fast R-CNN nên tăng tốc độ xử lý lên nhiều lần, cụ thể kết quả ở Bảng 2.