Bối cảnh và vấn đề nghiên cứu

Trong lĩnh vực thị giác máy tính và xử lý ảnh, bài toán nhận dạng mặt người đóng vai trò then chốt trong nhiều ứng dụng thực tiễn như hệ thống giám sát an ninh, chấm công tự động, giao tiếp người – máy và bảo mật sinh trắc học. Một hệ thống nhận dạng mặt người tiêu chuẩn bao gồm bốn giai đoạn xử lý nối tiếp: phát hiện khuôn mặt (face detection), phân đoạn khuôn mặt (face alignment/segmentation), rút trích đặc trưng (feature extraction) và phân lớp khuôn mặt (face classification). Trong đó, phát hiện khuôn mặt là bước tiên quyết và phức tạp nhất do chịu ảnh hưởng trực tiếp từ các yếu tố ngoại cảnh như tư thế khuôn mặt, điều kiện chiếu sáng, biểu cảm và sự che khuất.

Đồ án tốt nghiệp "Xây dựng ứng dụng phát hiện khuôn mặt trong ảnh sử dụng OpenCV" do sinh viên Cao Tiến Đạt thực hiện dưới sự hướng dẫn của TS. Ngô Trường Giang tại Khoa Công nghệ Thông tin, Trường Đại học Dân lập Hải Phòng (2019), tập trung giải quyết bài toán phát hiện khuôn mặt người trong ảnh tĩnh thông qua kỹ thuật học máy và xử lý ảnh số.

Văn bản xác định các mục tiêu và nhiệm vụ nghiên cứu cụ thể như sau:

  1. Tìm hiểu tổng quan về bài toán phát hiện khuôn mặt trong ảnh và các hướng tiếp cận phổ biến.
  2. Nghiên cứu phương pháp phát hiện khuôn mặt dựa trên tập đặc trưng Haar-like, cấu trúc ảnh tích phân (Integral Image), thuật toán tăng cường độ chính xác AdaBoost và mô hình phân loại tầng (Cascade of Classifiers).
  3. Tìm hiểu cấu trúc và các hàm xử lý cơ bản trong thư viện thị giác máy tính mã nguồn mở OpenCV.
  4. Xây dựng ứng dụng phần mềm có giao diện thực thi phát hiện vị trí khuôn mặt trên ảnh đầu vào bằng OpenCV.

Đối tượng và phạm vi nghiên cứu:

  • Đối tượng nghiên cứu: Các thuật toán phát hiện khuôn mặt người, trọng tâm là phương pháp Haar-like kết hợp AdaBoost của Viola và Jones; cấu trúc xử lý của thư viện OpenCV.
  • Phạm vi không gian và dữ liệu: Thử nghiệm trên ảnh số đơn sắc và ảnh màu chứa một hoặc nhiều khuôn mặt người ở góc chụp trực diện hoặc có góc nghiêng nhỏ (từ -10° đến 10°).
  • Phạm vi thời gian thực hiện: Đề tài được giao ngày 01/07/2019 và hoàn thành ngày 21/09/2019.

Cơ sở lý thuyết và phương pháp

Đồ án tổng hợp hệ thống cơ sở lý thuyết đa dạng trong lĩnh vực nhận dạng mẫu và thị giác máy tính, phân loại các hướng tiếp cận phát hiện khuôn mặt thành bốn nhóm chính, đồng thời đi sâu vào khung thuật toán của Paul Viola và Michael Jones (2001).

