Giới thiệu dự án

Trong kỷ nguyên chuyển đổi số và phát triển mạnh mẽ của Trí tuệ nhân tạo (AI - Artificial Intelligence), thị giác máy tính (Computer Vision) đã trở thành trụ cột công nghệ then chốt trong nhiều lĩnh vực từ bán lẻ thông minh (Smart Retail), an ninh giám sát đến cá nhân hóa trải nghiệm người dùng. Theo các báo cáo phân tích thị trường toàn cầu, công nghệ nhận diện khuôn mặt và phân tích nhân khẩu học (Facial Demographics Analysis) đạt tốc độ tăng trưởng kép hàng năm (CAGR) trên 16.5%. Tuy nhiên, bài toán ước lượng độ tuổi và phân loại giới tính từ khuôn mặt trong điều kiện thời gian thực vẫn đối mặt với nhiều thách thức lớn:

  • Sự thiên lệch tập dữ liệu (Dataset Bias): Đa số bộ dữ liệu mở hiện nay (như Adience, CACD, MORPH) tập trung chủ yếu vào khuôn mặt người phương Tây (Caucasian), dẫn đến độ suy giảm chính xác nghiêm trọng khi triển khai trên tập người dùng châu Á (đặc biệt là Đông Á và Đông Nam Á).
  • Mất cân bằng dữ liệu và phân bố tuổi rời rạc: Nhiều nghiên cứu tiền nhiệm chia nhóm tuổi có khoảng cách không đồng đều (ví dụ: 0-2, 4-6, 8-13, 15-20, 25-32, 38-43, 48-53, 60-100), để lại các "khoảng trống" độ tuổi không thể định danh trong thực tế.
  • Chi phí tính toán và độ trễ: Các kiến trúc mạng học sâu nguyên bản thường cồng kềnh, gây khó khăn khi tích hợp phát hiện khuôn mặt đồng thời với phân loại đa thuộc tính trên các thiết bị phổ thông.

Đồ án tốt nghiệp "Thiết kế mô hình mạng CNN ứng dụng trong nhận dạng độ tuổi và giới tính" được nghiên cứu và phát triển bởi sinh viên ngành Công nghệ Kỹ thuật Điện tử - Viễn thông, Trường Đại học Sư phạm Kỹ thuật TP.HCM (HCMUTE) dưới sự hướng dẫn của PGS.TS Trương Ngọc Sơn, giải quyết triệt để các vấn đề trên bằng cách tiếp cận kỹ thuật bài bản:

flowchart LR
    A[Webcam / Video Input] --> B[YuNet Face Detector]
    B -->|Bounding Box 224x224| C[Preprocessing & Normalization]
    C --> D[VGG16 Feature Extractor]
    D --> E[Gender Head: Binary Sigmoid]
    D --> F[Age Head: 8-Class Softmax]
    E --> G[Streamlit UI Real-Time Display]
    F --> G

Mục tiêu dự án

  1. Xây dựng bộ dữ liệu khuôn mặt cân bằng: Thu thập và tiền xử lý tập dữ liệu chuẩn hóa gồm 18.000 hình ảnh (224x224 pixel), trong đó nhóm khuôn mặt người châu Á chiếm 56% (10.080 ảnh), phân bổ đều giữa hai giới tính nam/nữ (tỷ lệ 50:50).
  2. Thiết kế phân lớp độ tuổi liên tục: Phân chia 8 nhóm tuổi liên tiếp bao phủ toàn bộ vòng đời: (1–9), (10–19), (20–29), (30–39), (40–49), (50–59), (60–69) và (70+).
  3. Ứng dụng Transfer Learning & Fine-Tuning: Tối ưu hóa kiến trúc mạng nơ-ron tích chập (CNN - Convolutional Neural Network) dựa trên nền tảng backbone VGG16 kết hợp trọng số tiền huấn luyện ImageNet.
  4. Tích hợp mô hình phát hiện khuôn mặt siêu nhẹ (Lightweight Face Detection): Sử dụng YuNet ONNX với 5 điểm mốc đặc trưng (landmarks) nhằm xác định vùng quan tâm (ROI) thời gian thực.
  5. Triển khai ứng dụng Web tương tác thực tế: Xây dựng giao diện web trực quan với Streamlit, kết nối trực tiếp camera để nhận diện thời gian thực với độ trễ thấp.

