Mục đích tạo Repo này lưu trữ quá trình học tập và nghiên cứu.
- Họ và tên: Huỳnh Phúc Hưng
- MSSV: 3122411073
- Lớp: DCT122C3
- Giảng viên hướng dẫn: ThS.NCS Phùng Thái Thiên Trang
Repository này bao gồm 2 phần chính: Các bài tập quá trình/Seminar và Đồ án cuối kỳ.
| Tên File/Thư mục | Mô tả |
|---|---|
Báo cáo đồ án...docx |
Báo cáo chi tiết toàn văn của Nhóm 1 |
mobilenet_huynhphuchung.ipynb |
Source code chính của đồ án cá nhân (MobileNetV2) |
Resnet.ipynb |
Bài tập tìm hiểu về mạng ResNet |
K_means.ipynb |
Bài tập thuật toán phân cụm K-Means |
numpy_và_pandas.ipynb |
Bài tập xử lý dữ liệu với NumPy và Pandas |
matplotlib.ipynb |
Bài tập trực quan hóa dữ liệu |
OOP.ipynb |
Bài tập Lập trình hướng đối tượng trong Python |
vidu1.ipynb, vidu2.ipynb |
Các bài tập ví dụ demo seminar |
Cùng một số file bài tập, tài liệu khác đã bị mất do bị Memory leak
Đề tài: Hệ thống học sâu hợp nhất nhận diện Sắc tộc, Độ tuổi và Giới tính.
Trong kỷ nguyên số hóa, phân tích khuôn mặt (Face Analysis) là bài toán trọng tâm. Nhóm 1 đã xây dựng hệ thống FaceFusion - một hệ thống học sâu đa nhiệm (Multi-Task Learning) có khả năng giải quyết đồng thời 3 bài toán chỉ với một lần suy diễn:
- Age Estimation: Phân loại nhóm tuổi.
- Gender Classification: Nhận diện giới tính (Nam/Nữ).
- Ethnicity Recognition: Phân loại chủng tộc (5 nhóm).
Dữ liệu sử dụng: Bộ dữ liệu UTKFace (hơn 20.000 ảnh).
Trong khi các thành viên khác tập trung vào độ chính xác với các mô hình lớn (VGG16, ResNet, EfficientNet), tôi chọn hướng tiếp cận tối ưu hóa tốc độ và tài nguyên để hướng tới các ứng dụng thời gian thực (Real-time) trên thiết bị di động.
- Kiến trúc (Architecture): Sử dụng MobileNetV2 (pre-trained trên ImageNet) làm backbone trích xuất đặc trưng.
- Cơ chế Multi-Head: Từ vector đặc trưng chung, mạng rẽ nhánh thành 3 đầu ra riêng biệt (3 fully connected layers) cho Tuổi, Giới tính và Chủng tộc.
-
Hàm mất mát (Loss Function): Tổng hợp CrossEntropyLoss của 3 nhánh:
$L_{total} = L_{age} + L_{gender} + L_{race}$ .
Sau quá trình huấn luyện 15 epochs trên Google Colab (T4 GPU), mô hình đạt được kết quả khả quan, cân bằng giữa tốc độ và độ chính xác:
| Thuộc tính (Task) | Độ chính xác (Accuracy) | Nhận xét |
|---|---|---|
| Giới tính (Gender) | **~ 88.0%** | Cao nhất, đặc trưng rõ ràng |
| Chủng tộc (Race) | **~ 83.0%** | Ổn định đối với một mạng nhẹ (Lightweight) |
| Độ tuổi (Age) | **~ 77.0%** | Thấp hơn do sự giao thoa giữa các nhóm tuổi |
Demo nhận diện: Hệ thống có khả năng hiển thị bounding box kèm nhãn và độ tin cậy cho từng thuộc tính.
(Ví dụ kết quả chạy thực tế)
Output: Asian (56.6%), Male (74.1%), Age 0-14 (72.5%)
Output: Asian (66.3%), Male (85.6%), Age 0-14 (88.6%)
- Ưu điểm: Tốc độ suy diễn cực nhanh, số lượng tham số ít, chạy mượt mà trên CPU/Colab free, phù hợp triển khai mobile.
- Hạn chế: Còn hiện tượng thiên kiến dữ liệu (bias) với người da trắng, độ chính xác tuổi cần cải thiện thêm.
Để chạy file mobilenet_huynhphuchung.ipynb hoặc các file bài tập khác:
- Môi trường: Khuyến khích sử dụng Google Colab để tận dụng GPU miễn phí.
- Dữ liệu:
- Cần có file
kaggle.jsonđể tải dataset UTKFace nếu muốn train lại mô hình. - Mount Google Drive để lưu/load model checkpoint.
- Cần có file
- Thư viện:
import torch import torchvision import cv2 import numpy as np # ... (xem chi tiết trong notebook)
- Chạy Demo:
- Tải file trọng số
mobilenet_multihead_best.pth(nếu có). - Chạy cell
Inferencevà trỏ đường dẫn tới ảnh cần test.
- Tải file trọng số
- Sandler, M., et al. "MobileNetV2: Inverted Residuals and Linear Bottlenecks". CVPR 2018.
- UTKFace Dataset - Kaggle.
- Báo cáo đồ án cuối kỳ môn Python - Nhóm 1, ĐH Sài Gòn.
Developed by Huỳnh Phúc Hưng - 2025



