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

Bài toán nhận dạng mẫu trong lĩnh vực thị giác máy tính và trí tuệ nhân tạo đã trải qua hơn ba thập kỷ phát triển với nhiều ứng dụng thực tiễn trong quản lý nhân sự, an ninh - giám sát tội phạm, tìm kiếm đa phương tiện và các hệ thống bán hàng tự động tương tác thông minh. Trong các nhánh của nhận dạng sinh trắc học, bài toán ước lượng và dự đoán độ tuổi thông qua hình ảnh khuôn mặt là một bài toán phức tạp do sự thay đổi diện mạo khuôn mặt chịu tác động đồng thời của quy luật lão hóa tự nhiên, cấu trúc xương, cơ địa và các yếu tố môi trường bên ngoài.

Về mặt lịch sử nghiên cứu, bài toán dự đoán tuổi khuôn mặt được khởi xướng bởi Kwon và Lobo thông qua việc phát hiện và tính toán tỷ lệ các nếp nhăn cục bộ, sau đó được cải tiến bởi Ramanathan và Chellappa. Tuy nhiên, cách tiếp cận dựa trên nếp nhăn chỉ phân biệt tương đối tốt giữa hai nhóm người lớn và trẻ em, nhưng gặp nhiều hạn chế khi phân định độ tuổi giữa những người trưởng thành. Hướng tiếp cận tiếp theo của Geng cùng các cộng sự với mô hình AGES đạt hiệu quả cao hơn nhưng lại phụ thuộc vào tập dữ liệu lớn với điều kiện chụp nghiêm ngặt: góc mặt phải hoàn toàn chính diện, đặt ở trung tâm và căn chỉnh tỷ lệ chính xác.

Nhóm tác giả thuộc Khoa Công nghệ Thông tin, Trường Đại học Kinh Bắc thực hiện đề tài "Dự Đoán Tuổi Qua Khuôn Mặt Bằng Python" nhằm giải quyết bài toán xây dựng mô hình dự đoán tuổi dựa trên luồng xử lý thị giác máy tính. Nhiệm vụ nghiên cứu của đề tài được xác định gồm các nội dung sau:

  1. Nghiên cứu tổng quan về bài toán nhận dạng khuôn mặt và các cơ chế ước lượng độ tuổi từ hình ảnh.
  2. Phân tích các mô hình, thuật toán nhận dạng khuôn mặt tiêu biểu: phương pháp truyền thống (Bag-of-Words), các kiến trúc học sâu (FaceNet, DeepFace) và thư viện thị giác máy tính OpenCV.
  3. Nghiên cứu các đặc trưng hình thái biến đổi theo độ tuổi trên khuôn mặt, trọng tâm là mô hình trích xuất đặc trưng vùng lõm đa mức độ kết hợp ảnh tích phân và cấu trúc cây cấp bậc.
  4. Thiết kế, xây dựng chương trình thực nghiệm trên ngôn ngữ lập trình Python, tích hợp công cụ OpenCV và mô hình VGGFace để thu nhận hình ảnh, phát hiện khuôn mặt và hiển thị thông tin độ tuổi.

Đối tượng và phạm vi nghiên cứu của đề tài bao gồm:

  • Đối tượng nghiên cứu: Khuôn mặt người trong ảnh tĩnh hoặc luồng video thu nhận từ webcam.
  • Phạm vi độ tuổi: Nhận dạng và ước lượng trong khoảng từ 1 đến 100 tuổi.
  • Yêu cầu dữ liệu đầu vào: Ảnh chụp phải đảm bảo thấy được tối thiểu 50% diện tích khuôn mặt và nhận diện được ít nhất một phần các chi tiết giải phẫu học cơ bản như mắt, mũi, miệng trong các điều kiện thay đổi về ánh sáng, góc nghiêng và che khuất cục bộ.

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

Khung lý thuyết và mô hình tiếp cận

