Phân cụm ảnh bằng các thuật toán K-Means, DBSCAN, OPTICS và trực quan hóa dữ liệu bằng PCA, t-SNE.
Toàn bộ chương trình được chạy thông qua file main.py.
- Python >= 3.10
- Hệ điều hành: Windows / Linux / macOS
Cài đặt trực tiếp bằng pip:
pip install numpy opencv-python matplotlib scikit-learn
Ảnh dùng để phân cụm được đặt trong thư mục như sau:
data/
└── input/
├── img1.jpg
├── img2.png
├── ...
Kết quả phân cụm (ảnh đã chia cụm, file nhãn, hình trực quan hóa, …) sẽ được lưu vào các thư mục output mà nhóm cấu hình trong code.
Đứng ở thư mục gốc của project và chạy:
-
Phân cụm bằng K-Means
python main.py kmeans -
Phân cụm bằng DBSCAN
python main.py dbscan -
Phân cụm bằng OPTICS
python main.py optics
main.py sẽ:
- Gọi module tiền xử lý (
Preprocessing.py) để đọc & chuẩn hóa ảnh. - Gọi thuật toán tương ứng trong
kMeans.py,dbscan.pyhoặcoptics.py. - (Nếu được cấu hình) lưu nhãn cụm và/hoặc gọi
PCA_t-SNE.pyđể trực quan hóa kết quả.
- Nếu thay đổi tên thư mục dữ liệu (ví dụ không dùng
data/input/), cần chỉnh lại đường dẫn tương ứng trong các file Python. - Có thể chỉnh các tham số thuật toán (K, eps, min_samples, …) trực tiếp trong các file:
kMeans.pydbscan.pyoptics.py