Hướng tiếp cận Cơ sở lý thuyết / Mô hình tiêu biểu Tác giả & Phương pháp cụ thể trong văn bản
Dựa trên tri thức (Knowledge-based) Quy tắc hình học, tỷ lệ khoảng cách giữa các thành phần khuôn mặt (top-down). - Yang và Huang: Hệ thống 3 mức luật đa độ phân giải ($n=1, 4, 8, 16$).
- Kotropoulos và Pitas: Phương pháp chiếu ngang $H_I(x)$ và dọc $V_I(y)$ (độ chính xác 86,5%).
- Mateos và Chicote (>87%), Berbar (kết hợp màu da và chiếu tọa độ).
Dựa trên đặc trưng không đổi (Feature-invariant) Cấu trúc cạnh, kết cấu, màu da bất biến dưới điều kiện môi trường (bottom-up). - Sirohey: Canny, Heuristics và đường bao ellipse (chính xác 80%).
- Chetverikov và Lerch: Cặp đặc trưng blob và streak qua biến đổi Laplace.
- Graf: Toán tử hình thái học (morphology) và histogram.
- Augusteijn và Skufca: Kết cấu face-like texture qua mạng nơ-ron Cascade/Kohonen.
- Manian và Ross: Biến đổi Wavelet đa phân giải với 9 đặc trưng (chính xác 87%, sai 18%).
- Yachida: Logic mờ trong không gian màu CIE XYZ.
- Sobottka và Pitas: Phân đoạn màu da HSV và mạng nơ-ron (chính xác 85%).
Dựa trên so khớp mẫu (Template matching) Tương quan mẫu chuẩn cố định hoặc hàm năng lượng tham số hóa. - Sakai, Craw (lọc Sobel và tập 40 mẫu).
- Sinha: 16 vùng với 23 quan hệ sáng – tối (11 quan hệ thiết yếu, 12 quan hệ xác thực).
- Miao: Đa phân giải xoay từ -20° đến 20° bước 5°.
- Wei và Lai: K-láng giềng gần nhất (KNN, chính xác 80%).
- Dowdall: Góc quay -10° đến 10°.
- Yuille: Mẫu biến dạng tối thiểu hóa hàm năng lượng.
- Lanitis: Mô hình phân bố điểm (Point Distribution Model - PDM).
Dựa trên máy học / diện mạo (Appearance-based) Học thống kê từ tập mẫu huấn luyện hai lớp (mặt / không phải mặt). - Kohonen, Kirby và Sirovich: Phân tích thành phần chính (PCA), biến đổi Karhunen-Lòeve (giữ 95% tính chất với 50 ảnh riêng từ 100 ảnh kích thước 91x50).
- Turk và Pentland: Không gian ảnh riêng Eigenface.
- Mạng Nơ-ron nhân tạo: Cấu trúc lớp vào, lớp ẩn, lớp ra và hàm kích hoạt.
- Máy vectơ hỗ trợ (SVM): Vladimir Vapnik.
- Mô hình Markov ẩn (HMM): Samaria, Nefian.
- Mạng lọc thưa SNoW: Yang (tỷ lệ lỗi 5,9%).
- FloatBoost: Li và Zhang.
- AdaBoost & Cascade: Viola và Jones (độ chính xác >80% trên ảnh xám).

Phương pháp nghiên cứu thực nghiệm được tác giả áp dụng:

  1. Phương pháp biểu diễn ảnh tích phân (Integral Image): Mảng hai chiều được định nghĩa theo công thức: $$P(x, y) = \sum_{x' \le x, y' \le y} i(x', y')$$ Cho phép tính tổng giá trị mức xám của một vùng hình chữ nhật $D$ bất kỳ thông qua bốn điểm góc $P_1, P_2, P_3, P_4$: $$D = P_4 - P_2 - P_3 + P_1$$
  2. Thuật toán tăng cường AdaBoost: Xây dựng bộ phân loại mạnh $H_M(x)$ từ tổ hợp tuyến tính của $M$ bộ phân loại yếu $h_m(x)$: $$H_M(x) = \text{sign}\left[\sum_{m=1}^M h_m(x)\right]$$ Hàm mất mát mũ được cực tiểu hóa qua từng bước lặp với quy tắc cập nhật trọng số mẫu huấn luyện: $$w_i^{(m)} \leftarrow w_i^{(m-1)} \exp\left(-y_i H_m(x_i)\right)$$
  3. Kỹ thuật phân tầng (Cascade of Classifiers): Cấu trúc chuỗi các bộ phân loại $T = {t_i}$ giúp loại bỏ sớm các vùng ảnh không phải khuôn mặt ở các tầng đầu có độ phức tạp thấp. Tỷ lệ loại sai toàn hệ thống $F$ và độ chính xác $D$ trên $K$ tầng được xác định bởi: $$F = \prod_{i=1}^K f_i \quad \text{và} \quad D = \prod_{i=1}^K d_i$$
  4. Kỹ thuật dò quét dạng tháp (Image Pyramid): Sử dụng cửa sổ kích thước cơ sở $(w_0 \times h_0)$ quét toàn bộ ảnh, sau mỗi bước thu nhỏ ảnh với hệ số co scale = 1.2 nhằm phát hiện các khuôn mặt ở nhiều tỷ lệ kích thước khác nhau.

Thiết kế và triển khai

Hệ thống phát hiện khuôn mặt được thiết kế và cài đặt theo quy trình xử lý dữ liệu tuần tự, tích hợp các bộ phân loại được huấn luyện sẵn của thư viện OpenCV.