Phạm vi và giới hạn

  • Phạm vi nghiên cứu: Nhận dạng khuôn mặt trực diện qua webcam laptop trong điều kiện ánh sáng đầy đủ của môi trường văn phòng/trong nhà.
  • Giới hạn kỹ thuật: Độ chính xác suy giảm khi đối tượng quay nghiêng góc lớn (>45 độ), bị che khuất một phần (khẩu trang, kính râm) hoặc trong điều kiện thiếu sáng nghiêm trọng.

Phân tích và thiết kế giải pháp

Phân tích hiện trạng

Trước khi xây dựng kiến trúc chi tiết, nhóm nghiên cứu tiến hành đánh giá so sánh các phương pháp tiếp cận nhận dạng thuộc tính khuôn mặt phổ biến:

Tiêu chí Phương pháp truyền thống (HOG + SVM) CNN cơ bản (Levi & Hassner, 2015) Giải pháp đề xuất (YuNet + Custom VGG16)
Trích xuất đặc trưng Thủ công (Hand-crafted features) 5 lớp tích chập nông 13 lớp tích chập sâu (Deep Feature Maps)
Phát hiện khuôn mặt Haar Cascade (chậm, tỷ lệ dương tính giả cao) Dlib frontal face detector YuNet (5 Facial Landmarks, ~3ms/frame)
Tập dữ liệu Nhỏ (<5.000 ảnh), đơn sắc Adience benchmark (mất cân bằng) 18.000 ảnh cân bằng, 56% người châu Á
Độ bao phủ nhóm tuổi 3 nhóm (Trẻ sơ sinh, Trẻ em, Người già) 8 nhóm rời rạc (có khoảng hở tuổi) 8 nhóm liên tiếp từ 1 đến 70+ tuổi
Độ chính xác giới tính ~81.2% ~86.8% 93.67% ~ 94.00%
Khả năng chạy Real-time Kém khi độ phân giải cao Trung bình Tối ưu trên GPU/CPU phổ thông với Streamlit

Ưu tiên yêu cầu kỹ thuật theo mô hình MoSCoW:

  • Must have (Bắt buộc): Nhận diện đồng thời tuổi và giới tính; xử lý luồng video thời gian thực từ webcam; độ chính xác giới tính trên tập validation >90%.
  • Should have (Nên có): Giao diện Web hiển thị bounding box kèm nhãn động; cấu trúc phân lớp 8 nhóm tuổi liên tiếp.
  • Could have (Có thể có): Khả năng chuyển đổi giữa mô hình nhận diện ảnh tĩnh và video trực tiếp.
  • Won't have (Chưa thực hiện đợt này): Nhận dạng đồng thời cảm xúc và biểu cảm vi mô (Micro-expressions); hỗ trợ nhận diện khuôn mặt xoay góc 3D phức tạp.

Thiết kế hệ thống

Kiến trúc hệ thống nhận dạng được module hóa thành 3 thành phần chính: Đơn vị thu nhận & phát hiện khuôn mặt, Khối mạng CNN trích xuất đặc trưng & phân loại, và Giao diện người dùng Web.