Hệ thống xử lý ảnh và nhận dạng khuôn mặt trong nghiên cứu được xây dựng dựa trên chu trình xử lý thị giác máy tính tiêu chuẩn:

  • Tiền xử lý ảnh: Tiếp nhận ảnh số n chiều $P(c, c_1, c_2, \dots)$, thực hiện nâng cấp chất lượng, cân bằng độ sáng, khử nhiễu và nắn chỉnh hình học nhằm hỗ trợ trích chọn đặc trưng.
  • Trích chọn đặc trưng (Feature Extraction): Tách lọc các vector đại diện mang tính phân lớp cao, giảm chiều không gian biểu diễn nhưng bảo toàn thông tin cấu trúc.
  • Đối sánh và phân loại (Classification): Sử dụng các phương pháp phân loại thống kê, đối sánh mẫu, mô hình cấu trúc cây và mạng nơ-ron nhân tạo để phân lớp danh tính và ước lượng độ tuổi.
  • Ước lượng độ tuổi: Ánh xạ khuôn mặt đã nhận dạng với nguồn dữ liệu chú giải (như metadata ngày tháng năm sinh) để tính toán độ tuổi theo công thức hiệu giữa năm ghi nhận hình ảnh và năm sinh.

Phương pháp nghiên cứu

  • Phương pháp phân tích - tổng hợp lý thuyết: Hệ thống hóa các công trình nghiên cứu về trích chọn đặc trưng cạnh (Sirohey), blob và streak (Chetverikov & Lerch), mô hình xác suất bộ lọc Gauss (Leung), ma trận đồng xuất mức xám SGLD (Augusteijn & Skufca), và biến đổi Wavelet (Manian & Ross).
  • Phương pháp mô hình hóa toán học:
    • Xây dựng toán tử trích xuất đặc trưng lõm (Valley features) dựa trên xấp xỉ bộ lọc Laplacian-of-Gaussian (LoG).
    • Ứng dụng kỹ thuật ảnh tích phân (Integral Image) để tối ưu hóa thời gian tính toán tổng độ sáng cục bộ với độ phức tạp $O(1)$.
    • Biểu diễn phân cấp đặc trưng khuôn mặt bằng cấu trúc cây cấp bậc (Hierarchical Tree) kết hợp thuật toán Phân tích thành phần chính (PCA) để nén vector độ sáng.
  • Phương pháp thực nghiệm và kiểm thử hệ thống: Khảo sát các kiến trúc mạng nơ-ron tích chập (CNN), hàm mất mát bộ ba sai số (Triplet Loss), mô hình canh chỉnh 3D (Frontalization) và cài đặt chương trình thực nghiệm bằng ngôn ngữ Python.

Nguồn dữ liệu tham chiếu

Nghiên cứu sử dụng và đối chiếu kết quả trên các bộ cơ sở dữ liệu khuôn mặt chuẩn trong học thuật:

  • Bộ dữ liệu AR: Gồm 119 đối tượng chụp trong các điều kiện biểu cảm, ánh sáng thay đổi và che khuất (sử dụng tập AR01 để huấn luyện; AR02–AR08, AR11, AR15–AR21, AR24 để kiểm tra).
  • Bộ dữ liệu XM2VTS: Dữ liệu chuẩn cho đánh giá nhận dạng đa phương thức.
  • Bộ dữ liệu LFW (Labeled Faces in the Wild): Gồm 13.233 ảnh của 5.749 nhân vật nổi tiếng.
  • Bộ dữ liệu YouTube Faces: Gồm 3.425 video của 1.595 đối tượng.
  • Bộ dữ liệu USF Human-ID: Mẫu quét 3D phục vụ quy trình chuẩn hóa hình học khuôn mặt.

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

Chương 1: Khái quát về nhận diện khuôn mặt đoán tuổi