[Ảnh gốc đầu vào] 
[Tiền xử lý: Chuyển đổi sang ảnh xám]
[Tính toán ma trận ảnh tích phân (Integral Image)]
[Trích xuất và ước lượng các đặc trưng Haar-like]
[Lọc qua bộ điều chỉnh AdaBoost & Mô hình phân tầng (Cascade)]
[Tổng hợp kết quả & Đánh dấu khung chữ nhật vị trí khuôn mặt]

Chi tiết công nghệ và môi trường triển khai:

  • Thư viện xử lý: OpenCV (Open Source Computer Vision Library) với cấu trúc hơn 500 hàm chuyên dụng cho xử lý ảnh, thị giác máy tính và nhận dạng đối tượng.
  • Tập dữ liệu huấn luyện: Tận dụng các tập tin cấu hình XML chứa các bộ phân loại tầng Haar Cascade được huấn luyện sẵn đi kèm trong thư mục cài đặt của OpenCV (như haarcascade_frontalface_default.xml).
  • Giao diện chương trình: Được xây dựng dạng cửa sổ đồ họa cho phép người dùng nhập trực tiếp đường dẫn tập tin ảnh cần xử lý từ bộ nhớ máy tính.
  • Quy trình thực thi:
    1. Đọc ảnh gốc từ đường dẫn do người dùng cung cấp.
    2. Thực hiện tiền xử lý đưa ảnh về dạng ảnh xám (grayscale) để loại bỏ thông tin màu sắc và đồng nhất mức xám.
    3. Áp dụng thuật toán trích xuất đặc trưng Haar kết hợp mô hình Cascade chạy quét trên toàn bộ không gian ảnh.
    4. Đánh dấu các vùng thỏa mãn điều kiện phân loại bằng khung viền chữ nhật bao quanh khuôn mặt và xuất ảnh kết quả ra màn hình.

Nội dung chính theo từng chương

CHƯƠNG 1: Tổng quan về phát hiện khuôn mặt

Chương này cung cấp bức tranh toàn cảnh về lý thuyết phát hiện khuôn mặt trong hệ thống nhận dạng tổng thể. Tác giả phân tích chi tiết bốn nhóm tiếp cận chính: dựa trên tri thức, dựa trên đặc trưng không đổi, dựa trên so khớp mẫu và dựa trên máy học/diện mạo.

Nội dung chương nêu rõ 8 khó khăn thực tế khi nhận dạng khuôn mặt gồm: góc quay/tư thế (nhìn thẳng, nghiêng, nhìn từ trên xuống), chi tiết phụ (kính, râu quai nón), biểu cảm cảm xúc, vật cản che khuất, điều kiện chiếu sáng và chất lượng thiết bị, trục tọa độ camera, kích thước khuôn mặt biến thiên và hiện tượng da dính lẫn nhau giữa nhiều người.

Để đánh giá giải thuật, chương xác lập ba tiêu chí kỹ thuật: tỷ lệ xác định chính xác (detection rate), số lượng xác định nhầm (false positives) và thời gian thực hiện (running time). Đồng thời, tác giả liệt kê các ứng dụng thực tiễn như nhận diện đối tượng truy nã tại sân bay/siêu thị, chấm công nhân sự, tương tác người - máy trực quan, truy vấn dữ liệu truyền hình (dẫn chứng bài toán tìm kiếm tư liệu video về G. Bush hoặc Bin Laden của VTV) và kiểm soát truy cập sinh trắc học.

CHƯƠNG 2: Phát hiện khuôn mặt sử dụng đặc trưng Haar

Chương 2 trình bày chi tiết toán học và giải thuật cốt lõi của đề tài. Tác giả phân tích các đặc trưng vật lý của khuôn mặt trên ảnh xám (vùng mắt tối hơn vùng má và trán; sống mũi tối hơn hai bên cánh mũi). Hệ thống đặc trưng Haar-like cơ sở gồm 4 dạng hình chữ nhật được mở rộng thành ba nhóm: đặc trưng cạnh (edge feature), đặc trưng đường (line feature) và đặc trưng xung quanh tâm (center-surround feature).

