Tổng quan về phát hiện khuôn mặt
Giới thiệu phát hiện khuôn mặt
Trong những năm gần đây, nghiên cứu về bài toán nhận diện khuôn mặt từ ảnh đã có nhiều bước tiến quan trọng, từ ảnh đen trắng, xám đến ảnh màu Ban đầu, các bài toán chỉ tập trung vào những hình ảnh đơn giản với một khuôn mặt nhìn thẳng và tư thế đứng yên Tuy nhiên, với nhu cầu ngày càng cao trong cuộc sống và khoa học hiện đại, các nghiên cứu đã phát triển để phát hiện khuôn mặt trong những môi trường phức tạp hơn, bao gồm nhiều khuôn mặt và các tư thế khác nhau trong ảnh.
Xác định khuôn mặt người là một kỹ thuật quan trọng giúp xác định vị trí và kích thước khuôn mặt trong các bức ảnh Kỹ thuật này tập trung vào việc nhận diện các đặc trưng của khuôn mặt, đồng thời bỏ qua những yếu tố không liên quan khác.
Tổng quan kiến trúc của một hệ thống nhận dạng mặt người
Hệ thống nhận dạng khuôn mặt thông thường trải qua bốn bước chính: đầu tiên là phát hiện khuôn mặt, tiếp theo là phân đoạn khuôn mặt để xác định các đặc điểm, sau đó là rút trích đặc trưng từ khuôn mặt, và cuối cùng là phân lớp khuôn mặt để nhận diện.
Hình 1-1: Các bước chính trong một hệ thống nhận dạng mặt người
Phát hiện khuôn mặt là quá trình dò tìm và xác định vị trí khuôn mặt trong ảnh hoặc video, bao gồm việc phân đoạn các thành phần như mắt, mũi và miệng Những thông tin này sẽ được sử dụng để tính toán véc-tơ đặc trưng, phục vụ cho việc phân loại khuôn mặt bằng mô hình đã được huấn luyện Để nâng cao độ chính xác của hệ thống, có thể áp dụng thêm các bước tiền xử lý và hậu xử lý Tuy nhiên, việc phát hiện khuôn mặt gặp nhiều thách thức do các yếu tố như tư thế, độ sáng và điều kiện ánh sáng Trong luận văn này, tôi sẽ tập trung chủ yếu vào bước phát hiện khuôn mặt.
Các hướng tiếp cận trong phát hiện khuôn mặt
Nhiều nghiên cứu đã phát triển các phương pháp nhận diện khuôn mặt, từ ảnh xám đến ảnh màu hiện đại Các phương pháp này được phân loại thành bốn hướng tiếp cận chính dựa trên các đặc điểm kỹ thuật của chúng.
Hướng tiếp cận dựa trên tri thức liên quan đến việc mã hóa hiểu biết của con người về các loại khuôn mặt thành các quy tắc Những quy tắc này thường mô tả mối quan hệ giữa các đặc trưng của khuôn mặt.
Mục tiêu của các thuật toán là tìm kiếm những đặc trưng không thay đổi mô tả cấu trúc khuôn mặt con người, đảm bảo rằng các đặc trưng này vẫn giữ nguyên bất chấp sự thay đổi về tư thế khuôn mặt, vị trí thiết bị thu hình hoặc điều kiện ánh sáng.
Hướng tiếp cận dưa trên so khớp mẫu sử dụng các mẫu chuẩn của khuôn mặt người, được chọn lựa và lưu trữ để mô tả các đặc trưng khuôn mặt Các mẫu này cần được tách biệt theo tiêu chuẩn mà các tác giả đã định ra nhằm mục đích so sánh hiệu quả.
Hướng tiếp cận dựa trên diện mạo khác biệt hoàn toàn so với khớp mẫu, khi mà các mô hình học được xây dựng từ một tập ảnh huấn luyện trước Hệ thống sẽ xác định khuôn mặt của người dùng dựa trên những đặc điểm đã học Một số tác giả còn gọi phương pháp này là hướng tiếp cận theo phương pháp học.
1.2.1 Hướng tiếp cận dựa trên tri thức
Trong tiếp cận top-down, việc xác định khuôn mặt người phụ thuộc vào tri thức của các tác giả nghiên cứu Các luật cơ bản được xây dựng để mô tả đặc trưng khuôn mặt, như hai đôi mắt đối xứng qua trục thẳng đứng, cùng với một mũi và một miệng Các mối quan hệ giữa các đặc trưng này có thể được diễn tả qua khoảng cách và vị trí Thông thường, các tác giả sẽ trích xuất đặc trưng khuôn mặt trước, sau đó sử dụng các luật để phân loại các ứng viên, xác định khuôn mặt và không phải khuôn mặt.
Một thách thức lớn trong việc chuyển đổi tri thức con người thành các luật là làm sao để đảm bảo tính hiệu quả Nếu các luật quá chi tiết và chặt chẽ, có thể dẫn đến việc bỏ sót một số khuôn mặt trong ảnh do không đáp ứng đủ điều kiện Ngược lại, nếu các luật quá tổng quát, chúng ta có thể nhầm lẫn giữa các vùng không phải khuôn mặt với khuôn mặt Bên cạnh đó, việc mở rộng yêu cầu để nhận diện khuôn mặt ở nhiều tư thế khác nhau cũng gặp nhiều khó khăn.
Hình 1-2: (a) Ảnh ban đầu có độ phân giải n = 1; (b), (c), và (d) Ảnh có độ phân giải n = 4, 8, 16
Yang và Huang áp dụng phương pháp tiếp cận để xác định khuôn mặt thông qua một hệ thống gồm ba mức luật Mức cao nhất sử dụng khung cửa sổ quét trên ảnh để tìm các ứng viên có thể là khuôn mặt, trong khi mức tiếp theo mô tả hình dáng tổng quát của khuôn mặt Cuối cùng, mức chi tiết sử dụng một tập luật khác để phân tích các đặc trưng khuôn mặt Hệ thống đa độ phân giải được triển khai để xác định các ứng viên, với các luật ở mức cao nhất như "Vùng trung tâm khuôn mặt có bốn phần với mức độ đều cơ bản" và "Phần xung quanh bên trên của khuôn mặt có mức độ đều cơ bản".
Mức độ khác nhau giữa các giá trị xám trung bình của phần trung tâm và phần bao bên trên là đáng kể Ở mức hai, cần xem xét biểu đồ của các ứng viên để loại bớt những khuôn mặt không phù hợp và xác định cạnh bao xung quanh Cuối cùng, các ứng viên còn lại sẽ được phân tích dựa trên các đặc trưng khuôn mặt như mắt và miệng Hai nhà nghiên cứu đã áp dụng chiến lược “từ thô đến mịn” để giảm thiểu số lượng tính toán trong quá trình xử lý Mặc dù tỷ lệ chính xác chưa cao, nhưng đây là nền tảng cho nhiều nghiên cứu trong tương lai.
Hình 1-3: Một loại tri thức của người nghiên cứu phân tích trên khuôn mặt.
Kotropoulos và Pitas đưa ra một phương pháp dùng trên độ phân giải thấp Hai ông dùng phương pháp chiếu để xác định các đặc trưng khuôn mặt
Kanade đã áp dụng thành công phương pháp chiếu để xác định biên khuôn mặt Trong đó, I(x,y) đại diện cho giá trị xám của điểm ảnh tại vị trí (x,y) trong ảnh có kích thước m x n Các hàm chiếu ảnh theo phương ngang và thẳng đứng được định nghĩa rõ ràng để phục vụ cho việc phân tích.
HI(x) ny1 I ( x , y ) và VI(y) mx1 I(x, y) (1-1)
Hình 1-4: Phương pháp chiếu (a) Ảnh chỉ có một khuôn mặt và hình nền đơn giản;
(b) Ảnh chỉ có một khuôn mặt và hình nền phức tạp;
(c) Ảnh có nhiều khuôn mặt
Dựa trên biển đồ chiếu hình ngang, có hai cực tiểu cục bộ khi xét quá trình thay đổi độ dốc HI, tương ứng với cạnh bên trái và phải của hai đầu Tương tự, hình chiếu dọc VI cũng cho thấy các cực tiểu cục bộ, giúp xác định vị trí miệng, đỉnh mũi và hai mắt Những đặc trưng này đủ để xác định khuôn mặt.
Hình 1.4.a minh họa phương pháp xác định khuôn mặt với độ chính xác 86,5% khi chỉ có một khuôn mặt thẳng và nền đơn giản Tuy nhiên, trong trường hợp nền phức tạp như hình 1.4.b, việc xác định trở nên khó khăn Đặc biệt, nếu ảnh chứa nhiều khuôn mặt, phương pháp này không thể đưa ra kết quả chính xác.
Hình 1-5: Chiếu từng phần ứng viên để xác định khuôn mặt.
Mateos và Chicote dùng kết cấu để xác định ứng viên trong ảnh màu
Bài viết phân tích hình dáng, kích thước và thành phần khuôn mặt nhằm xác định kiểu khuôn mặt Hai ông đã trích xuất các thành phần khuôn mặt của từng ứng viên và tiến hành chiếu từng phần để xác thực tính chính xác của chúng Kết quả cho thấy tỷ lệ chính xác đạt hơn 87%.
Berbar sử dụng mô hình màu da người và xác định các cạnh để nhận diện ứng viên khuôn mặt Sau đó, các đặc trưng được kết hợp và chiếu các ứng viên khuôn mặt xuống hệ trục tọa độ nhằm xác định đâu là khuôn mặt thực sự.
1.2.2 Hướng tiếp cận dựa trên đặc trưng không đổi. Đây là hướng tiếp cận thiểu kiểu bottom-up Các tác giả cố gắng tìm các đặc trưng không thay đổi của khuôn mặt người để xác định khuôn mặt người
Khó khăn và thách thức trong bài toán phát hiện khuôn mặt
Việc xác định khuôn mặt người có những khó khăn nhất định:
Hướng của khuôn mặt đối với máy ảnh rất quan trọng, bao gồm các tư thế như nhìn thẳng, nhìn nghiêng hoặc nhìn từ trên xuống Trong một bức ảnh, có thể có nhiều khuôn mặt với các tư thế khác nhau, tạo nên sự đa dạng và hấp dẫn cho bức hình.
Sự có mặt của các chi tiết không phải là đặc trưng riêng của khuôn mặt người, như: râu quai nón, mắt kính, …
Các nét mặt (facial expression) khác nhau trên khuôn mặt, như: vui, buồn, ngạc nhiên, …
Mặt người bị che khuất bởi các đối tượng khác có trong ảnh.
Điều kiện ảnh, đặc biệt là về độ sáng và chất lượng ảnh, chất lượng thiết bị thu hình.
Trục toạ độ của máy ảnh so với ảnh.
Kích thước khác nhau của các khuôn mặt người, và đặc biệt là trong cùng một ảnh.
Nhiều khuôn mặt có vùng da dính lẫn nhau
Các khó khăn này cho thấy rằng mọi thuật toán giải quyết bài toán nhận diện khuôn mặt đều không thể tránh khỏi một số khuyết điểm nhất định Để đánh giá và so sánh các phương pháp nhận diện khuôn mặt, người ta thường dựa vào các tiêu chí cụ thể.
Tỷ lệ xác định chính xác trong nhận diện khuôn mặt là tỷ lệ giữa số lượng khuôn mặt được nhận diện đúng từ hệ thống và tổng số khuôn mặt thực tế có trong ảnh.
Số lượng xác định nhầm là số lượng vùng trong ảnh không phải là khuôn mặt người mà hệ thống xác định nhầm là khuôn mặt người (false positives).
Thời gian thực hiện là thời gian để máy tính xác định khuôn mặt người trong ảnh (running time).
Phát hiện khuôn mặt sử dụng đặc trưng Haar
Đặc trưng của Haar
Khuôn mặt trong ảnh được hình thành từ một tập hợp các điểm ảnh với những mối quan hệ đặc biệt, tạo nên các đặc trưng riêng biệt Khi chuyển đổi sang ảnh xám, tất cả các khuôn mặt người đều thể hiện những đặc điểm chung nhất định.
Vùng hai mắt sẽ tối hơn vùng má và vùng chán, tức mức xám của vùng này cao hơn vượt trội so với hai vùng còn lại
Vùng giữa sống mũi cũng tối hơn vùng hai bên mũi.
Và còn rất nhiều những đặc điểm khác của khuôn mặt và các đặc trưng
Haar like dựa vào các đặc điểm này để nhận dạng
Đặc trưng Haar-like không chỉ được áp dụng trong nhận diện khuôn mặt mà còn có khả năng nhận dạng nhiều đối tượng khác nhau trong ảnh như cơ thể, tay, chân, ô tô và đồ vật Mỗi đối tượng đều có những đặc điểm riêng biệt được thể hiện qua các vùng điểm ảnh, và đặc trưng Haar-like thực hiện việc tính toán các giá trị tương quan giữa các vùng ảnh này Đây chỉ là bước khởi đầu trong việc áp dụng đặc trưng để phân loại cửa sổ con, trong khi chi tiết về quá trình phân loại của bộ Adaboost và Cascade of Classifiers sẽ được trình bày trong phần tiếp theo.
Các đặc trưng Haar-Like là những hình chữ nhật được phân thành các vùng khác nhau như hình:
Hình 2-1 giới thiệu bốn đặc trưng cơ bản do Viola và Jones công bố để nhận diện khuôn mặt người Mỗi đặc trưng Haar-Like được tạo thành từ sự kết hợp của hai hoặc ba hình chữ nhật màu trắng và đen.
Để xác định khuôn mặt người, các đặc trưng Haar-Like cơ bản được mở rộng và chia thành ba tập đặc trưng, trong đó có đặc trưng cạnh (edge feature).
Hình 2-3: Đặc trưng đường(line feature)
Hình 2-4: Đặc trưng xung quanh tâm(center-surround features)
Hình 2-5: Các đặc trưng mở rộng của các đặc trưng Haar-like cơ sở
Dùng các đặc trưng trên, ta có thể tính được các giá trị của đặc trưng
Haar-Like là sự chênh lệch giữa tổng của các pixel của vùng đen và vùng trắng như trong công thức sau:
(2-1) Viola và Joines đưa ra một khái niệm gọi là Integral Image, là một mảng
2 chiều với kích thước bằng với kích thước của ảnh cần tính đặc trưng Haar-
Like, với mỗi phần tử của mảng này được tính bằng cách tính tổng của điểm ảnh phía trên (dòng-1) và bên trái (cột-1) của nó.
Hình 2-6: Công thức tính Intergral Image
Sau khi tính toán được Hình ảnh Tích phân, việc tính tổng các giá trị mức xám trong một vùng bất kỳ trên ảnh trở nên rất đơn giản.
Giả sử ta cần tính tổng giá trị mức xám của vùng D như hình dưới, ta có thể tính được như sau:
Giá trị tại điểm P4 trên Hình ảnh Tích phân được xác định bởi A + B + C + D, trong khi A + B là giá trị tại P2, A + C là giá trị tại P3 và A là giá trị tại P1 Do đó, biểu thức tính D có thể được viết lại như sau:
Hình 2-7: Ví dụ cách tính nhanh các giá trị mức xám của vùng D trên ảnh
Tiếp theo, để chọn các đặc trưng Haar-like dùng cho việc thiết lập ngưỡng, Viola và Jones sử dụng một phương pháp máy học được gọi là
AdaBoost là một phương pháp học máy 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 mẽ Các bộ phân loại yếu chỉ có độ chính xác cao hơn một chút so với việc đoán ngẫu nhiên, trong khi bộ phân loại mạnh có khả năng đưa ra các dự đoán chính xác trên 60%.
Bộ phân lớp AdaBoost
Bài toán dò tìm khuôn mặt nhanh trong ảnh là một yếu tố quan trọng, vì quá trình nhận dạng đối tượng sẽ không chính xác nếu thiếu bước xác định và định vị Việc phát hiện khuôn mặt nhanh chóng có ý nghĩa to lớn trong nhận dạng và theo dõi các đối tượng chuyển động trong video hoặc camera.
2.2.2 Các hướng tiếp cận dò tìm khuôn mặt nhanh
Hướng dò tìm khuôn mặt trên ảnh màu dựa vào phân tích màu sắc của vùng da có thể xử lý nhanh chóng, nhưng lại gặp hạn chế khi chỉ áp dụng cho ảnh màu và thường nhạy cảm với điều kiện ánh sáng Phương pháp này thường được sử dụng như các bước tiền xử lý cho những phương pháp khác.
Phương pháp dò tìm khuôn mặt dựa trên các đặc trưng bất biến của khuôn mặt người đã đạt được nhiều thành công, trong đó nổi bật nhất là phương pháp ASM (Active Shape Models), cho phép nhận diện khuôn mặt người trong thời gian thực một cách hiệu quả.
Hướng dò tìm khuôn mặt dựa trên thông tin hình ảnh sử dụng các phương pháp như mạng nơ-ron và SVM, tuy nhiên, SVM và mạng nơ-ron chỉ có thể xử lý một vài ảnh trong một giây, khiến việc nhận diện thời gian thực trở nên khó khăn Trong khi đó, phương pháp AdaBoost cho kết quả khả quan nhất, với khả năng xử lý khoảng 15-20 khung hình trong một giây.
Trong bài toán hai lớp, mẫu huấn luyện bao gồm M bộ dữ liệu (xi, yi) đã được gán nhãn, với yi thuộc {+1, -1} và xi thuộc Rn là các mẫu huấn luyện AdaBoost xây dựng một bộ phân loại mạnh hơn thông qua sự kết hợp tuyến tính của M bộ phân loại yếu hơn.
Các bộ phân loại yếu hơn có thể mang các giá trị thực, 𝒉 𝒎 (x) 𝝐 R Phân loại của x được quyết định bằng hàm H(x) = sign[𝑯 𝑴 (x)], trong đó độ lớn
Độ tin cậy của mô hình được xác định qua hàm 𝑯 𝑴 (x), trong đó mỗi mẫu được gán một trọng số Trong quá trình học, trọng số này được cập nhật để nhấn mạnh các phân loại sai trước đó Tuy nhiên, các thuật toán AdaBoost cải tiến gần đây cho phép thay thế quá trình cập nhật trọng số bằng một hàm tối ưu hóa Lỗi xảy ra khi H (x) không bằng y, hoặc khi y𝑯 𝑴 (x) nhỏ hơn 0 Mỗi mẫu (x, y) có lề được định nghĩa qua hàm h(x) 𝝐 R trên tập mẫu huấn luyện, với lề này phản ánh độ tin cậy của giá trị dự đoán của h Lỗi phân lớp của 𝑯 𝑴 có biên trên xác định mức độ chính xác của mô hình.
Thuật toán AdaBoost xây dựng hàm h(x) bằng cách giảm tối đa (2-6).
H M (x) tốt nhất cho phân loại mạnh 𝑯 𝑴 (x) = 𝑯 𝑴−𝟏 (𝒙) + 𝒉 𝒎 (𝒙)
Là hàm dẫn tới giá trị nhỏ nhất:
8) và hàm có giá trị nhỏ nhất được chứng minh là:
Với là 𝝎 (𝑴−𝟏) trọng lượng tại thời điểm M
Dùng công thức P(y| x,ω) = P(x| y,ω) P(y) và cho
Chúng ta có được 𝑯 𝒎 (x) = 𝑳 𝒎 (x) – T 𝑳 𝒎 được học ra từ các mẫu của cả hai phân lớp Ngưỡng T được xác định bằng tỉ lệ log của các xác suất trước đó.
Chúng tôi đã phát triển một phương pháp để tính toán phương trình (2-11), áp dụng trong việc học các bộ phân lớp tối ưu Việc rút ra một bộ phân loại yếu trong không gian nhiều chiều là rất quan trọng, vì vậy chúng tôi giới thiệu một mô hình thống kê theo từng giai đoạn dựa trên một số đặc điểm vô hướng Một đặc điểm vô hướng j của x được tính bằng cách biến đổi từ không gian dữ liệu n chiều thành đường thẳng thực 𝒁 𝒋 (x) thuộc Z Đặc điểm này có thể là hệ số, hoặc trong xử lý ảnh, là phép biến đổi vi ba tín hiệu Phương pháp tìm kiếm ước lượng được sử dụng như một phép biến đổi đơn giản 𝒁 𝒋 (x) sẽ được coi là tọa độ thứ j của x Chúng tôi có thể tạo ra một danh sách K đặc điểm ứng cử viên Z = {𝒁 𝒋 (x), …, 𝒁 𝒌 (x)} Trong phần tiếp theo, chúng tôi sử dụng z(m) để biểu diễn đặc điểm được chọn trong giai đoạn m, và 𝒁 𝒌 (x) là đặc điểm được tính toán từ x thông qua phép biến đổi thứ k.
Giả sử Z là một tập hoàn chỉnh, các phân lớp yếu cho bài toán phân lớp yếu tối ưu có thể được thiết lập như sau: Đầu tiên, trong giai đoạn
M, khi M-1 đặc điểm của 𝒁 (𝟏) , 𝒁 (𝟐) , …, 𝒁 (𝒎−𝟏) đã được chọn và trọng lượng số cho là 𝝎 (𝑴−𝟏) , chúng ta xấp xỉ p(x|y,𝝎 (𝑴−𝟏) )) bằng cách dùng phân bố của M đặc điểm: p(x|y, 𝝎 (𝑴−𝟏) ) ≈ p(z (1) , z (2) , …,𝒁 (𝑴−𝟏) ), 𝒁 𝒌 , |y, 𝝎 (𝑴−𝟏) ) (2-
Bởi vì Z là tập rất hoàn chỉnh, phép xấp xỉ vẫn tốt đối với tập M đủ lớn khi M đặc điểm được chọn thích hợp.
Ghi chú rằng p(𝒁 𝒎 |y, 𝒁 (𝟏) , 𝒁 (𝟐) , …, 𝒁 (𝒎−𝟏) ) thực chất là p(𝒁 𝒎 |y, 𝝎 (𝑴−𝟏) ), vì 𝝎 (𝑴) chứa thông tin về toàn bộ quá trình tạo ω và bao gồm các thành phần phụ thuộc vào 𝒁 (𝟏) , 𝒁 (𝟐) , …, 𝒁 (𝒎−𝟏) Do đó, chúng ta có thể viết: p(x|y, 𝝎 (𝑴−𝟏) ) ≈ p(z (1) | y, 𝝎 (𝟎) ) p(𝒛 (𝟐) | y, 𝝎 (𝟏) )… p(𝒁 (𝑴−𝟏) | y, 𝝎 (𝑴−𝟐) ) p(z k | y, 𝝎 (𝑴−𝟏) ).
Mật độ xác suất p(𝒁 𝒌 | y, 𝝎 (𝑴−𝟏) ) có thể được ước lượng cho phân lớp dương y = +1 và phân lớp âm y = -1 thông qua histogram, được tính toán từ việc đánh giá công nhận trọng số của các ví dụ huấn luyện với các trọng số 𝝎 (𝑴−𝟏)
15) chúng ta rút ra được tập hợp các phân lớp yếu hơn như sau: Ί (𝑴) (𝒙) = 𝒉 𝒌 (𝑴) (𝒙)|∀𝒌 (2-16)
N = a + b; a là số mẫu thuộc phân lớp 𝒚 𝒊 = +1 b là số mẫu thuộc phân lớp 𝒚 𝒊 = -1
2 Số lớp yếu tối đa M max được kết hợp
𝝎 𝒊 (𝟎) = 𝟐𝒂 𝟏 với mẫu thuộc phân lớp 𝒚 𝟏 =+1
𝝎 𝒊 (𝟎) = 𝟐𝒂 𝟏 với mẫu thuộc phân lớp 𝒚 𝟏 = -1
3) Cập nhật 𝝎 𝒊 (𝒎) ← exp −𝒚 𝒊 𝑯 𝒎 𝒙 (𝒊) và chuẩn hóa 𝝎 𝒊 (𝒎) để ∑ 𝝎 𝒊 (𝒎) = 𝟏 Bước 3: Đầu ra
Hình 2-8: Ví dụ minh họa cho thuật toán AdaBoost
Bộ dò tìm được huấn luyện bằng phương pháp AdaBoost cho phép đạt được độ chính xác và tốc độ nhất định Tuy nhiên, để nâng cao độ chính xác, bộ dò tìm cần tích hợp nhiều đặc trưng, điều này sẽ làm giảm tốc độ dò tìm.
Sử dụng bộ dò tìm kết hợp F={𝑪 𝒊 } với nhiều bộ dò tìm cơ bản fi khác nhau thường gặp khó khăn trong việc đạt được độ chính xác cao Để cải thiện điều này, cần có số lượng lớn bộ dò tìm hoặc mỗi bộ cần nhiều đặc trưng, dẫn đến giảm tốc độ Một giải pháp hiệu quả là áp dụng bộ dò tìm phân tầng T={𝒕 𝒊 }, bao gồm nhiều tầng với các bộ dò tìm kết hợp khác nhau, giúp tăng tốc độ và độ chính xác khi phát hiện khuôn mặt trong ảnh.
Tập hợp 𝑾 𝟎 gồm các kích thước s khác nhau tại tọa độ (i,j) sẽ được kiểm tra để xác định xem có phải là mặt người hay không Qua mỗi tầng ti, 𝑾 𝒊 được xác định bằng t 𝒊 (𝑾 𝒊−𝟏 ), với |𝑾 𝒊 | nhỏ hơn nhiều so với |𝑾 𝒊−𝟏 |, do việc loại bỏ sớm các cửa sổ không phải ứng viên Điều này cho phép xây dựng các tầng với độ phức tạp ngày càng tăng ở các tầng cao hơn, trong khi các tầng thấp hơn cần đơn giản hóa và loại bỏ nhiều ứng viên nhất có thể, đồng thời giữ tỷ lệ loại sai ở mức thấp.
Hình 2-9: Minh họa bộ đồ tìm phân tầng
Xét mỗi tầng t k = { c i } ta có tỷ lệ loại sai của t k được tính như sau:
Trong đó, fi đại diện cho tỷ lệ sai sót của bộ dò tìm ci, trong khi K là số lượng bộ dò tìm tại tầng tk Độ chính xác của tầng tk được tính toán dựa trên các yếu tố này.
Độ chính xác của bộ dò tìm ci có vai trò quan trọng trong việc xác định hiệu suất của các tầng Bằng cách áp dụng phương pháp tính này, chúng ta có thể đánh giá được độ chính xác tổng thể của toàn bộ hệ thống.
Dò tìm khuôn mặt
Việc phát hiện khuôn mặt trong ảnh qua bộ phân tầng đã huấn luyện gặp khó khăn do số lượng kích thước khác nhau quá lớn Để giải quyết vấn đề này, phương pháp dò theo kiến trúc tháp được áp dụng, với ảnh có kích thước (w x h), bước nhảy step = 0 và hệ số co scale là 1.2.
Lặp trong khi kích thước (w x h) còn lớn hơn cửa sổ ảnh mặt người huấn luyện (𝒘 𝟎 x 𝒉 𝟎 ):
Duyệt toàn bộ các vịtrí ( x,y) cửa sổ với kích thước (𝑤 0 x ℎ 0 ), với mỗi đơn vị trí tiến hành:
Áp dụng bộ dò tìm phân tầng để xác định có phải mặt người hay không
Nếu là mặt người tại vịtrí (x,y) thì thực tế mặt người tại vịtrí (x * scale step , y * scale step ) và kích cỡ cửa sổlà (𝑤 0 * scale step , ℎ 0 * scale step )
Thu nhỏ ảnh từ kích thước (w x h) đến (𝒘 𝟏 x , 𝒉 𝟏 )
Hệ số co scale ảnh hưởng đến độ mịn của các cửa sổ dò tìm; khi scale nhỏ (≥ 1), số lượng cửa sổ dò tìm tăng lên, dẫn đến độ chính xác cao hơn Bằng cách áp dụng thuật toán dò tìm theo kiến trúc tháp, chúng ta có thể phát hiện tất cả các khuôn mặt ở mọi vị trí, với kích thước dò tìm thay đổi ở mỗi bước.
Bước 1: Kích thước từ (𝒘 𝟎 , 𝒉 𝟎 ) đến (𝒘 𝟎 * scale, , 𝒉 𝟎 * scale)
Bước 2: Kích thước từ (𝒘 𝟎 * scale, , 𝒉 𝟎 * scale) đến ( 𝒘 𝟎 ∗ 𝒔𝒄𝒂𝒍𝒆 𝟐 , 𝒉 𝟎 𝒔𝒄𝒂𝒍𝒆 𝟐 )
Bước n: Kích thước từ ( 𝒘 𝟎 ∗ 𝒔𝒄𝒂𝒍𝒆 𝒏 − 𝟏, 𝒉 𝟎 𝒔𝒄𝒂𝒍𝒆 𝒏 − 𝟏) đến
Thực nghiệm phát hiện khuôn mặt
Mô tả bài toán
Từ các phương pháp được đưa ra ở phần trước, bài toán phát hiện khuôn mặt được thực hiện theo hai bước chính:
Do tìm các vùng có thể là khuôn mặt trong ảnh
Để nhận dạng khuôn mặt bằng đặc trưng Haar-like, trước tiên cần chuyển đổi ảnh gốc thành ảnh xám Sau đó, các đặc trưng Haar-like sẽ được áp dụng trên toàn bộ bức ảnh Những khu vực có sự tương đồng cao nhất với các đặc trưng này sẽ được đánh dấu, giúp phát hiện khuôn mặt một cách hiệu quả.
Hình 3-1: Hệ thống phát hiện khuôn mặt người
Từ ảnh gốc, ta tính Integral image, là mảng hai chiều với phần tử (x,y) được xác định bằng tổng các phần tử (x’,y’) với x’ < x và y’ < y Phương pháp này cho phép tính nhanh tổng giá trị mức xám của một vùng hình chữ nhật bất kỳ trên ảnh gốc, giúp cải thiện hiệu suất xử lý hình ảnh Các vùng ảnh con này sẽ được đưa qua các hàm xử lý tiếp theo.
Haar cơ bản được sử dụng để ước lượng các đặc trưng khuôn mặt, sau đó kết quả này sẽ được đưa qua bộ điều chỉnh Adaboost để loại bỏ các đặc trưng không liên quan Chỉ những đặc trưng mà Adaboost xác định là có khả năng là đặc trưng khuôn mặt mới được chuyển đến bộ quyết định Bộ quyết định sẽ tổng hợp kết quả và xác định nếu khuôn mặt được nhận diện dựa trên phản hồi từ các bộ phân loại yếu.
Mỗi bộ phân loại yếu có vai trò quyết định trong việc xác định đặc trưng Haar-like, với ngưỡng được chọn đủ nhỏ để vượt qua tất cả các bộ dữ liệu mẫu trong tập huấn luyện, bao gồm số lượng ảnh khuôn mặt.
Phát hiện khuôn mặt sử dụng hàm OpenCV
Opencv viết tắt của từ Open Source Computer Vision Library
OpenCV là một thư viện mã nguồn mở phục vụ cho việc nghiên cứu hay phát triển về thị giác máy tính
Tối ưu hóa và xử lý ứng dụng trong thời gianthực.
Giúp cho việc xây dựng các ứng dụng xử lý ảnh, thị giác máy tính … một cách nhanhhơn.
OpenCV có hơn 500 hàm khác nhau, được chia làm nhiều phần phục vụ các công việc như: xử lý ảnh, an ninh, camera quan sát, nhận diện,robot…
Thư viện OpenCV, được phát triển bằng ngôn ngữ C và C++, tương thích với các hệ điều hành Linux, Windows và MacOSX Được thiết kế để tối ưu hóa hiệu suất tính toán và hỗ trợ hệ thống thời gian thực, OpenCV cung cấp một giao diện đơn giản, dễ sử dụng, giúp người dùng nhanh chóng phát triển các ứng dụng trong lĩnh vực thị giác máy tính, bao gồm cả hệ thống kiểm tra trong nhà máy, ứng dụng y tế, bảo mật và robot học.
Nó bao gồm các chương trình xử lý ảnh cơ bản, bao gồm cả việc thực hiện các chức năng nâng cao như phát hiện khuôn mặt, theo dõi khuôn mặt và nhận diện khuôn mặt.
OpenCV, ra mắt vào tháng 1/1999, đã trở thành công cụ quan trọng trong nhiều ứng dụng và nghiên cứu, bao gồm hàng không, y học với chức năng giảm nhiễu, phân tích đối tượng, an ninh, hệ thống dò tìm và theo dõi tự động Ngoài ra, OpenCV còn được áp dụng trong nhận dạng âm thanh và đóng vai trò then chốt trong các robot sử dụng thị giác như Stanford và Asimo.
Cấu trúc của opencv được chia làm 5 phần chính, 4 trong số đó được chia ra như trong hình sau:
Hình 3-2: Cấu trúc cơ bản của OpenCV
CV (computer vision) là thành phần chữa những xử lý ảnh cơ sở và thuật toán thị giác máy tính mức cao.
MLL (machine learning library) là thư viện machine learning, cái này bao gồm rất nhiều lớp thống kê và gộp công cụ xử lý
HighGUI chứa các thủ tục vào ra và các hàm dùng cho việc lưu trữ và tải ảnh video
CXCore chứa cấu trúc và nội dung dữ liệu cơ sở.
3.2.3 Phát hiện khuôn mặt với các hàm trong OpenCV
Từ các phương pháp được đưa ra ở phần trước, bài toán phát hiện khuôn mặt được thực hiện theo các bước:
Huấn luyện bộ tập mẫu
Trong quá trình huấn luyện bộ tập mẫu, việc xác định khuôn mặt được thực hiện với sự hỗ trợ của thư mục bộ huấn luyện có sẵn trong cài đặt Opencv 3.4.2 Chúng ta sẽ tận dụng tài nguyên này để thực hiện các bước xác định khuôn mặt, chia thành ba giai đoạn khác nhau.
3.2.3.1 Huấn luyện bộ tập mẫu
Ta sử dụng luôn bộ huấn luyện có sẵn trong thư mục của opencv
Hình 3-3: Trong thư mục của Opencv đã có các bộ huấn luyện có sẵn
Một lưu ý nhỏ là phương pháp HA thực hiện trên ảnh xám (gray image)
Mỗi điểm ảnh (pixel) trong không gian màu 8 bit có giá trị mức xám từ 0 đến 255, cho thấy phương pháp nhận dạng Haar không sử dụng màu sắc khuôn mặt nhưng vẫn rất hiệu quả Ảnh màu được chuyển đổi sang ảnh xám thông qua một hàm chuyển đổi đơn giản trong Opencv, do đó không được đề cập trong báo cáo Sau khi chuyển đổi, ảnh xám được biến đổi thành “ảnh tích hợp”, và trong bước đầu tiên của quá trình nhận dạng, các đặc trưng Haar-like sẽ hoạt động trực tiếp trên ảnh tích hợp này.
Bước 2: Dò tìm khuôn mặt
Integal Image là mảng 2 chiều với kích thước ảnh cần tính đặc trưng
Haar là phương pháp phát hiện khuôn mặt bắt đầu từ vị trí trên bên trái đến vị trí dưới bên phải của ảnh Sau khi tính toán Integral Image, việc tính tổng điểm ảnh trong một vùng bất kỳ trở nên dễ dàng hơn Hệ thống sử dụng một cửa sổ con cố định để quét toàn bộ ảnh đầu vào, tạo ra nhiều ảnh con tương ứng Các đặc trưng Haar-like được áp dụng lên các cửa sổ con này để tính toán giá trị đặc trưng Cuối cùng, các giá trị này được bộ huấn luyện xác nhận để xác định xem khung hình có phải là khuôn mặt hay không.
Hình dưới là một ví dụ: khung màu xanh là cửa sổ con, một đặc trưng
Haar-like với kích thước và vị trí đặt như trong hình sau:
Hình 3-5: Tầm nhìn của máy tính khi các đặc trưng Haar chạy
Sau khi quét các cửa sổ con trên bức ảnh, đặc trưng Haar sẽ so sánh với bộ huấn luyện mẫu để xác định và đánh dấu những khu vực có khả năng là khuôn mặt trong ảnh.
Hình 3-6 Trong đó: faces.width/height: Chiều rộng/cao của đặc trưng Haar
Hàm detectMultiScale là phần tìm kiếm khuôn mặt, hàm (hay phương thức) này thuộc lớp CascadeClassifier (lớp phục vụ tìm kiếm đối tượng của
Hàm detectMultiScale sẽ trả về tọa độ gốc (x,y) và kích thước (w,h) của khung chứa khuôn mặt trong mảng faces Cấu trúc vòng lặp for sẽ duyệt qua các giá trị này, và với mỗi bộ giá trị, hàm rectangle sẽ được sử dụng để vẽ hình chữ nhật lên ảnh gốc với các tọa độ của hai điểm: (x,y) và (x+w,y+h).
(0,0,255) là màu sẽ vẽ hình chữ nhật
Hình 3-7: Các đặc trưng Haar đánh dấu những nơicó thểlà khuôn mặt
Sau khi xác định tất cả các vị trí có thể là khuôn mặt, chúng ta sẽ gộp các hình chữ nhật chứa cùng một khuôn mặt lại với nhau, nhằm tạo ra một hình chữ nhật duy nhất cho mỗi khuôn mặt.
Hình 3-8: Bức ảnh đã được xác định khuôn mặt
3.3 Một số kết quả chương trình
Hình 3-9: Bức ảnh cần nhận diện khuôn mặt
Hình 3-10: Giao diện chương trình
Hình 3-11: Kết quả Thử nhiệm với ảnh có nhiều khuôn mặt:
Hình 3-12: Bức ảnh có nhiều khuôn mặt
Hình 3-14: Kết quả ( khuôn mặt nghiêng chưa nhận dạng được)
Qua nghiên cứu về bài toán phát hiện khuôn mặt trong ảnh, tôi nhận thấy tầm quan trọng của xử lý ảnh và sự phát triển của công nghệ này trong cuộc sống hàng ngày Việc phát hiện khuôn mặt không chỉ nâng cao khả năng nhận diện mà còn góp phần cải thiện an ninh và trải nghiệm người dùng trong nhiều ứng dụng.
Trong quá trình phát triển chương trình, tôi đã nghiên cứu thư viện mã nguồn mở OpenCV, từ đó nắm vững cách sử dụng các hàm có sẵn trong thư viện này.
Chương trình hiện tại đã thành công trong việc phát hiện mặt người trong ảnh, đặc biệt là với những bức ảnh chụp thẳng, có chất lượng tốt và không có vật cản, với thời gian phát hiện nhanh chóng Tuy nhiên, chương trình vẫn gặp khó khăn trong việc nhận diện khuôn mặt trong các bức ảnh chụp nghiêng hoặc có màu sắc tối Tôi sẽ tiếp tục nghiên cứu và nỗ lực khắc phục những hạn chế này.