Chương 1 trình bày tổng quan lịch sử phát triển của công nghệ nhận dạng khuôn mặt trong hơn 30 năm qua và ứng dụng của nó trong xã hội hiện đại. Tác giả phân tích chi tiết bản chất của bài toán ước lượng tuổi, phân loại các hướng tiếp cận ban đầu từ phát hiện nếp nhăn hình thái học đến các mô hình không gian con. Chương này xác định rõ các yêu cầu kỹ thuật đối với ảnh đầu vào của hệ thống: hình ảnh cần thể hiện rõ ít nhất 50% diện tích mặt và chứa các điểm mốc giải phẫu chính (mắt, mũi, miệng) để đảm bảo mô hình có đủ thông tin trích xuất.

Chương 2: Các thuật toán nhận diện khuôn mặt

Chương 2 tập trung phân tích sâu bốn giải thuật và công cụ nhận dạng khuôn mặt cốt lõi:

  • Mô hình Bag-of-Words (BoW): Ảnh khuôn mặt được chuẩn hóa về kích thước $270 \times 230$ pixel, chia thành lưới $5 \times 5$ vùng quan tâm (ROI). Mỗi ROI được trích xuất vector SIFT 128 chiều với bước lấy mẫu 2 điểm ảnh. Thuật toán k-means gom cụm các vector thành codeword để lập codebook. Vector biểu diễn toàn bộ khuôn mặt là chuỗi nối ghép 25 biểu đồ tần suất codeword, được phân loại bằng bộ phân loại Support Vector Machine (SVM) tuyến tính. Nhóm tác giả đề xuất định hướng thay thế lưới vuông cố định bằng phân vùng superpixel để bảo toàn ranh giới tự nhiên của ảnh.
  • Mô hình FaceNet: Ứng dụng mạng nơ-ron tích chập sâu (CNN) dựa trên kiến trúc Inception và Zeiler-Fergus để ánh xạ ảnh trực tiếp vào không gian Euclide 128 chiều với chuẩn $|f(x)|_2 = 1$. Quá trình huấn luyện sử dụng hàm mất mát bộ ba (Triplet Loss):

$$L = \sum_{i} \left[ |f(x_i^a) - f(x_i^p)|_2^2 - |f(x_i^a) - f(x_i^n)|2^2 + \alpha \right]+$$

Mô hình lựa chọn các mẫu bộ ba bán khó (semi-hard triplets) trong các mini-batch kích thước 1.800 mẫu (mỗi đối tượng có 40 ảnh), tối ưu hóa bằng thuật toán Stochastic Gradient Descent (SGD) kết hợp AdaGrad với tốc độ học $\alpha = 0.05$. Trên tập kiểm thử LFW, FaceNet đạt độ chính xác 98,15% khi không canh chỉnh và 99,09% khi có canh chỉnh. Trên tập YouTube Faces, mô hình đạt độ chính xác 95,12% (100 frame đầu) và 95,18% (1.000 frame đầu).

  • Mô hình DeepFace: Đề xuất quy trình canh chỉnh khuôn mặt 3D (Frontalization) thông qua 6 điểm mốc ban đầu, mở rộng lên 67 điểm mốc bằng phép đạc tam giác Delaunay và phép biến đổi affine 3D sử dụng dữ liệu USF Human-ID. Kiến trúc DeepFace gồm 8 lớp: C1 (32 bộ lọc $11 \times 11 \times 3$), Max Pooling M2 ($3 \times 3$, stride 2), C3 (16 bộ lọc $9 \times 9 \times 16$), ba lớp liên thông địa phương (Locally Connected) L4, L5, L6 và hai lớp liên kết đầy đủ F7 (4.096 chiều), F8 (k-way Softmax). Mạng đạt độ chính xác 95,5% với metric tích vô hướng không giám sát và 97,35% khi sử dụng khoảng cách $\chi^2$ có trọng số kết hợp SVM trên tập LFW, cùng 91,4% trên tập YouTube Faces.
  • Thư viện OpenCV: Khảo sát 4 module thành phần cơ bản (CV, MLL, HighGUI, CXCore) và thuật toán phát hiện khuôn mặt dựa trên bộ phân loại tầng Haar Cascade với tỷ lệ phát hiện đạt trên 98% trên ảnh mức xám.