Tác giả trình bày giải thuật tính toán nhanh ma trận Integral Image, thuật toán học máy AdaBoost để lựa chọn đặc trưng tối ưu từ không gian hàng nghìn đặc trưng, và nguyên lý ghép nối chuỗi phân loại Cascade. Kỹ thuật quét tháp ảnh với tỷ lệ co scale 1.2 được phân tích nhằm đảm bảo khả năng phát hiện đa kích thước. Cuối chương, tác giả đánh giá ưu điểm (độ chính xác trên 90%, tốc độ 15-20 khung hình/giây phù hợp cho video thời gian thực) và nhược điểm (thời gian huấn luyện chậm, chỉ tối ưu cho khuôn mặt chụp thẳng).

CHƯƠNG 3: Thực nghiệm phát hiện khuôn mặt

Chương 3 mô tả quá trình hiện thực hóa mô hình lý thuyết thành ứng dụng phần mềm cụ thể. Tác giả trình bày quy trình xử lý dữ liệu đầu vào, cách thức tổ chức cấu trúc của OpenCV và việc nạp các bộ phân loại XML có sẵn. Chương minh họa các bước chuyển đổi ảnh sang mức xám, cơ chế trích xuất đặc trưng Haar trên từng vùng ảnh con và tổng hợp vùng nhận diện.

Phần thực nghiệm cung cấp các hình ảnh kết quả chạy thử nghiệm của chương trình trên giao diện đồ họa đối với hai trường hợp: ảnh chân dung đơn khuôn mặt và ảnh tập thể chứa nhiều khuôn mặt. Kết quả thực nghiệm cho thấy hệ thống xác định chính xác các khuôn mặt ở góc nhìn trực diện, đồng thời ghi nhận trường hợp chưa nhận dạng được đối với khuôn mặt có góc nghiêng lớn.


Kết quả và đóng góp

Các kết quả chính đạt được:

  • Trình bày có hệ thống các hướng tiếp cận phát hiện khuôn mặt trong y văn thị giác máy tính, phân tích rõ ràng cơ chế hoạt động của đặc trưng Haar-like, ảnh tích phân và bộ phân loại AdaBoost.
  • Cài đặt thành công ứng dụng thực nghiệm trên máy tính sử dụng các hàm chức năng và bộ huấn luyện có sẵn của OpenCV.
  • Chương trình nhận diện chính xác các khuôn mặt nhìn thẳng trên cả ảnh đơn lẻ và ảnh tập thể có nhiều người trong điều kiện ánh sáng ổn định.
  • Tốc độ xử lý của mô hình Cascade lý thuyết ghi nhận khả năng xử lý đạt 15 đến 20 khung hình/giây, chứng minh tính khả thi cho việc mở rộng sang xử lý video thời gian thực.

Đóng góp của đồ án:

  • Cung cấp tài liệu tổng hợp chi tiết về mặt lý thuyết và công thức toán học cho các giải thuật trích xuất đặc trưng và phân loại ảnh cổ điển.
  • Kiểm chứng và minh họa trực quan quy trình ứng dụng thư viện OpenCV vào bài toán phát hiện mặt người cho sinh viên ngành Công nghệ Thông tin.

Hạn chế và hướng nghiên cứu tiếp

Hạn chế được văn bản ghi nhận:

  • Thuật toán huấn luyện mô hình AdaBoost nguyên bản đòi hỏi thời gian xử lý rất lớn do số lượng bộ phân loại yếu cần đánh giá quá nhiều.
  • Chương trình thực nghiệm mới dừng lại ở việc phát hiện các khuôn mặt có góc nhìn thẳng hoặc độ nghiêng xoay rất nhỏ; các khuôn mặt nghiêng góc lớn hoặc bị che khuất chưa thể phát hiện được (minh chứng tại kết quả thực nghiệm Hình 3-14).
  • Một số tính chất tối ưu hóa của AdaBoost mang tính nhận định thực nghiệm, chưa được chứng minh toán học hoàn toàn chặt chẽ.
  • Chương trình thực nghiệm chỉ thực hiện nạp các mô hình huấn luyện có sẵn của OpenCV mà chưa tiến hành tự thu thập tập dữ liệu mẫu để huấn luyện một bộ phân loại tầng riêng biệt.

Hướng nghiên cứu tiếp:

  • Nghiên cứu mở rộng thuật toán để phát hiện các khuôn mặt đa tư thế (mặt nghiêng, cúi, ngửa) và trong các điều kiện môi trường ánh sáng phức tạp.
  • Tích hợp mô hình vào luồng video trực tiếp từ webcam/camera để phát hiện và theo vết đối tượng chuyển động trong thời gian thực.
  • Kết hợp bước phát hiện với các giai đoạn tiếp theo (rút trích đặc trưng chi tiết và phân lớp) để xây dựng hệ thống nhận diện danh tính hoàn chỉnh.

