Tổng quan bài toán nhận diện người đeo khẩu trang
Giới thiệu chương 1
Mục tiêu của dự án là phát triển một hệ thống nhận diện người đeo khẩu trang, nhằm hỗ trợ cộng đồng trong bối cảnh dịch COVID-19 Qua việc áp dụng kiến thức từ các môn học, mô hình nhận diện đã được xây dựng, góp phần nâng cao khả năng nhận diện của máy tính Chương 1 sẽ trình bày tổng quan các phương pháp giải quyết bài toán và mô hình được lựa chọn sau khi xem xét kỹ lưỡng.
Bài toán đặt ra
Đề tài nghiên cứu phát hiện và nhận diện người không đeo khẩu trang, người đeo khẩu trang đúng và sai là rất cần thiết trong bối cảnh dịch bệnh hiện nay Ý thức cộng đồng về việc đeo khẩu trang nơi công cộng là yêu cầu tối thiểu để hạn chế lây lan dịch bệnh Trong giai đoạn bình thường mới, việc đeo khẩu trang càng trở nên cấp thiết hơn Tuy nhiên, một bộ phận cộng đồng vẫn thờ ơ với các quy định, cả có chủ ý lẫn vô ý Vì vậy, nghiên cứu này nhằm nhắc nhở và cảnh báo những người chưa có ý thức cao về phòng tránh dịch nơi công cộng.
Việc phát hiện khuôn mặt người đeo khẩu trang đang gặp nhiều thách thức, đặc biệt là do nguồn dữ liệu về người đeo khẩu trang hiện nay còn khan hiếm và không được chia sẻ rộng rãi.
Mục tiêu bài toán đặt ra:
- Xây dựng lượng cơ sở dữ liệu vừa đủ để tăng độ chính xác
- Xây dựng được mô hình trên thực tế có khả năng phát hiện được khuôn mặt người với độ chính xác 80%
- Xây dựng được mô hình phân loại được đối tượng đeo khẩu trang đúng, đeo khẩu trang sai và không đeo khẩu trang với độ chính xác khoảng 90%
- Hoàn thiện mô hình góp phần thúc đẩy kết quả bái toán phát hiện người không đeo khẩu trang
Đề xuất hướng nghiên cứu đề tài
Trong vòng 4 tháng, chúng tôi đã phát triển một mô hình có khả năng phát hiện và nhận diện người đeo khẩu trang, không đeo khẩu trang và đeo khẩu trang sai cách Mô hình này có tính ứng dụng thực tiễn cao, được xây dựng dựa trên các kiến thức đã học và nghiên cứu.
Mô hình nghiên cứu này tập trung vào ba đối tượng chính: người không đeo khẩu trang, người đeo khẩu trang đúng cách và người đeo khẩu trang không đúng cách.
Dữ liệu bao gồm từ 16.000 đến 20.000 mẫu, đại diện cho các nhóm người châu Á, châu Âu, châu Phi và Mỹ Latinh, với độ tuổi từ trẻ em đến người lớn Các mẫu này được thu thập từ hai tập dữ liệu MaskedFace-Net và Flickr-Faces-HQ, nhằm mục đích phi lợi nhuận.
1.3.1 Phương pháp nghiên cứu phát hiện đối tượng: có các mô hình ứng dụng sẵn như R-CNN, Fast-RCNN, Faster-RCNN, RetinaNet… ngoài ra có các mô hình với độ ứng dụng và tin cậy cao như SSD và YOLO Trong các mô hình trên đều là Deep Learning đều tích hợp nhận diện và phát hiện đối tượng nên chỉ ứng dụng mô hình Haar Cascade chuyên dùng cho phát hiện đối tượng và ứng dụng phân loại khuôn mặt Sau khi phát hiện và phân loại khuôn mặt ra được thì sử dụng HOG với SVM để nhận diện đối tượng.
Lý do lựa chọn mô hình Haar Cascade: Ưu điểm:
- Độ ứng dụng dễ dàng
- Lý thuyết và cấu trúc mô hình đơn giản
- Phù hợp với yêu cầu phát hiện khuôn mặt nên không dư thừa trong việc nhận diện khuôn mặt
- Độ chính xác không cao đặc biệt là trong đối tượng đeo khẩu trang
- Có thể phát hiện lỗi các vị trí không phải là khuôn mặt
- Tùy vào từng bức ảnh ta có thể điều chỉnh tham số để cho kết quả tốt nhất nhưng việc này không thể tự động
1.3.2 Phương pháp nghiên cứu phân loại đối tượng: có thể theo hai hướng là Deep
Theo hướng Deep Learning có thể sử dụng các mô hình như ANN, CNN, MobileNetV2…
Trong Machine Learning truyền thống, việc trích xuất đặc trưng có thể dựa vào các yếu tố như hình dáng, biên độ, hướng, màu sắc và độ tương phản Các phương pháp phân loại như K-Means, KNN và SVM thường được sử dụng để thực hiện nhiệm vụ này.
After researching and evaluating traditional decision-making models in Machine Learning, we focus on the combination of feature extraction using HOG (Histogram Of Oriented Gradients) and classification through SVM (Support Vector Machine).
Lý do lựa chọn mô hình: Ưu điểm:
- Lượng dữ liệu cần cho Machine Learning ít hơn so với Deep Learning
- Mô hình đơn giản dễ tìm hiểu và thực hiện
- Trích đặc trưng HOG dựa vào hình dáng biên độ và hướng nên phù hợp để phân loại cho 3 đối tượng trên
- SVM là thuật toán hoạt động chính xác với lượng dữ liệu ít, số đối tượng phân loại là hai và nhiều cách để tối ưu hóa mô hình
- Mô hình cần lựa chọn thử và tối ưu hóa nhiều lần để đạt kết quả tốt nhất
- Tập dữ liệu cần có sự tuyến tính để mô hình hoạt động tốt
Việc phân chia đối tượng có thể dẫn đến những hiểu lầm trong việc xác định tình trạng đeo khẩu trang Chẳng hạn, một người đang lấy tay che miệng có thể bị nhầm là không đeo khẩu trang, trong khi người đeo khẩu trang nhưng hở miệng cũng có thể gây ra sự nhầm lẫn tương tự Điều này cho thấy sự cần thiết trong việc xác định rõ ràng các đối tượng để tránh sai sót trong việc đánh giá tình hình đeo khẩu trang.
Tổng quan mô hình đề xuất
Nghiên cứu và ứng dụng mô hình nhận diện người đeo và không đeo khẩu trang đã trở nên quan trọng trong thời kỳ dịch bệnh, đạt được nhiều thành tựu đáng kể Đề tài này không chỉ mở rộng lĩnh vực Computer Vision từ nhận dạng khuôn mặt mà còn tích hợp khả năng phân biệt người đeo khẩu trang, phản ánh sự cấp thiết và tiềm năng ứng dụng cao của mô hình trong bối cảnh hiện tại.
Mô hình nhận diện khuôn mặt được phát triển dựa trên machine learning truyền thống, nhằm phân loại đối tượng trong ảnh là khuôn mặt con người Ứng dụng này có khả năng phát hiện và nhận diện các trạng thái đeo khẩu trang, bao gồm không đeo khẩu trang, đeo khẩu trang đúng cách và đeo khẩu trang sai cách Mô hình sử dụng tập dữ liệu tự tìm kiếm và bổ sung để nâng cao độ chính xác trong quá trình nhận diện.
Tổng quan quy trình thực hiện được trình bày ở Hình 1.1
Hình 1.1 Sơ đồ quy trình thực hiện
Dữ liệu đầu vào bao gồm các bức ảnh, trong đó mô hình Haar Cascade phát hiện khuôn mặt con người Các đối tượng đã được phát hiện sẽ được trích xuất đặc trưng bằng HOG và chuyển đổi thành các vector để đưa vào mô hình nhận diện Mô hình này sử dụng SVM để phân loại các khuôn mặt.
SVM được áp dụng hai lần tính toán vì nó hoạt động hiệu quả nhất với hai lớp dữ liệu, do đó chấp nhận hy sinh thời gian để nâng cao độ chính xác trong nhận diện.
Kết luận chương 1
Sau khi nghiên cứu bài toán phát hiện người không đeo khẩu trang, chúng tôi đã đạt được mục tiêu tìm ra mô hình phù hợp và ứng dụng thực tiễn Mô hình đề xuất không yêu cầu nhiều dữ liệu và có quy trình xây dựng đơn giản, do đó được chọn làm mô hình cuối cùng Mô hình này sử dụng phương pháp phát hiện đối tượng qua Haar Cascade và phân loại đối tượng bằng sự kết hợp giữa HOG và SVM.
Tổng quan lý thuyết
Giới thiệu chương 2
Mô hình sử dụng machine learning kết hợp phát hiện khuôn mặt bằng Haar Cascade, trích đặc trưng HOG và phân loại SVM Chương 2 sẽ trình bày lý thuyết quan trọng như mô hình Haar Cascade, trích đặc trưng HOG và thuật toán SVM Những khái niệm cơ bản này sẽ là nền tảng cho ứng dụng và kết quả trong chương 3.
Mô hình phát hiện đối tượng Haar Cascade
Haar Cascade là thuật toán phát hiện đối tượng, bao gồm khuôn mặt, mắt, tay và đồ vật, được Paul Viola và Michael Jones đề xuất vào năm 2001 Thuật toán này sử dụng phương pháp tăng cường các tính năng đơn giản thông qua cấu trúc tầng (Cascade) để đạt được tốc độ phát hiện nhanh chóng.
Haar Cascade là một mô hình hiệu quả cho việc nhận diện khuôn mặt và các đối tượng khác, dựa trên các tập đặc trưng có sẵn Mô hình này sử dụng các đặc trưng Haar và áp dụng chúng qua nhiều tầng (Cascade), tạo ra một hệ thống phát hiện đối tượng hoàn chỉnh.
Haar Cascade ban đầu được phát triển để phát hiện khuôn mặt chính diện cùng với các bộ phận trên khuôn mặt như mắt, mũi và miệng Sau đó, công nghệ này đã được mở rộng để nhận diện các bộ phận cơ thể khác như thân trên, nụ cười, tay, chân, và nhiều đối tượng khác, tạo ra nhiều ứng dụng hữu ích trong lĩnh vực nhận diện hình ảnh.
Với đầu vào là một bức ảnh mô hình được minh họa như Hình 2.1 và được cụ thể hóa qua các bước như sau:
Bước 1: Chuyển ảnh về dạng ảnh xám Sau đó chia nhỏ khung hình thành các cửa sổ nhỏ hơn (subwindows) và được gửi tới bộ phận phân loại
Bước 2: Bộ phận phân loại sẽ tải từng cửa sổ qua các tầng theo phương pháp cascade, với mỗi tầng sử dụng các đặc trưng Haar kết hợp cùng 2 hoặc 3 đặc trưng cơ bản từ các tập hợp như đặc trưng cạnh, đặc trưng đường và đặc trưng xung quanh tâm.
Bước 3: Áp dụng quy tắc của bộ phân loại AdaBoost để tiến hành phân loại Mỗi tầng sẽ tạo ra giá trị tin cậy; nếu giá trị này khớp với dữ liệu, cửa sổ sẽ được chuyển sang tầng tiếp theo Ngược lại, nếu không khớp, cửa sổ sẽ bị từ chối và quá trình sẽ chuyển sang cửa sổ tiếp theo Khi một cửa sổ vượt qua tất cả các tầng, nó sẽ được xác nhận là đối tượng đã được phát hiện.
Hình 2.1 Sơ đồ tổng quan mô hình Haar Cascade
2.2.2 Lý thuyết từng đặc trưng Haar Đặc trưng Haar là các hình chữ nhật trắng đen khác nhau và dựa vào các đặc tính của từng đặc trưng ta chia ra đươc 3 tập đặc trưng cơ bản được minh họa trong Hình 2.2.
Ngoài ra còn một tập đặc trưng đặc biệt là Four-rectangle Features (or Special diagonal line features) như minh họa trên Hình 2.3.
Sử dụng các đặc trưng trên, chúng ta có thể tính toán giá trị của đặc trưng Haar cho ảnh đã được chuyển sang ảnh xám Giá trị này được xác định bằng sự chênh lệch giữa tổng các pixel của vùng đen và vùng trắng, theo công thức 2.1: f(x) = ∑ vùng đen - ∑ vùng trắng.
(Tính tổng dựa trên giá trị pixel ở dạng ảnh xám)
Hình 2.2 Phân loại các đặc trưng Haar
Hình 2.3 Đặc trưng đặc biệt trong Haar
Integral Image là một ma trận 2 chiều có kích thước tương đương với bức ảnh đầu vào Nó được tạo ra bằng cách tính tổng các giá trị của điểm ảnh ở phía trên (dòng-1) và bên trái (cột-1) của mỗi điểm ảnh.
Integral Image được thiết kế để đơn giản hóa việc tính tổng các giá trị vùng xám trong một khu vực bất kỳ Công thức để tính từng điểm trong Integral Image được trình bày trong công thức 2.2.
Dựa trên Integral Image ta suy ra được vùng kích thước cần tìm là D như trong công thức 2.3 và Hình 2.5.
Hình 2.4 Minh họa cho Inrtegral Image 2.3.4 Bộ phân loại AdaBoost
AdaBoost là một bộ phân loại mạnh mẽ không tuyến tính, dựa trên phương pháp boosting được giới thiệu bởi Freund và Schapire vào năm 1995 Nó kết hợp nhiều bộ phân loại yếu để tạo ra một bộ phân loại mạnh, nâng cao độ chính xác trong việc phân loại dữ liệu.
Viola ᴠà Joneѕ dùng AdaBooѕt kết hợp ᴄáᴄ bộ phân loại уếu ѕử dụng ᴄáᴄ đặᴄ trưng Haar-like theo mô hình phân tầng (ᴄaѕᴄade) như Hình 2.5.
Trong đó, h(k) là các bộ phân loại yếu, được biểu diễn như sau: h(k) = {1, nếu p(k) ≥ θ(k); f(x) nếu x < p(k)θ(k)}, trong đó x là cửa sổ con cần xét, θ(k) là ngưỡng, f(x) là giá trị đặc trưng Haar-like, và p(k) là hệ số quyết định chiều của phương trình.
Hình 2.5 Tổng quan mô hình các tầng (Cascade)
AdaBooѕt kết hợp ᴄáᴄ bộ phân loại уếu thành bộ phân loại mạnh như công thức 2.5:
Trong đó: α là hệ số chuẩn hóa cho các bộ phân loại yếu
Hình 2.6 Mô phỏng cho cách hoạt động của AdaBoost
Phương pháp trích đặc trưng HOG
In 1986, the concept of Histogram of Oriented Gradients (HOG) was introduced by Robert K McConnell and patented; however, the term "HOG" was not utilized in laboratories until 1994 By 2005, Navneet Dalal further advanced the application of HOG in computer vision.
Dalal và Bill Triggs là 2 nhà nghiên cứu của French National Institute for Research in
The Computer Science and Automation research team at INRIA has introduced an enhanced version of the HOG algorithm at the Conference on Computer Vision and Pattern Recognition (CVPR), leading to its increased popularity and wider application in computer vision.
- Nhận diện người (human detection)
- Nhận diện khuôn mặt (face detection)
Nhận diện các vật thể trong xử lý ảnh là một ứng dụng quan trọng, sử dụng thuật toán để trích xuất đặc trưng của bức ảnh dựa trên hình dáng và đường biên Các thuật toán này giúp cải thiện khả năng phân loại và nhận diện đối tượng, mang lại hiệu quả cao trong nhiều lĩnh vực như an ninh, y tế và công nghiệp.
2.3.1 Quy trình thực hiện HOG
HOG (Histogram of Oriented Gradients) là một thuật toán quan trọng trong xử lý hình ảnh và thị giác máy tính, tập trung vào việc phân tích các đặc trưng hình dáng và đường biên của đối tượng Thuật toán này sử dụng thông tin về biên độ và hướng để nâng cao khả năng mô tả các đặc trưng của đối tượng, từ đó cải thiện độ chính xác trong nhận diện và phân loại hình ảnh.
Các bước tổng quan để thực hiện HOG trong ứng dụng xử lí ảnh:
- Chỉnh sửa bức ảnh về kích thước yêu cầu
- Tính hướng và biên độ của từng điểm ảnh
- Tạo histogram của gradient theo từng ô (cell) với kích thước 8x8 pixels
- Chuẩn hóa bức ảnh theo từng khối (block) với kích thước 2x2 cells
Để trích xuất đặc trưng HOG từ bức ảnh, cần chú ý đến hai yếu tố chính: giá trị độ lớn của gradient và phương hướng của gradient Dựa vào hai giá trị này, chúng ta tiến hành tính toán cho từng ô trong lưới 8x8 pixels Sau đó, một biểu đồ histogram sẽ được tạo ra để thể hiện độ lớn của gradient trong mỗi ô Cuối cùng, bộ mô tả đặc trưng HOG được hình thành từ 4 ô thông qua phương pháp chuẩn hóa theo norm chuẩn bậc 1 hoặc bậc 2.
Trong giải tích vector, gradient của một trường vô hướng là một trường vector chỉ hướng về phía mức độ tăng cao nhất của trường vô hướng, đồng thời có độ lớn thể hiện mức độ thay đổi lớn nhất.
Theo định nghĩa, gradient của hàm số f (x,y) là một đạo hàm theo 2 chiều của x và y: f(x,y) → ( ∂ f ∂ x , ∂ f ∂ y ) (2.6)
Tính toán magnitude và direction:
Để đạo hàm một bức ảnh, chúng ta thường sử dụng phương pháp đạo hàm qua mặt nạ, với công thức G = (fx² + fy²)^(1/2) và Ɵ = arctg(fy/fx) Phương pháp này có thể được thực hiện bằng cách lọc ma trận ảnh qua bộ lọc x, y đơn giản hoặc sử dụng bộ lọc Sobel mask, Scharr.
Trong phần trình bày lý thuyết thì bộ lọc x,y đơn giản được lấy làm ví dụ.
Sau khi áp dụng hai mặt nạ theo chiều ngang và dọc lên bức ảnh, chúng ta thu được hai ma trận chứa giá trị fx và fy Từ hai ma trận này, ta sẽ tính toán biên độ và hướng của gradient dựa trên fx và fy Cuối cùng, chúng ta sẽ có hai ma trận có kích thước tương đương với bức ảnh, chứa giá trị của gradient và hướng của gradient.
Khi tạo Histogram chúng ta thường thực hiện trên một đơn vị cell 8x8 pixels minh họa trên 2.8.
Hình 2.7 Mô phỏng cách chia cell và block
Tạo ra Histogram ta có 4 phương thức tạo như sau:
Phương pháp 1 là duyệt qua từng pixel trong ô và đọc giá trị hướng của chúng Sau đó, các giá trị hướng của từng pixel được gộp lại thành một vector gồm 180 giá trị, tương ứng với 180 độ, dựa trên tần số xuất hiện của các giá trị hướng này.
Phương pháp 2 giải quyết vấn đề từ phương pháp 1, nơi vector 180 giá trị tạo ra ma trận đầu ra có kích thước (col/8)x(rol/8)x180, với col và rol là chiều dài và chiều rộng của bức ảnh Để giảm thiểu khối lượng tính toán lớn, chúng ta chia 180 độ thành 9 khoảng (bin) 20 độ Tương tự như phương pháp 1, giá trị hướng được phân chia theo tần suất xuất hiện vào từng bin.
Phương pháp 3 khắc phục hạn chế của phương pháp 1 và 2, khi chỉ sử dụng một giá trị hướng Thay vào đó, phương pháp này áp dụng hai giá trị về hướng và biên độ, bằng cách điều chỉnh tần số xuất hiện dựa trên tổng các biên độ trong mỗi bin.
Phương pháp 4 khắc phục hạn chế của phương pháp 3 bằng cách điều chỉnh biên độ không chỉ cộng về một bên Ví dụ, với giá trị 36 độ, mặc dù được phân loại từ 20 đến 40 tương ứng với bin 20, nhưng thực tế giá trị này lại gần bin 40 hơn Giải pháp là chia biên độ theo tỷ lệ tương ứng để phản ánh chính xác hơn giá trị thực tế.
Phương pháp 4 có nhiều ưu điểm vượt trội trong tính toán và ứng dụng, bao gồm việc hạn chế sai lệch giá trị và giảm số chiều dữ liệu xuống còn (col/8)x(rol/8)x9, với col và rol là kích thước chiều của bức ảnh Khi áp dụng phương pháp này cho bức ảnh, chúng ta sẽ nhận được histogram tương ứng.
Khi chuẩn hóa, chúng ta sử dụng đơn vị là block, tương ứng với 4 ô trong ma trận 2x2 như minh họa ở Hình 2.7 Phương pháp HOG thường áp dụng chuẩn hóa theo norm bậc 2 hoặc bậc 1, tuy nhiên, để đơn giản hóa quá trình, chúng ta sẽ dựa vào giá trị trung bình để thực hiện tính toán.
Sau khi kết hợp 4 cells thành một block có vector như sau:
Ta tiếp tục tính giá trị trung bình:
Bước cuối chuẩn hóa vector theo giá trị trung bình:
Khi xử lý ảnh, chúng ta thường chuyển đổi các vector về một chiều, dẫn đến số giá trị có được là ((col/8)-1) x ((rol/8)-1) x 4 x 9, trong đó col và rol là kích thước của bức ảnh Đối với các bức ảnh có kích thước lớn, giá trị vector sẽ rất cao, do đó cần phải resize ảnh để giảm bớt khối lượng tính toán, mặc dù điều này có thể làm giảm độ chính xác Việc resize thường được thực hiện sao cho kích thước mới là bội số của 8 để tránh tình trạng dư thừa khi chia cell.
Ví dụ với bức ảnh resize về 64x128:
- Tính histogram: matrix=8x16x9 (với 9 là chiều mới của các bin được thêm vào)
- Chuẩn hóa matrix: matrix=7x15x36 (với 36 là 4 cells được gộp thành một block)
Phương pháp nhận diện SVM
SVM, viết tắt của Support Vector Machine, là một thuật toán phân loại nhị phân mạnh mẽ và phổ biến, được phát minh bởi Vladimir N Vapnik và Alexey Ya Chervonenkis vào năm 1963 Phiên bản Soft SVM, cùng với các lý thuyết liên quan, được đề xuất bởi Corinna Cortes và Vapnik vào năm 1993 và công bố vào năm 1995 Thuật toán SVM thường được áp dụng trong các lĩnh vực Machine Learning và Computer Vision, hoạt động dựa trên một siêu mặt phẳng nhằm phân chia hai tập dữ liệu thành hai lớp khác nhau trong không gian n chiều, với mục tiêu tìm ra siêu mặt phẳng tối ưu nhất cho việc phân loại.
Hình 2.8 Minh họa SVM trong không gian 2 chiều
Trong Hình 2.8, có n đường thẳng có khả năng phân chia hai lớp dữ liệu Để xác định đường thẳng tối ưu, khái niệm Margin được sử dụng để đo lường độ hiệu quả của đường thẳng, dựa trên khoảng cách từ tất cả các điểm dữ liệu đến đường thẳng đó.
Ngoài các thuật toán cơ bản như Hard SVM và Soft SVM để tìm siêu mặt phẳng phân chia hai lớp dữ liệu, còn có Kernel SVM được sử dụng trong trường hợp không tồn tại siêu mặt phẳng nào có thể phân chia các lớp dữ liệu Kernel SVM cũng nhằm tối ưu hóa mô hình.
SVM là một phương pháp mạnh mẽ thường được áp dụng hiệu quả trong các bài toán phân loại hai lớp, chẳng hạn như xác định tình trạng test covid dương tính hay không, phân loại trái cây đạt tiêu chuẩn, và phân loại người có đeo khẩu trang hay không.
Ngoài dùng vào mục đích phân loại SVM còn thường được sử dụng trong các bài toán hồi quy và phát hiện lỗi.
Trước khi tìm hiểu về thuật toán, chúng ta cần phân biệt giữa dữ liệu tuyến tính và phi tuyến tính Như hình 2.8 minh họa, có nhiều đường thẳng có thể tách biệt các điểm màu xanh và đỏ, cho thấy rằng trong không gian n chiều, có thể tồn tại siêu mặt phẳng phân chia các điểm này Khi dữ liệu có thể được chia bằng một siêu mặt phẳng trong không gian n chiều, ta gọi đó là dữ liệu tuyến tính.
Hình 2.9 Minh họa cho dữ liệu phi tuyến tính
Dựa vào Hình 2.9, một đường tròn bên trái hoặc đường cong bên phải có khả năng phân chia hai lớp điểm màu xanh và đỏ Khi mở rộng lên không gian ba chiều, chúng ta có thể sử dụng hình cầu hoặc mặt phẳng cong để phân tách hai tập điểm này Nói một cách đơn giản, dữ liệu phi tuyến tính là loại dữ liệu không thể bị chia tách thành hai lớp riêng biệt bởi một siêu mặt phẳng trong không gian n chiều.
Việc xác định dữ liệu tuyến tính hay phi tuyến tính là rất quan trọng trong SVM, vì nó ảnh hưởng đến phương pháp tối ưu mô hình Đối với dữ liệu tuyến tính, Hard SVM là lựa chọn chính, nhưng Soft SVM cũng có thể mang lại kết quả tốt trong một số trường hợp Ngược lại, với dữ liệu phi tuyến tính, người dùng có thể áp dụng Soft SVM hoặc kỹ thuật Kernel trick để giải quyết bài toán Điều này giải thích tại sao SVM là một thuật toán mạnh mẽ, nhưng việc tối ưu mô hình thường cần thực hiện nhiều lần thông qua các thử nghiệm thực tế.
Hình 2.10 Minh họa các khái niệm chung
Dữ liệu tuyến tính được trình bày trong không gian 2 chiều, từ đó có thể mở rộng khái niệm để hiểu về dữ liệu không tuyến tính và không gian n chiều.
Hyperplane là đường thẳng có thể phân chia dữ liệu tuyến tính thành hai mặt riêng biệt Trong không gian 2 chiều, Hyperplane được xác định bằng phương trình w1*x1 + w2*x2 + b = 0 Đây là kết quả cần tìm trong thuật toán SVM, đóng vai trò quan trọng trong việc phân loại dữ liệu.
Support Vectors là hai đường thẳng đi qua các điểm dữ liệu, đóng vai trò quan trọng trong việc xác định Margin và phân chia hai vùng Positive Hyperplane và Negative Hyperplane Trong không gian hai chiều, các Support Vectors được xác định bằng công thức w1 * x1.
+ w 2 *x 2 + b =1 và w 1 *x 1 + w 2 *x 2 + b= -1 để đơn giản cho việc tính toán).
Positive Hyperplane và Negative Hyperplane là hai khu vực nằm giữa Hyperplane và các Support Vectors, với tên gọi tương ứng dựa vào vị trí của chúng so với đường thẳng, tức là vùng dương hoặc âm.
Margin là yếu tố quan trọng để xác định độ công bằng cho tất cả các điểm dữ liệu trong thuật toán SVM Nó được định nghĩa là khoảng cách từ các Support Vectors đến Hyperplane, với yêu cầu rằng Margin phải bằng nhau giữa hai Support Vectors Trong SVM, chúng ta sử dụng Margin để xác định đường thẳng phân chia tốt nhất, và đường thẳng này là đường thẳng tạo ra Margin lớn nhất.
Khoảng cách từ một điểm có tọa độ \( x_0 \) đến siêu mặt phẳng có phương trình \( w^T x + b = 0 \) được xác định bằng công thức: \( \frac{|w^T x_0 + b|}{\|w\|_2} \), trong đó \( \|w\|_2 = \sqrt{\sum_{i=0}^d (w_i^2)} \) với \( d \) là số chiều của không gian.
2.4.2 Hard Support Vector Machine Đặc tính của Hard SVM là trong hai vùng Positive Hyperplane và Negative Hyperplane sẽ không có bất kì điểm dữ liệu nào nằm ở trong Ở Hình 2.10 là minh họa của trường hợp Hard SVM, có hai đường thẳng đi qua các điểm dữ liệu được dùng để phân định thành hai support vector đó cũng là lí do thuật toán được gọi support vector machine Phân chia như thế nào để tối ưu độ hạnh phúc cho cả hai lớp dữ liệu? Đó chính là vấn đề cần giải quyết của bài toán Muốn chia sự hạnh phúc cho cả hai lớp dữ liệu ta dùng tới khái niệm margin đã nêu ở trên Margin ở trong Positive Hyperplane và Negative Hyperplane phải bằng nhau thì độ công bằng giữa hai lớp dữ liệu sẽ bằng nhau Nhưng đã bằng nhau vẫn chưa tốt chúng vẫn cần giá trị lớn nhất để được hạnh phúc nên margin càng lớn thì sự tách biệt giữa hai lớp dữ liệu càng tốt dẫn đến sự phân loại càng tốt
Trong Hard SVM, mục tiêu là tối ưu hóa bài toán bằng cách tìm kiếm margin lớn nhất giữa hai lớp dữ liệu Để xác định margin, ta cần tính khoảng cách nhỏ nhất từ các điểm dữ liệu đến Hyperplane, giả sử Hyperplane đã tồn tại Từ công thức 2.12, ta có thể tổng quát hóa quy trình này.
Hình 2.11 Minh họa cho việc tối ưu độ hạnh phúc
Mô hình phát hiện khuôn mặt Haar Cascade
Mô hình nhận diện đối tượng từ một bức ảnh sẽ thay đổi xác suất nhận dạng dựa vào việc con người có đeo khẩu trang hay không Ứng dụng này sử dụng mô hình có sẵn từ thư viện OpenCV trong Python.
Hình 3.1 Đối tượng được phát hiện
Mô hình nhận diện đối tượng gặp nhược điểm lớn trong việc nhận diện sai, như minh họa trong Hình 3.2 Mặc dù có thể cải thiện kết quả bằng cách điều chỉnh các tham số, như thể hiện trong Hình 3.3, nhưng việc trích xuất hoàn toàn các đối tượng vẫn chưa đạt được Quá trình lựa chọn tham số hoàn toàn thủ công và tốn nhiều thời gian, với khả năng chỉ hiệu quả trên một bức ảnh cụ thể Tham số a có thể phù hợp cho bức ảnh này nhưng không đảm bảo hiệu quả cho bức ảnh khác Kết quả thu được phản ánh đúng lý thuyết đã nghiên cứu.
Kết quả tốt nhất được ghi nhận khi minNeighbors được đặt ở mức 5 hoặc 6 Nếu gặp tình trạng thiếu các khuôn mặt được phát hiện, nên giảm giá trị scaleFactor; ngược lại, nếu xuất hiện lỗi trong quá trình phát hiện, hãy tăng giá trị scaleFactor.
Hình 3.2 Áp dụng scaleFactor=1.05 minNeighbors=5
Tiền xử lí dữ liệu
Tập dữ liệu có sẵn từ các nguồn như [FFHQ](https://github.com/NVlabs/ffhq-dataset) cung cấp hình ảnh của người không đeo khẩu trang, trong khi [Masked Face-Net](https://github.com/cabani/Masked Face-Net) cung cấp hai tập dữ liệu cho người đeo khẩu trang đúng cách và sai cách.
Hình 3.3 Áp dụng scaleFactor=1.19 minNeighbors=6
Hình 3.4 Dữ liệu của từng lớp
Để tối ưu hóa mô hình dữ liệu, nguồn dữ liệu cần được xử lý để loại bỏ các đặc trưng dư thừa Hệ thống phát hiện khuôn mặt Haar Cascade sẽ được sử dụng để thu nhỏ đối tượng, với tham số scaleFactor mặc định là 1.05.
- Lớp đeo khẩu trang đúng: 4255/5000 mẫu
- Lớp đeo khẩu trang sai: 4075/5000 mẫu
- Lớp không đeo khẩu trang: 8210/9000 mẫu
Từ các kết quả trên tính toán được khả năng phát hiện được khuôn mặt dựa trên tập dữ liệu sử dụng là 87%.
Để phục vụ cho yêu cầu trích xuất đặc trưng HOG, dữ liệu sau khi qua mô hình Haar Cascade sẽ được chuyển đổi sang ảnh xám và tô đen background Quá trình chuyển đổi này được thực hiện bằng OpenCV trong Python, và nền được tách sử dụng mô hình DeepLabV3+, như minh họa ở Hình 3.5 Mặc dù dữ liệu sau khi tách nền vẫn còn nhiều đặc trưng thừa có thể gây nhiễu cho mô hình, nhưng để đảm bảo quá trình nhận dạng hoàn toàn tự động, kết quả vẫn được giữ nguyên mặc dù có một số lỗi với nhiều mẫu.
Dữ liệu chia ra 20% để test và 80% để train theo phương pháp đánh giá Hold-out với
4075 mẫu cho lớp đeo khẩu trang sai, 4255 mẫu cho lớp đeo khẩu trang đúng và 8210 mẫu cho lớp không đeo khẩu trang.
Hình 3.5 Dữ liệu sau khi tiền xử lí
Trích xuất đặc trưng HOG
Trong quá trình thử nghiệm, chúng tôi đã thay đổi các mặt nạ và kích thước resize để tìm ra kết quả tối ưu Hai loại mặt nạ được áp dụng là mặt nạ Xy đơn giản (a=[-1 0 1] và chuyển vị của a) và mặt nạ Sobel (b=[[-1 -2 -1] [0 0 0] [1 2 1]] và chuyển vị của b) Kích thước resize được thiết lập là 16x32 và 32x64, tạo ra tổng cộng 4 trường hợp khác nhau Mỗi cell có kích thước 8x8 pixels, với 9 bins cho Histogram, và block có kích thước 2x2 cells được chuẩn hóa theo tổng giá trị trung bình Kết quả đầu ra cho từng trường hợp resize là vector đặc trưng 108x1 với kích thước 16x32 và vector 756x1 với kích thước 32x64 Các giá trị mẫu trong từng trường hợp được lưu trữ thành file csv và được chia thành hai tập test và train để phục vụ cho việc đánh giá mô hình sau này.
Hình 3.6 Minh họa phân cấp lưu trữ dữ liệu
Hình 3.7 Dữ liệu được lưu dưới dạng csv
Mô hình phân loại sử dụng Soft SVM
Áp dụng Soft SVM được thực hiện theo hướng dẫn trong chương 2 mục 2.4.3, với các giá trị C từ 0.001 đến 100 và bước nhảy nhân với 10 cho từng trường HOG, tạo ra tổng cộng 24 trường hợp Sử dụng mô hình Scikit-learn của Python, quá trình train cho từng trường hợp sẽ giúp tìm ra hai trọng số là weight và bias, có vai trò xác định Hyperplane Kết quả sau khi train sẽ được lưu vào file CSV để thuận tiện cho các bước tiếp theo.
3.5.1 Phân loại nhị phân cho bài toán đa lớp
Thuật toán SVM chỉ có khả năng phân loại hai lớp, trong khi bài toán hiện tại yêu cầu phân loại ba lớp Để giải quyết vấn đề này, có nhiều phương pháp như one vs one, one vs all (hay còn gọi là one vs rest) và phân loại phân tầng (hierarchical).
Hình 3.8 Phương pháp phân loại đa lớp sử dụng hierarchical
Sau khi tham khảo phương pháp phân loại theo cấu trúc phân cấp, chúng tôi nhận thấy rằng hai lớp dữ liệu người đeo khẩu trang đúng và sai có nhiều điểm tương đồng, cho phép gộp lại thành một lớp duy nhất Điều này giúp cải thiện phân loại so với người không đeo khẩu trang Nếu một bộ phân loại nhị phân đầu tiên sai, thì tất cả các bộ phân loại nhị phân tiếp theo cũng sẽ dẫn đến sai sót Ví dụ, nếu một mẫu thử không đeo khẩu trang nhưng được phân loại nhầm vào lớp người đeo khẩu trang, thì bộ phân loại nhị phân thứ hai giữa hai lớp người đeo khẩu trang đúng và sai chắc chắn sẽ nhận diện sai.
3.5.2 Phân loại đa lớp sử dụng Soft SVM
Trong bài toán này, mặc dù chỉ có ba lớp dữ liệu theo cấu trúc hierarchical, nhưng để thuận tiện trong quan sát và thực hiện, bốn lớp dữ liệu đã được tạo ra: Mask (Có đeo khẩu trang), Not Mask (Không đeo khẩu trang), Incorrect (Đeo khẩu trang không đúng cách) và Correct (Đeo khẩu trang đúng cách) Lớp Mask được hình thành từ sự kết hợp của hai lớp Incorrect và Correct Quá trình huấn luyện sẽ diễn ra hai lần: lần đầu với hai lớp Mask và Not Mask, lần hai với hai lớp Incorrect và Correct Việc đánh nhãn cũng tương tự, trong đó Mask và Incorrect được gán nhãn là 1, còn Not Mask và Correct được gán nhãn là -1.
Hình 3.9 Phân cấp dữ liệu cho trường hợp sobel, 16x32, C=0.001
Tất cả các trường hợp đều được phân cấp giống như Hình 3.9 Mỗi lần huấn luyện cho từng trường hợp sử dụng quy ước đã nêu, file Train_1.csv lưu trữ trọng số và độ thiên của phân loại nhị phân giữa Mask và Not Mask, trong khi file Train_2.csv chứa trọng số và độ thiên của phân loại nhị phân giữa Incorrect và Correct.
Sau khi hoàn thành quá trình huấn luyện, chúng ta sẽ thu được hai trọng số là weight và bias Dựa vào các tham số âm hoặc dương, chúng ta có thể xác định được mẫu dữ liệu thuộc về lớp nào, như đã trình bày trong chương 2, mục 2.4.2.
Ví dụ cho một mẫu test đi qua mô hình như sau:
Khi sử dụng mô hình HOG, đặc trưng được trích xuất sẽ có kích thước và giá trị đầu ra khác nhau tùy thuộc vào từng trường hợp cụ thể Vector thu được sau khi áp dụng mô hình HOG được gọi là X_test.
Trong quá trình phân loại, lần train đầu tiên sử dụng các giá trị weight và bias để xác định lớp của dữ liệu Cụ thể, ta lấy chuyển vị của weight nhân với X_test và cộng với bias; nếu kết quả lớn hơn 0, dữ liệu thuộc lớp Mask, ngược lại, nếu nhỏ hơn 0, dữ liệu thuộc lớp Not Mask và quá trình train lần 2 sẽ dừng lại Đối với lần train thứ hai, ta tiếp tục sử dụng weight và bias đã được tính toán, thực hiện phép nhân chuyển vị weight với X_test và cộng với bias Kết quả lớn hơn 0 sẽ xác định dữ liệu thuộc lớp Incorrect, trong khi kết quả nhỏ hơn 0 sẽ xác định lớp Correct.
3.5.3 Kết quả của mô hình phân loại
Số mẫu dữ liệu mà sử dụng cho từng mô hình trong hai tập train và test như sau:
- Lớp Incorrect: tập train có 3415 mẫu, tập test có 660 mẫu
- Lớp Correct: tập train có 3545 mẫu, tập test có 710 mẫu
Lớp Not Mask bao gồm 6857 mẫu cho tập train và 1353 mẫu cho tập test, với tiêu chí đánh giá là Accuracy và phương pháp Hold-out được thể hiện qua Confusion Matrix Kết quả cho 24 trường hợp cho thấy hiệu suất chưa tối ưu, đặc biệt là với kích thước 16x32 và C=0.001, nơi cả mặt nạ xy và Sobel đều thiên lệch về một phía, dẫn đến một lớp nhận dạng chính xác 100% trong khi lớp còn lại không đạt yêu cầu Trường hợp tốt nhất được ghi nhận ở mặt nạ Sobel với kích thước 32x64 và C=1, cũng như mặt nạ xy với kích thước 32x64 và C.
Hình 3.10 Confusion matrix trường hợp mặt nạ Xy, size 16x32, C=0.001
Hình 3.11 Confusion matrix trường hợp mặt nạ Sobel, size 16x32, C=0.001
Hình 3.12 Confusion matrix trường hợp mặt nạ Sobel, size 32x64 , C=1
Hình 3.13 Confusion matrix trường hợp mặt nạ Xy, size 32x64 , C
Các kết quả khác được trình bày trong các Bảng 3.1 đến 3.4, thể hiện số mẫu phân loại đúng và sai Bảng 3.5 sẽ giải thích các ký hiệu cột được sử dụng trong các Bảng 3.1 đến 3.4.
Bảng 3.1 Kết quả nhận dạng trường hợp mặt nạ Sobel 32x64
Bảng 3.2 Kết quả nhận dạng trường hợp mặt nạ Sobel 16x32
Bảng 3.3 Kết quả nhận dạng trường hợp mặt nạ Xy 32x64
Bảng 3.4 Kết quả nhận dạng trường hợp mặt nạ Xy 16x32
Bảng 3.5 Giải thích tên cột trong Bảng 3.1 đến Bảng 3.4
Incorrect -True Tỉ lê người đeo khẩu trang sai phân loại đúng
Correct – Incorrect Tỉ lệ người đeo khẩu trang đúng bị nhận nhầm sang người đeo khẩu trang sai
Not Mask -> Incorrect Tỉ lên người không đeo khẩu trang bị nhận nhầm sang người đeo khẩu trang sai
Tỉ lệ người đeo khẩu trang sai thường bị nhầm lẫn với người đeo khẩu trang đúng Trong khi đó, tỉ lệ người đeo khẩu trang đúng được phân loại một cách chính xác.
Not Mask -> Correct Tỉ lệ người không đeo khẩu trang bị nhận nhầm sang người đeo khẩu trang đúng
Incorrect-> Not Mask Tỉ lệ người đeo khẩu trang sai bị nhận nhầm thành người không đeo khẩu trang
Tỷ lệ người đeo khẩu trang đúng bị nhầm lẫn thành người không đeo khẩu trang và tỷ lệ người không đeo khẩu trang được phân loại chính xác Để có cái nhìn tổng quan về độ chính xác của việc phân loại, các biểu đồ từ Hình 3.14 đến Hình 3.17 sẽ minh họa rõ ràng các kết quả này.
Hình 3.14 Accuracy trong trường hợp mặt nạ Sobel, size 32x64
Hình 3.15 Accuracy trong trường hợp mặt nạ Sobel, size 16x32
Hình 3.16 Accuracy trong trường hợp mặt nạ Xy, size 32x64
Hình 3.17 Accuracy trong trường hợp mặt nạ Xy, size 16x32 3.5.4 Đánh giá mô hình phân loại sử dụng Soft SVM
Sau khi hoàn thiện mô hình rút ra được những đánh giá tổng quan như sau:
Việc thay đổi hai mặt nạ trong HOG không ảnh hưởng đáng kể đến kết quả cuối cùng ở từng trường hợp Điều này cho thấy rằng, bất kể loại mặt nạ nào được sử dụng, các đặc trưng trích ra vẫn tương tự nhau.
Việc thay đổi kích thước bức ảnh từ 16x32 sang 32x64 cho thấy sự khác biệt rõ rệt Kích thước 16x32 có tỷ lệ nhận diện sai và độ chính xác thấp hơn so với kích thước 32x64, điều này xác nhận lý thuyết ban đầu trong HOG rằng việc giảm kích thước bức ảnh sẽ làm mất đi nhiều đặc trưng quan trọng.
Với kích thước 16x32 và giá trị C=0.001, cả hai dạng mặt nạ đều cho thấy tình trạng nghiêng về một phía, dẫn đến mô hình phân loại luôn cho kết quả 100% và ngẫu nhiên giữa hai phía Khi thử nghiệm với các giá trị C xung quanh 0.001 như 0.0005 và 0.002, nhận thấy rằng ở giá trị C=0.003, mô hình bắt đầu có xu hướng nghiêng về một phía Đặc biệt, tại giá trị C=0.001, mô hình nghiêng hẳn về một phía, và nếu giá trị C nhỏ hơn 0.001, mô hình luôn nghiêng về một phía, với giá trị C nhỏ nhất được thử nghiệm là 0.0001.
Mô hình hoàn thiện
Trong quá trình xây dựng mô hình tổng thể, chúng tôi đã phát triển một giao diện người dùng (GUI) nhằm đánh giá hiệu quả của mô hình hoàn thiện và mô hình phân loại GUI chủ yếu được sử dụng để nhận diện người đeo khẩu trang, với đầu vào là bức ảnh và đầu ra là khuôn mặt được khoanh vùng bằng màu sắc Bên cạnh đó, GUI cũng hiển thị kết quả của mô hình phân loại sử dụng Soft SVM, bao gồm ma trận nhầm lẫn cho tất cả các trường hợp và các biểu đồ cột thể hiện độ chính xác của mô hình phân loại.
Hình 3.19 Hình ảnh của GUI đã được xây dựng
Mô hình đầu ra cung cấp bức ảnh nhận diện khuôn mặt với các hình chữ nhật màu sắc: đỏ cho trường hợp không đeo khẩu trang, xanh lá cây cho việc đeo khẩu trang đúng cách và vàng cho đeo khẩu trang sai Đầu vào của mô hình bao gồm các bức ảnh tự xây dựng hoặc tìm kiếm từ Google, như thể hiện trong Hình 3.20.
Mô hình tổng thể hoạt động hiệu quả trong hầu hết các trường hợp, nhưng có một số đối tượng có thể trở thành điểm dữ liệu nhiễu hoặc có độ hy sinh nhỏ, gần với hyperplane Do đó, một số đối tượng có thể được phân loại đúng trong một trường hợp nhưng sai trong trường hợp khác Hình 3.21 đến Hình 3.23 minh họa rõ ràng sự khác biệt trong kết quả phân loại cho cùng một bức ảnh trong các trường hợp khác nhau.
Hình 3.20 Đầu ra mô hình với mặt nạ Xy, size 32x64, C
Hình 3.21 Đối tượng bên trái nhận diện nhầm với mặt nạ Xy, size 32x64, C
Hình 3.22 Đối tượng bên phải nhận diện nhầm với mặt nạ Sobel, size 32x64, C=0.1
Hình 3.23 Hai đối tượng nhận diện đúng với mặt nạ Sobel, size 32x64, C=1
Trong một số tình huống, như khi dùng tay, sách hoặc các vật dụng khác để che miệng, mô hình nhận diện có thể xảy ra sai sót.
Hình 3.24 Nhận diện sai với mặt nạ Xy, size 32x64, C
Kết luận chương 3
Sau khi thực hiện các công việc theo trình tự đã nêu trong chương 3, mục tiêu xây dựng mô hình nhận diện người đeo khẩu trang với tỷ lệ chính xác cao đã đạt được Mô hình có khả năng phát hiện và phân loại các đối tượng thành ba lớp khác nhau, đi kèm với giao diện dễ tương tác và khả năng quan sát trực quan qua biểu đồ Tuy nhiên, mô hình vẫn còn hạn chế về tính thực dụng khi chỉ nhận đầu vào là hình ảnh và chưa có hệ thống cảnh báo âm thanh hiệu quả Tất cả dữ liệu, mã nguồn và các tệp dữ liệu định dạng CSV và Excel được lưu trữ tại trang web: https://drive.google.com/drive/u/0/folders/1t7NsV9JF0ANsiYdxdprXI7g768ONa3JA.
Kết luận và Hướng phát triển
Với hơn 17.000 mẫu dữ liệu đầu vào, mô hình Machine Learning truyền thống đã đạt được độ chính xác khoảng 80% trong việc phát hiện đối tượng và hơn 90% trong phân loại đối tượng Mô hình Haar Cascade nổi bật với khả năng nhận diện nhanh và trích xuất đối tượng hiệu quả, đáp ứng tốt yêu cầu của bài toán.
Mô hình phân loại đối tượng SVM đã được tối ưu để chọn ra những trường hợp phân loại hiệu quả nhất, giúp nhận diện người không đeo khẩu trang, người đeo khẩu trang đúng và sai cách Mặc dù còn nhiều hạn chế, mô hình này đóng góp tích cực vào việc giải quyết bài toán nhận diện người đeo khẩu trang và ứng dụng các mô hình machine learning truyền thống Qua đồ án, người thực hiện không chỉ nâng cao hiểu biết về trích đặc trưng HOG và thuật toán SVM mà còn củng cố kiến thức từ các môn học trước, tăng cường kinh nghiệm trong lĩnh vực computer vision.
Để nâng cao hiệu quả của mô hình phát hiện và phân loại đối tượng, có thể tăng số lượng mẫu dữ liệu hoặc tự xây dựng tập dữ liệu cho mô hình Haar Cascade, giúp cải thiện khả năng phát hiện Bên cạnh đó, việc tối ưu hóa ngưỡng và lựa chọn mặt nạ trong phương pháp HOG cùng với ứng dụng các kỹ thuật xử lý ảnh sẽ giúp lấy đặc trưng đối tượng tốt hơn Trong thuật toán SVM, việc tăng số lớp dữ liệu, chẳng hạn như thêm lớp cho đối tượng che miệng hoặc lớp không có đối tượng, sẽ giảm thiểu khả năng phân loại sai Sử dụng Kernel trick trong SVM cũng giúp xây dựng Hyperplane với độ chính xác cao hơn Ngoài ra, chuyển sang mô hình phân loại deep learning có thể giảm tải bước trích đặc trưng và nâng cao độ chính xác Mở rộng mục tiêu, bài toán có thể bao gồm nhận dạng danh tính đối tượng dựa trên dữ liệu thu thập được, tích hợp hệ thống cảnh báo âm thanh và khả năng nhận diện video trong thời gian thực thay vì chỉ trên ảnh tĩnh.