Chương 3: Các đặc trưng trên khuôn mặt gây nên sự biến hóa về độ tuổi

Chương 3 đi sâu vào bản chất các đặc trưng hình thái biến đổi theo thời gian và đề xuất phương pháp mô hình hóa cấu trúc:

  • Tổng quan đặc trưng hình thái: Đánh giá phương pháp cạnh của Sirohey (độ chính xác 80%), blob và streak của Chetverikov & Lerch, mô hình đồ thị xác suất bộ lọc Gauss của Leung (độ chính xác 86%), phân loại kết cấu SGLD $16 \times 16$ qua mạng Kohonen của Augusteijn & Skufca, và biến đổi Wavelet 9 đặc trưng của Manian & Ross (độ chính xác 87%, sai số 18%).
  • Trích xuất đặc trưng lõm (Valley Features): Định nghĩa vùng lõm là các vùng trũng cực trị độ sáng (hốc mắt, rãnh mũi, khóe miệng). Để giảm thiểu độ nhạy cảm của việc tìm cực trị vi phân rời rạc, nhóm nghiên cứu đề xuất ba bộ lọc hình học hiệu độ sáng gồm: lọc vuông kích thước $S \times S$ với hàm phản hồi $F_S(R)$, lọc chữ nhật ngang và chữ nhật đứng với hàm phản hồi $F_R(R)$. Ngưỡng đánh giá được thiết lập tương ứng là $\partial_1 = K \cdot S^2$ và $\partial_2 = 4K \cdot S^2$.
  • Tối ưu hóa bằng Ảnh tích phân (Integral Image): Định nghĩa ma trận tích phân $S(x, y) = \sum_{x' \le x, y' \le y} I(x', y')$ với công thức truy hồi nhanh. Tổng độ sáng của một vùng chữ nhật bất kỳ $R(l, t, r, b)$ được tính trực tiếp qua 4 phép truy xuất ô nhớ:

$$\text{Sum}(R) = S(r, b) - S(l-1, b) - S(r, t-1) + S(l-1, t-1)$$

  • Xây dựng Cây cấp bậc đặc trưng lõm: Các vùng lõm rút trích ở các tỷ lệ lọc Gaussian $\sigma_1 < \sigma_2 < \dots < \sigma_n$ được liên kết thành cây. Vùng ở mức $\sigma_i$ là nút con của vùng ở mức $\sigma_{i+1}$ nếu phần diện tích giao nhau vượt quá 2/3. Mỗi nút lưu trữ 4 thuộc tính: loại nút $t \in {\text{ridge}, \text{valley}}$, hình dạng $s \in {\text{square}, \text{horizontal}, \text{vertical}}$, vị trí tương đối $p \in [0, 12]$ so với nút cha, và vector độ sáng n chiều được nén bằng PCA thông qua cửa sổ trượt $9 \times 9$ zic-zac.
  • Hàm tương đồng giữa hai cây: Độ tương đồng giữa hai nút cùng cấp $N_1, N_2$ được tính theo công thức:

$$\text{Sim}(N_1, N_2) = w_1 E(t_1, t_2) + w_2 E(s_1, s_2) + w_3 E(p_1, p_2) + w_4 EV(a_1, a_2)$$

Trong đó $w_1, w_2, w_3, w_4$ là các trọng số thực nghiệm; $E(x, y)$ là hàm so khớp nhị phân và $EV(a_1, a_2)$ là hàm khoảng cách vector độ sáng chuẩn hóa về $[0, 1]$.

Chương 4: Thiết kế và xây dựng chương trình