+-------------------------------------------------------------------------+
|                              HỆ THỐNG NHẬN DẠNG                         |
+-------------------------------------------------------------------------+
| [Camera Input] -> [OpenCV Frame Grabber (224x224x3)]                     |
|         │                                                               |
|         ▼                                                               |
| [YuNet Face Detector (ONNX Engine)]                                     |
|    - 5 Facial Landmarks (2 mắt, 1 mũi, 2 khóe miệng)                    |
|    - Score Threshold: 0.9, NMS Threshold: 0.3                           |
|         │                                                               |
|         ▼ (Cropped Bounding Box)                                        |
| [VGG16 Feature Extractor (Frozen Weights - ImageNet)]                   |
|    - Block 1: Conv2D(64, 3x3) x2 -> MaxPool(2x2)                       |
|    - Block 2: Conv2D(128, 3x3) x2 -> MaxPool(2x2)                      |
|    - Block 3: Conv2D(256, 3x3) x3 -> MaxPool(2x2)                      |
|    - Block 4: Conv2D(512, 3x3) x3 -> MaxPool(2x2)                      |
|    - Block 5: Conv2D(512, 3x3) x3 -> MaxPool(2x2) -> (7x7x512)         |
|         │                                                               |
|         ▼                                                               |
| [Flatten Layer: 25,088 Features]                                        |
|    - Dense(128, Activation='ReLU') + Dropout(0.5)                       |
|         ├──────────────────────────────────────────┐                    |
|         ▼ (Gender Branch)                          ▼ (Age Branch)       |
|   [Dense(1, Sigmoid)]                       [Dense(8, Softmax)]         |
|   Loss: Binary Cross-Entropy                Loss: Categorical C-Entropy |
|         │                                          │                    |
|         └────────────────────┬─────────────────────┘                    |
|                              ▼                                          |
|                [Streamlit UI Dashboard Overlay]                         |
+-------------------------------------------------------------------------+

Chi tiết Technology Stack

  • Ngôn ngữ lập trình: Python v3.8.10
  • Deep Learning Framework: TensorFlow v2.8.0 / Keras v2.8.0
  • Computer Vision: OpenCV v4.5.5 (tích hợp module cv2.FaceDetectorYN)
  • Mô hình Face Detection: YuNet ONNX weights (yunet.onnx)
  • Web UI & Streaming: Streamlit v1.10.0
  • Môi trường huấn luyện: Google Colaboratory (NVIDIA Tesla K80 GPU 12GB VRAM, 13GB System RAM)

Bảng cấu trúc tham số mạng VGG16 tùy biến

Tổng số tham số trong mô hình phân loại:

  • Mô hình Giới tính: 17.926.209 tham số (Trainable params: 3.211.521; Non-trainable params: 14.714.688).
  • Mô hình Độ tuổi: 17.927.112 tham số (Trainable params: 3.212.424; Non-trainable params: 14.714.688).

Methodology

Quy trình phát triển được thực hiện theo phương pháp lặp (Iterative Engineering Lifecycle):

  1. Thu thập và gán nhãn dữ liệu (Data Curation): Kết hợp các nguồn UTKFace (40%), VN-celeb (30%) và Web Scraped Images (Getty Images, Dreamstime, Google Images - 30%). Mỗi ảnh được chuẩn hóa theo quy ước: [Tuổi]_[Giới tính]_[Chủng tộc]_[STT].jpg.
  2. Tiền xử lý và Data Pipeline: Loại bỏ ảnh mờ, góc chụp lệch, chuẩn hóa độ phân giải về $224 \times 224 \times 3$, phân chia 80% Training ($N=14.400$) và 20% Validation ($N=3.600$).
  3. Huấn luyện mô hình Transfer Learning: Đóng băng (Freeze) các lớp ConvNet của VGG16, gắn đầu phân loại mới (Dense 128 + Dropout) và tinh chỉnh trọng số qua thuật toán tối ưu hóa Adam.
  4. Đánh giá và Tinh chỉnh siêu tham số: Đánh giá thông qua Confusion Matrix, Precision, Recall, F1-Score và kiểm thử thực tế đa điều kiện.

Implementation và kết quả

Development process

Quá trình xây dựng mô hình sử dụng kỹ thuật Fine-Tuning với framework Keras. Các công thức toán học và cài đặt code chuẩn hóa được thiết lập như sau:

1. Định nghĩa cấu trúc mạng phân loại

import tensorflow as tf
from tensorflow.keras.applications import VGG16
from tensorflow.keras.layers import Dense, Flatten, Dropout, Input
from tensorflow.keras.models import Model
from tensorflow.keras.optimizers import Adam