Giá trị tham khảo

Đồ án là tài liệu tham khảo hữu ích cho sinh viên chuyên ngành Công nghệ Thông tin, Kỹ thuật Phần mềm và Khoa học Máy tính khi bắt đầu tiếp cận môn học Xử lý ảnh số hoặc Thị giác máy tính:

  • Phần tổng quan lý thuyết (Chương 1 & Chương 2): Đáng tham khảo cho các đề tài nghiên cứu về giải thuật nhận dạng đối tượng, cung cấp bức tranh so sánh chi tiết giữa các phương pháp tiếp cận từ cổ điển (so khớp mẫu, chiếu hình học) đến học máy (Eigenface, SVM, AdaBoost, SNoW).
  • Phần giải thuật ảnh tích phân và Cascade (Chương 2): Cung cấp các công thức toán học và các bước suy diễn cụ thể của thuật toán AdaBoost và kỹ thuật quét tháp ảnh.
  • Phần thực nghiệm (Chương 3): Thích hợp cho người học cần tài liệu hướng dẫn từng bước áp dụng thư viện OpenCV để xây dựng các ứng dụng phát hiện đối tượng trên ảnh tĩnh.

Câu hỏi thường gặp

1. Bốn bước chính trong một hệ thống nhận dạng mặt người được đồ án xác định là gì?
Một hệ thống nhận dạng mặt người hoàn chỉnh bao gồm bốn bước: Phát hiện khuôn mặt (face detection), Phân đoạn khuôn mặt (face alignment/segmentation), Rút trích đặc trưng (feature extraction), và Phân lớp khuôn mặt (face classification).

2. Bản chất của ma trận ảnh tích phân (Integral Image) là gì và có tác dụng như thế nào?
Ảnh tích phân là một mảng hai chiều có kích thước bằng ảnh gốc, trong đó giá trị tại phần tử $(x, y)$ là tổng mức xám của tất cả các điểm ảnh nằm phía trên và bên trái nó. Cấu trúc này cho phép tính tổng giá trị mức xám của một vùng hình chữ nhật bất kỳ chỉ bằng 4 phép truy xuất giá trị tại các điểm góc, giúp tăng tốc độ trích chọn đặc trưng Haar-like.

3. Khung thuật toán của Viola và Jones chia đặc trưng Haar-like thành những nhóm nào?
Từ 4 đặc trưng cơ bản gồm các hình chữ nhật trắng đen xen kẽ, thuật toán mở rộng thành ba tập đặc trưng chính: đặc trưng cạnh (edge feature), đặc trưng đường (line feature) và đặc trưng xung quanh tâm (center-surround feature).

4. Tại sao hệ thống cần sử dụng mô hình phân tầng (Cascade of Classifiers)?
Nếu kiểm tra toàn bộ đặc trưng trên mọi cửa sổ quét, tốc độ xử lý sẽ rất chậm. Mô hình phân tầng sắp xếp các bộ phân loại từ đơn giản đến phức tạp; các vùng ảnh không phải khuôn mặt sẽ bị loại bỏ ngay từ những tầng đầu tiên, giúp tiết kiệm chi phí tính toán và nâng tốc độ xử lý lên 15–20 khung hình/giây.

5. Kết quả thực nghiệm của tác giả cho thấy ứng dụng còn gặp hạn chế trong trường hợp nào?
Chương trình thực nghiệm hoạt động tốt với các khuôn mặt chụp thẳng nhưng chưa nhận dạng được các khuôn mặt có góc nhìn nghiêng hoặc góc xoay lớn trong ảnh có nhiều người.


Kết luận

Đồ án tốt nghiệp của sinh viên Cao Tiến Đạt đã hoàn thành các nhiệm vụ nghiên cứu được giao về bài toán phát hiện khuôn mặt người trong ảnh. Tác giả đã hệ thống hóa cơ sở lý luận về đặc trưng Haar-like, cấu trúc ảnh tích phân và giải thuật học máy AdaBoost kết hợp mô hình phân loại tầng Cascade. Trên cơ sở đó, đồ án đã triển khai thành công ứng dụng thực nghiệm bằng thư viện OpenCV, phát hiện chính xác các khuôn mặt nhìn thẳng trên ảnh số và chỉ rõ các giới hạn cần tiếp tục cải tiến đối với khuôn mặt đa tư thế.