Chương 4 mô tả quy trình thiết kế và thực thi phần mềm ứng dụng dự đoán tuổi bằng Python. Hệ thống tích hợp các khối chức năng:

  1. Thu nhận hình ảnh: Đọc luồng video thời gian thực từ webcam hoặc nạp ảnh tĩnh thông qua module HighGUI của OpenCV.
  2. Phát hiện khuôn mặt: Ứng dụng bộ phân loại Haar Cascade để quét ma trận ảnh mức xám, xác định tọa độ vùng mặt và vẽ bounding box chữ nhật.
  3. Cắt và tiền xử lý: Trích xuất vùng ảnh khuôn mặt (crop), chuẩn hóa tỷ lệ kích thước.
  4. Nhận dạng và phân lớp tuổi: Kết hợp mô hình mạng VGGFace và các bộ trọng số huấn luyện để trích xuất đặc trưng và đưa ra độ tuổi dự đoán.
  5. Hiển thị thông tin: Ghi nhận kết quả dự đoán và trực quan hóa nhãn độ tuổi trực tiếp trên giao diện màn hình.

Thiết kế và triển khai hệ thống

Kiến trúc luồng dữ liệu của chương trình

Chương trình được triển khai theo luồng xử lý tuần tự gồm các giai đoạn:

  1. Thu nhận tín hiệu: Webcam tiếp nhận khung hình RGB ở chế độ thời gian thực.
  2. Tiền xử lý: Chuyển đổi khung hình sang không gian màu Gray (ảnh xám) để giảm khối lượng tính toán.
  3. Phát hiện vị trí: Haar Cascade phát hiện vùng khuôn mặt dựa trên các đặc trưng hình chữ nhật.
  4. Trích xuất vùng mặt: Tách vùng ảnh ROI (Region of Interest) chứa khuôn mặt.
  5. Mô hình suy luận: Đưa vùng mặt đã chuẩn hóa qua mạng nơ-ron nhận dạng VGGFace/mô hình học máy để tính toán vector đặc trưng và phân lớp tuổi.
  6. Xuất kết quả: Vẽ khung viền nhận diện xung quanh khuôn mặt và hiển thị chuỗi ký tự ước lượng tuổi lên khung hình.

Bảng so sánh các giải thuật nhận dạng khuôn mặt trong báo cáo

Thuật toán / Mô hình Bản chất kỹ thuật trích xuất đặc trưng Bộ phân loại / Hàm mất mát Độ chính xác công bố trên tập mẫu Ưu điểm chính Hạn chế chính
Bag-of-Words (BoW) Vector SIFT 128 chiều trên lưới ROI $5 \times 5$ Linear SVM / k-means codebook Thực nghiệm trên tập AR (119 người) và XM2VTS Khả năng nhận dạng tốt khi khuôn mặt có cảm xúc hoặc che khuất nhẹ Kém hiệu quả khi khuôn mặt bị che khuất diện tích lớn hoặc chụp một phần
FaceNet Mạng tích chập sâu (Inception/Zeiler-Fergus), vector 128-D Triplet Loss (Anchor - Positive - Negative), k-NN LFW: 98,15% (chưa nắn), 99,09% (đã nắn); YouTube Faces: 95,18% Tối ưu trực tiếp khoảng cách không gian Euclide; tính phân cụm cao Đòi hỏi tập dữ liệu cực lớn (hơn 200 triệu ảnh) và hạ tầng tính toán rất mạnh
DeepFace Canh chỉnh 3D Frontalization, 3 lớp Locally Connected (L4–L6) Softmax Cross-Entropy, khoảng cách $\chi^2$ có trọng số + SVM LFW: 97,35%; YouTube Faces: 91,4% Xử lý triệt để góc nghiêng khuôn mặt nhờ mô hình hình học 3D 95% tham số tập trung ở các lớp liên thông; phụ thuộc tập dữ liệu riêng lớn
Haar Cascade (OpenCV) Các bộ lọc hình chữ nhật mức xám (Haar-like features) Bộ phân loại tầng (Cascade Classifier) Tỷ lệ phát hiện khuôn mặt > 98% Tốc độ xử lý thời gian thực rất cao, nhẹ, tích hợp đa nền tảng Dễ bị ảnh hưởng bởi góc quay lớn, ánh sáng phức tạp và nhiễu nền

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