def build_demographic_model(num_classes=1, is_gender=True):
    # Khởi tạo backbone VGG16 với trọng số pre-trained ImageNet
    base_model = VGG16(
        weights='imagenet',
        include_top=False,
        input_shape=(224, 224, 3)
    )
    
    # Đóng băng các lớp Convolutional để giữ nguyên đặc trưng trích xuất
    for layer in base_model.layers:
        layer.trainable = False
        
    x = Flatten(name='flatten')(base_model.output)
    x = Dense(128, activation='relu', name='dense_custom')(x)
    x = Dropout(0.5, name='dropout_custom')(x)
    
    if is_gender:
        # Nhánh giới tính: Phân loại nhị phân (Binary Classification)
        output_layer = Dense(1, activation='sigmoid', name='gender_output')(x)
        loss_func = 'binary_crossentropy'
    else:
        # Nhánh độ tuổi: Phân loại 8 nhóm tuổi (Multiclass Classification)
        output_layer = Dense(num_classes, activation='softmax', name='age_output')(x)
        loss_func = 'categorical_crossentropy'
        
    model = Model(inputs=base_model.input, outputs=output_layer)
    model.compile(
        optimizer=Adam(learning_rate=0.0001),
        loss=loss_func,
        metrics=['accuracy']
    )
    return model

2. Cơ sở toán học của các hàm mục tiêu (Loss Functions)

  • Hàm mất mát phân loại giới tính (Binary Cross-Entropy):

$$L_{\text{gender}} = -\frac{1}{N} \sum_{i=1}^{N} \left[ y_i \log(\hat{y}_i) + (1 - y_i) \log(1 - \hat{y}_i) \right]$$

Trong đó $y_i \in {0, 1}$ (0: Nam, 1: Nữ) và $\hat{y}_i = \sigma(z) = \frac{1}{1 + e^{-z}}$ là xác suất dự đoán.

  • Hàm mất mát phân loại độ tuổi (Categorical Cross-Entropy):

$$L_{\text{age}} = -\frac{1}{N} \sum_{i=1}^{N} \sum_{c=1}^{C} y_{i,c} \log(\hat{y}_{i,c})$$

Với $C = 8$ lớp, các nhãn được mã hóa One-Hot Vector và xác suất $\hat{y}_{i,c}$ tính qua Softmax:

$$\text{Softmax}(z_j) = \frac{e^{z_j}}{\sum_{k=1}^{K} e^{z_k}}$$

  • Thuật toán tối ưu hóa Adam: Cập nhật moment bậc 1 ($m_t$) và moment bậc 2 ($v_t$) theo gradient $g_t$:

$$m_t = \beta_1 m_{t-1} + (1 - \beta_1) g_t, \quad v_t = \beta_2 v_{t-1} + (1 - \beta_2) g_t^2$$

$$\theta_t = \theta_{t-1} - \frac{\alpha}{\sqrt{v_t} + \epsilon} m_t$$

(Với $\alpha = 0.0001, \beta_1 = 0.9, \beta_2 = 0.999, \epsilon = 10^{-7}$, Batch size = 8, Epochs = 100).

3. Phát hiện khuôn mặt bằng YuNet

import cv2

# Khởi tạo bộ phát hiện YuNet Face Detector
detector = cv2.FaceDetectorYN.create(
    model='yunet.onnx',
    config='',
    input_size=(320, 320),
    score_threshold=0.9,
    nms_threshold=0.3,
    top_k=5000
)

def extract_face(frame, detector):
    h, w, _ = frame.shape
    detector.setInputSize((w, h))
    _, faces = detector.detect(frame)
    
    if faces is not None:
        for face in faces:
            # Lấy tọa độ bounding box khuôn mặt
            box = face[0:4].astype(int)
            x, y, bw, bh = box
            # Cắt và resize đúng kích thước đầu vào của VGG16 (224x224)
            face_roi = frame[max(0, y):y+bh, max(0, x):x+bw]
            if face_roi.size > 0:
                face_resized = cv2.resize(face_roi, (224, 224))
                return face_resized, box
    return None, None

Testing và validation

