CHƯƠNG 1 GIỚI THIỆU: Tìm hiểu khái quát về đề tài, mục tiêu, đối tượng, phương pháp và phạm vi nghiên cứu. - CHƯƠNG 2 CƠ SỞ LÝ THUYẾT: Tìm hiểu về các lý thuyết chính được thực hiện trong đề tài nghiên cứu. - CHƯƠNG 3 THIẾT KẾ HỆ THỐNG: Tiến hành thiết kế sơ đồ khối của cả hệ thống, phân tích các khối. Đưa ra lưu đồ giải thuật và tiến hành thiết kế hệ thống: chương trình chính và ứng dụng di động.
- CHƯƠNG 4 KẾT QUẢ VÀ THẢO LUẬN: Trình bày kết quả đạt được của chương trình sau đó phân tích và đưa ra đánh giá. 2 - CHƯƠNG 5 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN: Trình bày kết quả mà hệ thống đạt được so với mục tiêu ban đầu đề ra và đưa ra hướng phát triển trong tương lai. 3 CHƯƠNG 2 CƠ SỞ LÝ THUYẾT Hệ thống giám sát trẻ em qua camera được thiết kế với mục đích có thể ứng dụng thị giác máy tính trong việc tiếp nhận vùng cấm từ người dùng sau đó sẽ kiểm tra xem đối tượng có đi vào vùng ấy không hoặc đối tượng có đang bị té ngã hay không thì sẽ gửi cảnh báo với người dùng thông qua ứng dụng di động.1 TÌM HIỂU VỀ MÔ HÌNH MOBILENET SSD MobileNet SSD (Single Shot MultiBox Detector) là một kiến trúc mạng nơ-ron tích chập CNN (Convolutional Neural Network) được thiết kế đặc biệt cho các tác vụ nhận diện và phát hiện đối tượng trong hình ảnh và video. Đây là sự kết hợp giữa hai công nghệ: MobileNet và SSD nhằm đạt được sự cân bằng giữa độ chính xác và hiệu suất thời gian thực.1 MobileNet: Kiến trúc của mô hình MobileNet được xây dựng dựa trên phép nhân chập tách rời theo chiều sâu (Depthwise Separable Convolution), một kỹ thuật phức tạp cho phép chuyển đổi phép nhân chập thông thường thành hai giai đoạn: nhân chập theo chiều sâu (Depthwise Convolution) và nhân chập theo từng điểm (Pointwise Convolution).
Trong giai đoạn nhân chập theo chiều sâu, phép nhân chập được áp dụng riêng biệt cho từng kênh của đầu vào, có nghĩa là mỗi kênh được xử lý độc lập giúp giảm số lượng phép tính cần thiết so với nhân chập thông thường. Tiếp theo, giai đoạn nhân chập theo từng điểm thực hiện phép nhân chập 1x1 để kết hợp các đầu ra từ giai đoạn trước, tổng hợp thông tin từ các kênh khác nhau, tạo ra đầu ra cuối cùng có tính chất tổng hợp hơn. Nhờ việc chia nhỏ quá trình nhân chập thành hai bước này, nhân chập tách rời theo chiều sâu không chỉ giúp giảm đáng kể số lượng tham số và phép tính mà còn tăng hiệu suất tính toán, làm cho mô hình nhẹ hơn và nhanh hơn khi triển khai trên các thiết bị có tài nguyên tính toán hạn chế.1 Phép nhân chập tách rời theo chiều sâu [4]. 5 Kiến trúc các tầng của mô hình MobileNets: Bảng 2.1 Mô tả các tầng của kiến trúc MobileNets [4].
Kiến trúc tổng thể của mô hình MobileNet bao gồm 14 tầng nhân chập (bao gồm cả nhân chập tách rời theo chiều sâu) được kết nối liền kề với nhau. Trong đó, các tầng cuối của mô hình phân loại bao gồm tầng Pooling trung bình (Avg Pool) và tầng Kết nối đầy đủ (Fully-Connected, FC) đã được loại bỏ. Bên cạnh đó, kỹ thuật bộ nhân chiều rộng (Width Multiplier) được sử dụng để tạo ra các mô hình mỏng hơn và nhẹ hơn bằng cách áp dụng một hệ số (α) để giảm số lượng kênh trong mỗi lớp, giúp giảm đáng kể số lượng tham số và phép tính cần thiết. Điều này làm cho mô hình phù hợp hơn với các 5 ứng dụng cụ thể hoặc các thiết bị có hạn chế về tài nguyên tính toán và bộ nhớ, đồng thời vẫn duy trì được hiệu suất của mô hình.2 Single ShotMultiBox Detector (SSD) Hình 2.2 Kiến trúc mạng mô hình SSD [4].
Mô hình mạng SSD được giới thiệu trong bài báo ICCV năm 2016 là một trong những thuật toán phát hiện đối tượng chính cho đến nay. SSD dựa trên một mạng CNN truyền xuôi (forward propagation) tạo ra một loạt các khung bao cố định và xác suất các đối tượng nằm trong mỗi khung bao gọi là điểm số. Sau đó, thuật toán thực hiện một bước non-maximum suppression để đưa ra các dự đoán cuối cùng. Mạng cơ sở là bốn tầng đầu tiên của VGG-16 trong khi mạng kim tự tháp là một mạng nhân chập đơn giản dần dần thu nhỏ các feature map.
Kiến trúc SSD tiến hành đánh giá các tập hợp nhỏ gồm các khung bao mặc định (các khung nét đứt trong Hình 2.3) tương ứng với các tỷ lệ cạnh khác nhau trên các feature map khác nhau.3 Kích thước phân chia các feature map khác nhau của SSD [4]. 6 Hai hàm mất mát bao gồm một hàm mất mát vị trí Smooth L1, hàm này sẽ đo lường sai số tham số giữa khung bao dự đoán được (p – predicted box) và khung bao sự thật (g – ground truth box) và hàm hàm mất mát tin cậy cross-entropy đo đạc các giá trị.3 Kết hợp kiến trúc MobileNets với SSD Trong SSD framework, vai trò của mạng gốc (backbone network) là chuyển đổi các pixel từ hình ảnh đầu vào thành các đặc trưng mô tả nội dung của hình ảnh và truyền chúng đến các lớp khác của SSD [5]. Do đó, nó được sử dụng ở đây như một bộ trích xuất đặc trưng cho một mạng nơ-ron thứ hai. Chúng tôi thể hiện trong hình 2.4 cách thiết lập này trông như thế nào cho một VGG16 SSD: 7 Hình 2.4 Sơ đồ kiến trúc kết hợp mô hình MobileNet-v1 với SSD [6].
Khi thay thế VGG16 bằng MobileNetv1 trong mô hình SSD, chúng ta kết nối tầng 12 và tầng 14 của MobileNet với SSD. Cụ thể, tầng nhân chập theo chiều sâu với bộ lọc 1x1x512x512 (tầng 12) được kết nối với SSD để tạo ra feature map có độ sâu 512. Đồng thời, tầng nhân chập điểm cuối cùng với feature map 1024 cũng được kết nối với SSD. Nếu thực hiện phân loại, chúng ta sẽ quan tâm đến các đặc trưng mô tả các khái niệm cấp cao mà lớp phân loại có thể sử dụng để đưa ra kết luận như “phát hiện người trong 8 khung ảnh”.
Trong trường hợp phát hiện đối tượng với SSD, chúng ta không chỉ muốn biết các đặc trưng cấp cao mà còn cả các đặc trưng cấp thấp hơn do đó chúng ta đọc từ các tầng trước đó. Hai tầng (12 và 14) được chọn vì chúng cung cấp các đặc trưng từ mức trung bình đến cao. MobileNet có hai siêu tham số điều chỉnh cho phép cân bằng giữa độ chính xác và tính toán: bộ nhân chiều rộng và bộ nhân độ phân giải. Bộ nhân chiều rộng điều chỉnh số lượng kênh đầu vào và đầu ra, trong khi bộ nhân độ phân giải điều chỉnh độ phân giải đầu vào và đầu ra.
Cả hai tham số này giúp giảm đáng kể chi phí tính toán. Chúng tôi sử dụng bộ nhân chiều rộng rộng rãi trong các thí nghiệm để xem ảnh hưởng của nó đến mAP phát hiện đối tượng, nhưng không sử dụng bộ nhân độ phân giải vì nó can thiệp vào các feature map có kích thước khác nhau, điều quan trọng cho SSD trong phát hiện đối tượng. Bộ mã gốc ban đầu có độ rộng MobileNet cố định là 1 và không có khả năng tham số hóa mô hình trong quá trình huấn luyện hoặc đánh giá. Nên đã thêm khả năng tham số hóa này vào mạng.
Theo các tác giả của MobileNet(v1), tham số độ rộng giúp giảm số lượng kênh đầu vào và đầu ra trong nhân chập theo chiều sâu. Thực hiện điều này bằng cách sử dụng tham số này như một trọng số (từ 0 đến 1) trên số lượng kênh và số lượng kênh trong mỗi tầng được nhân với cùng một trọng số. Với mỗi feature map khác nhau trong mô hình SSD, ta gán số lượng các khung bao mặc định là 4 hoặc 6 cho mỗi ô vuông trong feature map. Quá trình phát hiện sẽ sử dụng hai hàm mất mát để quy về hai kết quả: phân loại (Classification) và hồi quy (Regression): - Phân loại (Classification): 𝑑𝑒𝑓𝑎𝑢𝑙𝑡_𝑏𝑜𝑥 × 𝑛𝑢𝑚_𝑐𝑙𝑎𝑠𝑠𝑒𝑠 × 𝑓𝑒𝑎𝑡𝑢𝑟𝑒_𝑚𝑎𝑝.
Trong bài toán nhận diện, việc kết nối tầng 12 và tầng 14 của MobileNet là cần thiết. Tầng thứ 14 cung cấp nhiều đặc trưng hơn tầng thứ 12 và chúng ta cần cả đặc trưng mức cao và mức trung bình để chiết xuất hình ảnh. Những đặc trưng cao và trung bình này giúp mô hình thông minh hơn trong việc nhận dạng thông tin của bức ảnh.2 TÌM HIỂU VỀ THƯ VIỆN MÃ NGUỒN MỞ MEDIAPIPE: 2.1 Tổng quan về MediaPipe MediaPipe là một thư viện mã nguồn mở được phát triển bởi Google cung cấp các giải pháp máy học đa nền tảng và đang ở giai đoạn Alpha [7]. Thư viện này miễn phí và hỗ trợ trên nhiều nền tảng như Windows, Ubuntu, Mac và khẳng định có thể chạy ổn định trên hầu hết các cấu hình phần cứng thông dụng.
MediaPipe dễ dàng cài đặt và 9 triển khai trên nhiều nền tảng khác nhau như Mobile (Android/ iOS), Desktop/ Cloud, Web và thiết bị IoT. Toàn bộ mã nguồn của dự án MediaPipe được công khai trên trang chủ, cho phép người dùng tải về sử dụng và tùy chỉnh theo nhu cầu của mình. Hiện tại, MediaPipe có nhiều dự án cho các ứng dụng quan trọng trong thị giác máy tính như phát hiện khuôn mặt, phân đoạn màu sắc, phát hiện đối tượng, mống mắt, tư thế, bàn tay và nhiều hơn nữa. Trong thư viện MediaPipe một trong những mô hình đáng chú ý là BlazePose được phát triển để phân tích tư thế của người.
Đây là một công cụ quan trọng trong các ứng dụng liên quan đến phát hiện và theo dõi tư thế và đóng vai trò quan trọng trong đề tài này.2 Model BlazePose trong MediaPipe BlazePose bao gồm hai thành phần chính như sau: Pose Detector (máy phát hiện tư thế): Thành phần này có nhiệm vụ phát hiện ra vùng chứa đối tượng trên frame ảnh. Pose Detector sẽ xác định vị trí của cơ thể trong hình ảnh và định vị các vùng quan trọng như khuôn mặt để sử dụng cho việc phân tích tư thế và động tác. Pose Tracker (máy theo dõi tư thế): Thành phần này có nhiệm vụ trích xuất các điểm keypoints quan trọng trong vùng chứa đối tượng từ ảnh và dự đoán vị trí của đối tượng trong các frame ảnh tiếp theo. Pose Tracker giúp duy trì việc theo dõi và phân tích tư thế một cách liên tục và ổn định qua các khung hình.
Quy trình hoạt động của Pose Detector và Pose Tracker được trình bày chi tiết trong phần 2.4 của tài liệu. Pose Detector tập trung vào việc phát hiện và xác định vị trí cơ bản của đối tượng, trong khi Pose Tracker tập trung vào việc theo dõi và dự đoán vị trí của đối tượng qua các khung hình liên tiếp.