Phân biệt vân tay Thật – Giả
Một hệ thống sử dụng Deep Learning (CNN) để phân biệt ảnh vân tay thật và giả (altered) từ bộ dữ liệu SOCOFing.
📋 Mô tả chung
Mục tiêu: Xây dựng mô hình Convolutional Neural Network (CNN) để phân loại vân tay thật hoặc giả.
Luồng xử lý:
Chuẩn bị dataset và chia thành train/val/test.
Huấn luyện mô hình với augmentation và scheduler.
Lưu model tốt nhất và lịch sử training.
Vẽ đồ thị loss/accuracy.
Giao diện đơn giản bằng Tkinter để dự đoán ảnh mới.
🚀 Môi trường thực nghiệm
OS: Windows 10 / Ubuntu 18.04+
Python: 3.8 trở lên
Thư viện chính:
torch
torchvision
pillow
matplotlib
tkinter (Windows: đã có sẵn; Ubuntu: sudo apt install python3-tk)
⚙️ Cài đặt chi tiết
# 1. Clone repository
git clone https://github.com/username/repo-fingerprint.git
cd repo-fingerprint
# 2. Tạo và kích hoạt môi trường ảo
python -m venv .venv
# Windows:
.\.venv\Scripts\activate
# Linux/Mac:
source .venv/bin/activate
# 3. Cập nhật pip và cài đặt dependencies
pip install --upgrade pip
pip install torch torchvision pillow matplotlib🗂️ Cấu trúc thư mục dự án
CNN/ # Thư mục gốc của dự án
├─ dataset/ # Dữ liệu đã chia sẵn cho huấn luyện và đánh giá
│ ├─ train/ # Dữ liệu huấn luyện (70%)
│ ├─ val/ # Dữ liệu xác thực (15%)
│ └─ test/ # Dữ liệu kiểm thử (15%)
│
├─ SOCOFing/ # Dữ liệu gốc từ bộ SOCOFing
│ ├─ Altered/ # Vân tay giả, gồm:
│ │ ├─ Altered-Easy/
│ │ ├─ Altered-Medium/
│ │ └─ Altered-Hard/
│ └─ Real/ # Vân tay thật
│
├─ best_fingerprint_model.pth # Trọng số mô hình CNN tốt nhất đã huấn luyện
├─ training_metrics.pth # Lưu lại giá trị loss & accuracy qua các epoch
│
├─ cnn_model.py # Định nghĩa kiến trúc mạng CNN
├─ train.py # Script chính để huấn luyện mô hình
├─ main.py # (Tùy chọn) script chính để chạy thử nghiệm
├─ plot_metrics.py # Vẽ biểu đồ loss và accuracy
```text
🎯 Hướng dẫn sử dụng
1. Chia dataset
```bash
python split_fingerprint_dataset.py
Kết quả: thư mục cnn/dataset/{train,val,test}/{real,fake} được tạo.
- Huấn luyện mô hình
python train.pyTheo dõi tiến trình training trên console.
Model tốt nhất được lưu tại best_fingerprint_model.pth.
Metrics training được lưu tại training_metrics.pth.
- Vẽ đồ thị Loss/Accuracy
python plot_metrics.pyMàn hình hiển thị 3 biểu đồ: Train Loss, Train Accuracy, Validation Accuracy.
- Chạy giao diện dự đoán
python main.pyCửa sổ Tkinter mở, bấm Chọn ảnh vân tay, chọn file ảnh để kiểm tra Real/Fake.
🔧 Tùy chỉnh
Split ratio: chỉnh split_ratios trong split_fingerprint_dataset.py.
Tham số training: trong train.py, điều chỉnh batch_size, learning_rate, num_epochs, patience.