Hiệu năng của mô hình phân loại giới tính được đánh giá trên tập kiểm thử độc lập ($N_{\text{val}} = 3.600$ mẫu):

Ma trận nhầm lẫn (Confusion Matrix) - Giới tính

Nhãn thực tế \ Nhãn dự đoán Dự đoán: Nam (Predicted Male) Dự đoán: Nữ (Predicted Female) Tổng số mẫu
Thực tế: Nam (True Male) 1.676 ($TM$) 121 ($FF$) 1.797
Thực tế: Nữ (True Female) 107 ($FM$) 1.696 ($TF$) 1.803
Tổng dự đoán 1.783 1.817 3.600

Chỉ số đánh giá định lượng

$$\text{Accuracy} = \frac{TM + TF}{TM + TF + FM + FF} = \frac{1676 + 1696}{3600} = \frac{3372}{3600} \approx \mathbf{93.67%}$$

  • Độ chính xác lớp Nam (Precision Male): $\frac{TM}{TM + FM} = \frac{1676}{1676 + 107} = \mathbf{93.99%}$
  • Độ thu hồi lớp Nam (Recall Male): $\frac{TM}{TM + FF} = \frac{1676}{1676 + 121} = \mathbf{93.26%}$
  • F1-Score lớp Nam: $2 \times \frac{0.9399 \times 0.9326}{0.9399 + 0.9326} = \mathbf{93.62%}$
  • Độ chính xác lớp Nữ (Precision Female): $\frac{TF}{TF + FF} = \frac{1696}{1696 + 121} = \mathbf{93.34%}$
  • Độ thu hồi lớp Nữ (Recall Female): $\frac{TF}{TF + FM} = \frac{1696}{1696 + 107} = \mathbf{94.06%}$
  • F1-Score lớp Nữ: $2 \times \frac{0.9334 \times 0.9406}{0.9334 + 0.9406} = \mathbf{93.70%}$

Kết quả đạt được

Trong quá trình huấn luyện 100 epochs, mô hình giới tính đạt độ chính xác ~98% trên tập training và ~94% trên tập validation, với Training Loss đạt mức thấp $\approx 0.05$.

Kiểm thử thực nghiệm trong các điều kiện môi trường

Điều kiện thực nghiệm Tỷ lệ phát hiện khuôn mặt (YuNet) Độ chính xác Giới tính Độ chính xác Độ tuổi (±1 nhóm) Thời gian phản hồi (FPS)
Ánh sáng chuẩn, trực diện (Ban ngày) 99.2% 94.5% 88.7% 22 - 25 FPS
Góc nghiêng (30 - 45 độ) 91.4% 88.2% 79.4% 22 - 24 FPS
Thiếu sáng (Low-light) 82.0% 81.3% 71.0% 20 - 22 FPS
Đeo phụ kiện (Kính mắt, khẩu trang) 76.5% 78.0% 65.2% 21 - 24 FPS

Đổi mới và đóng góp

  1. Chuẩn hóa tập dữ liệu cân bằng nhân chủng học: Đóng góp bộ dữ liệu 18.000 ảnh chuẩn hóa với 56% khuôn mặt người châu Á, giải quyết hiện tượng suy giảm hiệu năng vốn có của các mô hình chỉ huấn luyện trên tập dữ liệu phương Tây.
  2. Cấu trúc phân lớp 8 nhóm tuổi liên tục: Thay thế các khoảng tuổi phân mảnh truyền thống bằng 8 lớp liên tục từ 1 đến 70+ tuổi, đảm bảo mọi đối tượng người dùng đều được định danh vào phân lớp tương ứng.
  3. Kiến trúc Pipeline tách biệt hiệu năng cao: Tách rời nhiệm vụ Face Detection bằng YuNet (ONNX engine) và Classification bằng Transfer Learning VGG16, giúp hệ thống đạt tốc độ xử lý thời gian thực (~24 FPS) mà không đòi hỏi phần cứng công nghiệp đắt tiền.
  4. Cải thiện độ chính xác phân loại: Nâng cao độ chính xác nhận diện giới tính người Việt/châu Á từ mức ~82% của các mô hình tiền nhiệm lên 93.67%.