Kết quả chính

  • Hệ thống hóa cơ sở lý thuyết: Báo cáo đã phân tích chi tiết cơ chế hoạt động, ưu nhược điểm và các tham số toán học của các thuật toán nhận dạng từ truyền thống (BoW, trích xuất cạnh, wavelet) đến các mạng học sâu hiện đại (FaceNet, DeepFace).
  • Phát triển mô hình đặc trưng lõm đa tỷ lệ: Xây dựng hoàn chỉnh khung toán học cho bộ ba bộ lọc hình học (vuông, chữ nhật ngang, đứng), tích hợp ảnh tích phân để tính nhanh giá trị lọc và cấu trúc hóa quan hệ các vùng lõm thành cây phân cấp nén bằng PCA.
  • Xây dựng chương trình thực nghiệm: Cài đặt thành công ứng dụng trên Python kết hợp OpenCV và VGGFace, cho phép phát hiện khuôn mặt từ webcam thời gian thực, vẽ khung định vị và hiển thị nhãn độ tuổi.

Đóng góp của đề tài

  1. Đề xuất giải pháp kết hợp giữa cấu trúc cây cấp bậc đặc trưng lõm và phương pháp ảnh tích phân nhằm giải quyết bài toán biểu diễn đặc trưng cục bộ với chi phí tính toán thấp.
  2. Cung cấp tài liệu tổng hợp chuyên sâu về cơ chế tính toán Triplet Loss (FaceNet) và kỹ thuật Frontalization 3D (DeepFace) phục vụ nghiên cứu xử lý ảnh khuôn mặt bằng tiếng Việt.
  3. Hiện thực hóa quy trình từ lý thuyết xử lý ảnh đến ứng dụng phần mềm dự đoán tuổi có khả năng vận hành trực tiếp trên thiết bị máy tính thông thường.

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

Hạn chế

  • Quy mô tập dữ liệu tự huấn luyện: Nhóm tác giả chưa thể tự huấn luyện các mạng nơ-ron tích chập sâu từ đầu với hàng triệu mẫu như FaceNet hay DeepFace do hạn chế về hạ tầng phần cứng và thiết bị tính toán.
  • Độ nhạy với điều kiện môi trường: Chương trình thực nghiệm còn phụ thuộc vào chất lượng ánh sáng môi trường, độ phân giải của thiết bị thu nhận và góc nghiêng của khuôn mặt.
  • Ràng buộc diện tích khuôn mặt: Mô hình chỉ đạt độ chính xác khi ảnh đầu vào đáp ứng điều kiện thấy rõ ít nhất 50% diện tích khuôn mặt và đầy đủ các chi tiết mắt, mũi, miệng.

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

  • Mở rộng phân vùng ROI từ lưới vuông sang phân vùng superpixel nhằm tối ưu hóa đường biên đặc trưng tự nhiên của khuôn mặt.
  • Huấn luyện và tinh chỉnh (fine-tuning) các mô hình học sâu chuyên biệt cho dự đoán tuổi trên các tập dữ liệu khuôn mặt người châu Á và người Việt Nam.
  • Tích hợp thêm các bài toán liên quan như nhận diện giới tính, phân tích cảm xúc và phát hiện chủng tộc để hoàn thiện hệ thống thị giác thông minh cho các ứng dụng thực tế.

Giá trị tham khảo

Báo cáo bài tập lớn / đồ án này có giá trị tham khảo chuyên môn cho:

  • Sinh viên và học viên ngành Công nghệ Thông tin, Khoa học Máy tính, Kỹ thuật Phần mềm: Dùng làm tài liệu tham khảo về cấu trúc hệ thống thị giác máy tính, phương pháp xử lý luồng video qua OpenCV và cách thức tích hợp các mô hình nơ-ron trong Python.
  • Người nghiên cứu về sinh trắc học khuôn mặt: Cung cấp tài liệu tổng quan chi tiết về mặt toán học của hàm mất mát Triplet Loss, các kỹ thuật biến đổi affine 3D và cấu trúc mạng Locally Connected.
  • Nghiên cứu sinh, kỹ sư phát triển ứng dụng biên (Edge AI): Phần phân tích về trích xuất đặc trưng lõm đa cấp độ kết hợp ảnh tích phân và cấu trúc cây phân cấp là nguồn tài liệu hữu ích để tham khảo khi thiết kế các thuật toán nhận dạng nhẹ chạy trên thiết bị có tài nguyên tính toán giới hạn.

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