Ứng dụng thực tế và triển khai

graph TD
    A[Mô hình YuNet + VGG16] --> B[Smart Retail & Digital Signage]
    A --> C[E-Commerce Recommendation Engine]
    A --> D[Hệ thống điểm danh & Kiểm soát an ninh]
    B --> B1[Phát quảng cáo cá nhân hóa theo độ tuổi/giới tính]
    C --> C1[Tự động gợi ý danh mục sản phẩm phù hợp]
    D --> D1[Thống kê mật độ nhân khẩu học khách hàng theo giờ]

Các kịch bản ứng dụng

  • Biển quảng cáo kỹ thuật số thông minh (Smart Digital Signage): Tự động phát hiện độ tuổi và giới tính của khách hàng đứng trước màn hình hiển thị để phát nội dung quảng cáo mục tiêu (Targeted Advertising), tối ưu hóa tỷ lệ chuyển đổi ROI lên đến 25-35%.
  • Thương mại điện tử & Kiosk tự phục vụ: Tích hợp camera tại quầy Kiosk bán lẻ để gợi ý giao diện và danh mục sản phẩm (thời trang, mỹ phẩm, công nghệ) phù hợp với độ tuổi khách hàng.
  • Phân tích mật độ khách hàng (Customer Demographics Analytics): Cung cấp biểu đồ thống kê lưu lượng khách hàng theo giới tính và nhóm tuổi phục vụ phòng Marketing và Nghiên cứu thị trường.

Yêu cầu triển khai hệ thống (Deployment Requirements)

  • Hệ điều hành: Linux (Ubuntu 18.04+) hoặc Windows 10/11 64-bit.
  • Phần cứng tối thiểu: CPU Intel Core i5 Gen 8 / AMD Ryzen 5, 8GB RAM, Webcam HD 720p.
  • Phần cứng khuyến nghị: NVIDIA GTX 1050 Ti (hoặc tương đương) để đạt tốc độ xử lý trên 30 FPS.
  • Môi trường: Python 3.8+, TensorFlow 2.8+, OpenCV-Python, Streamlit.

Hạn chế và hướng phát triển

Hạn chế kỹ thuật

  • Kiến trúc VGG16 có dung lượng bộ nhớ tương đối lớn (17.92 triệu tham số, kích thước file trọng số .h5 khoảng ~70MB), gây tiêu tốn tài nguyên khi triển khai trên các thiết bị nhúng IoT vi điều khiển cấp thấp.
  • Khả năng nhận diện độ tuổi chính xác bị suy giảm trong các trường hợp trang điểm đậm, phẫu thuật thẩm mỹ hoặc điều kiện ánh sáng gắt gây bóng lóa khuôn mặt.

Hướng phát triển tương lai

  • Tối ưu hóa kiến trúc mạng: Chuyển đổi backbone sang MobileNetV3-Large hoặc ShuffleNetV2 kết hợp lượng tử hóa trọng số (TensorRT / OpenVINO / INT8 Quantization) để giảm 75% kích thước mô hình và triển khai trên Raspberry Pi 4 / Jetson Nano.
  • Huấn luyện Multi-Task Learning: Thiết kế mô hình một backbone duy nhất với 2 đầu ra song song (Dual-head: Gender & Age) để giảm tải 50% khối lượng tính toán trích xuất đặc trưng.
  • Mở rộng dữ liệu góc nghiêng: Bổ sung tập dữ liệu khuôn mặt nghiêng (yaw/pitch góc 45-60 độ) và ánh sáng yếu có hỗ trợ thuật toán cân bằng độ sáng tự động (CLAHE).

Đối tượng hưởng lợi

  • Sinh viên & Học viên: Cung cấp tài liệu tham khảo chi tiết về quy trình xây dựng mạng CNN, kỹ thuật Transfer Learning với VGG16 và tiền xử lý dữ liệu khuôn mặt.
  • Kỹ sư AI/Computer Vision: Mẫu mã nguồn hoàn chỉnh kết hợp giữa OpenCV YuNet và TensorFlow/Keras phục vụ xây dựng ứng dụng thị giác máy tính thời gian thực.
  • Doanh nghiệp Bán lẻ & Quảng cáo: Giải pháp công nghệ phân tích khách hàng chi phí thấp, dễ tích hợp vào phần mềm quản lý sẵn có.
  • Nhà nghiên cứu: Cơ sở dữ liệu và phương pháp luận về việc cân bằng nhân chủng học trong các bài toán nhận dạng sinh trắc học.

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

1. Hệ thống có thể chạy mượt mà mà không cần GPU rời không?

Có. Nhờ việc sử dụng YuNet (mô hình phát hiện khuôn mặt ONNX tối ưu bằng C++) và đóng băng 13 lớp trích xuất đặc trưng của VGG16, hệ thống hoàn toàn đạt tốc độ 15–20 FPS trên CPU Intel Core i5 thế hệ 8 trở lên khi xử lý luồng webcam $640 \times 480$.

2. Tại sao đồ án lại chọn VGG16 thay vì các kiến trúc mới hơn như ResNet hay EfficientNet?

Kiến trúc VGG16 sở hữu cấu trúc các lớp tích chập đồng nhất ($3 \times 3$ filters), khả năng trích xuất các đặc trưng biên và khối cục bộ (mắt, khóe môi, nếp nhăn) rất rõ nét, cực kỳ phù hợp cho bài toán phân loại nhân khẩu học khuôn mặt khi áp dụng Transfer Learning trên tập dữ liệu kích thước trung bình (18.000 ảnh).

3. Làm thế nào để phân loại độ tuổi chính xác hơn khi khuôn mặt bị lão hóa không đồng đều?

Hệ thống giải quyết vấn đề này bằng cách chia độ tuổi thành các nhóm biên độ 10 năm (ví dụ 20-29, 30-39) thay vì dự đoán một con số cụ thể (hồi quy). Điều này cho phép mô hình chấp nhận sai số sinh học tự nhiên giữa tuổi sinh học và độ tuổi thị giác của khuôn mặt.

4. Dữ liệu khuôn mặt người dùng có bị lưu trữ gây lo ngại về quyền riêng tư không?

Không. Hệ thống chỉ trích xuất các đặc trưng hình thái học tức thời (vector đặc trưng) để đưa qua hàm kích hoạt Softmax/Sigmoid và hiển thị nhãn dự đoán. Không có dữ liệu sinh trắc học cá nhân hay hình ảnh nhận dạng danh tính nào được lưu trữ vào cơ sở dữ liệu.

5. Chi phí triển khai giải pháp này trong thực tế ước tính là bao nhiêu?

Chi phí triển khai thuần túy phần mềm là 0 VNĐ do sử dụng hoàn toàn các công nghệ mã nguồn mở (Python, OpenCV, TensorFlow, Streamlit). Chi phí phần cứng chỉ bao gồm 01 camera USB thông dụng và máy tính cấu hình văn phòng cơ bản.


Kết luận

Đồ án tốt nghiệp "Thiết kế mô hình mạng CNN ứng dụng trong nhận dạng độ tuổi và giới tính" đã giải quyết trọn vẹn bài toán phân tích nhân khẩu học khuôn mặt trong thời gian thực. Bằng việc xây dựng tập dữ liệu chuẩn hóa 18.000 hình ảnh cân bằng với 56% khuôn mặt người châu Á, kết hợp kiến trúc phát hiện khuôn mặt siêu nhẹ YuNet và mạng phân loại tối ưu VGG16, hệ thống đạt độ chính xác phân loại giới tính 93.67% trên tập kiểm thử và hoạt động ổn định trên ứng dụng Web tương tác. Đây là tiền đề công nghệ vững chắc để mở rộng phát triển thành các giải pháp thương mại hoàn chỉnh trong lĩnh vực bán lẻ thông minh, quảng cáo hướng đối tượng và bảo mật sinh trắc học hiện đại.