1. Yêu cầu kỹ thuật đối với ảnh đầu vào của hệ thống dự đoán tuổi là gì?

Ảnh đầu vào có thể là ảnh một phần hoặc một góc khuôn mặt nhưng bắt buộc phải đảm bảo thấy được tối thiểu 50% diện tích khuôn mặt và thể hiện rõ ít nhất một phần các chi tiết giải phẫu học cơ bản ở vùng mắt, mũi, miệng.

2. Thuật toán FaceNet tối ưu hóa việc phân tách vector khuôn mặt bằng phương pháp nào?

FaceNet sử dụng hàm mất mát bộ ba (Triplet Loss) để cực tiểu hóa khoảng cách giữa ảnh gốc (Anchor) và ảnh cùng người (Positive), đồng thời tối đa hóa khoảng cách giữa ảnh gốc và ảnh người khác (Negative) trong không gian Euclide 128 chiều, kết hợp kỹ thuật chọn mẫu bán khó (semi-hard negative) trong các mini-batch 1.800 mẫu để chống suy biến mô hình.

3. Kỹ thuật Frontalization trong DeepFace giải quyết vấn đề góc chụp nghiêng như thế nào?

DeepFace định vị 6 điểm mốc cơ bản trên hộp bao khuôn mặt 2D, mở rộng thành 67 điểm mốc bằng phép đạc tam giác Delaunay, sau đó áp dụng phép biến đổi camera affine 3D khớp với mô hình mặt người 3D trung bình từ tập USF Human-ID để tái tạo lại ảnh mặt theo hướng nhìn chính diện.

4. Phương pháp trích xuất đặc trưng lõm trong Chương 3 làm thế nào để tối ưu tốc độ tính toán?

Phương pháp áp dụng kỹ thuật Ảnh tích phân (Integral Image) kết hợp quy hoạch động, cho phép tính trước bảng tổng tích lũy độ sáng $S(x, y)$ một lần duy nhất. Nhờ đó, tổng độ sáng của bất kỳ vùng cửa sổ lọc hình chữ nhật nào cũng được truy xuất chỉ bằng 4 phép tính số học cơ bản mà không phụ thuộc vào kích thước vùng lọc.

5. Trong cấu trúc cây cấp bậc đặc trưng lõm, thông tin độ sáng của mỗi nút được lưu trữ như thế nào?

Để tiết kiệm bộ nhớ và giảm độ phức tạp, tác giả sử dụng một cửa sổ trượt kích thước $9 \times 9$ quét zic-zac trên vùng ảnh xám của nút để lấy trung bình độ sáng, sau đó áp dụng thuật toán Phân tích thành phần chính (PCA) để nén thành một vector đại diện có số chiều thấp mà vẫn bảo toàn thông tin.


Kết luận

Báo cáo bài tập lớn "Dự Đoán Tuổi Qua Khuôn Mặt Bằng Python" của nhóm sinh viên Trường Đại học Kinh Bắc đã trình bày có hệ thống các phương pháp nhận dạng khuôn mặt và ước lượng độ tuổi trong thị giác máy tính. Công trình đã làm rõ cơ sở toán học từ các phương pháp cổ điển, cấu trúc cây đặc trưng lõm tối ưu bằng ảnh tích phân đến các kiến trúc mạng nơ-ron học sâu tiên tiến như FaceNet và DeepFace. Kết quả thực nghiệm bằng ngôn ngữ Python kết hợp OpenCV và VGGFace đã chứng minh tính khả thi của quy trình phát hiện khuôn mặt và ước lượng độ tuổi từ luồng hình ảnh thực tế.