# Phân tích số liệu - 20202 ## Phân cụm ảnh Bài toán: phân cụm ảnh bằng cách đo độ similarity của 2 ảnh (độ do tự chọn sau, tùy thuộc dataset) + tối ưu hyper ## Bài toán * Những bài toán có thể áp : * pseudo-label: (Thuật toán bán giám sát - xử lý dữ liệu để tăng độ chính xác: https://datawhatnow.com/pseudo-labeling-semi-supervised-learning/) - bỏ ứng dụng này :) * https://openaccess.thecvf.com/content_ICCV_2017/papers/Chang_Deep_Adaptive_Image_ICCV_2017_paper.pdf * https://arxiv.org/pdf/2103.09382v1.pdf * content-based image retrieval: * https://medwelljournals.com/abstract/?doi=jeasci.2017.8021.8024 * https://pdfs.semanticscholar.org/d849/54a9acc5066476655739eaba2d9f566f3497.pdf * content-based image annotation: * https://link.springer.com/chapter/10.1007/978-3-642-05036-7_61 * https://dl.acm.org/doi/10.1145/1180639.1180764 ## Flow model: ![](https://i.imgur.com/6L0kang.png) ## Data * Các bộ dataset có thể chọn: * OBJ * CIFAR-100 * Noname of TUAN cx phân loại obj * Phân cụm mặt người: * LFW ## Các thuật toán * **Kmeans** * **K-Medoids** * **DBSCAN** * Graph based * Deep Clutering ## Lý thuyết evaluate * Metric đánh giá của model * Jaccard dùng để validate giữa kết quả phân cụm và label * Cụ thể Jaccard index là so sánh giữa 2 set và do Kmeans thông thường đã clear giữa các clusters là mỗi điểm chỉ thuộc 1 cluster duy nhất $\rightarrow$ chỉ so sánh giữa labels và clusters. * Thì ở đây sẽ tạo ra một matrix $M_{rl\times c}$ với $rl, c$ lần lượt là số lượng real_labels và clusters: $M_{ij}=Jaccard(i,j)$ thì nếu thuật toán tốt thì tương ứng với mỗi cluster sẽ là 1 real_label. * Elbow * AIC, BIC * Silhouette ## Experiment ### Mô tả dataset ### Setting ### Result #### Three study cases * Dữ liệu: 1. raw data: flatten 1x32x32 to a vector (uncomment GrayScale trong dataloader) 2. Xử lý basic, normalization, 1 vài filter,.... * Dùng qua một vài bộ lọc: sobel, hough, hog * Qua bộ lọc có thể qua vài thuật toán RCNN, * Có thể concat với raw image 3. Model to extract feature map * mỗi bộ data đều có pretrain model public * Deep Polynomial Neural Network * Pi Net * Mỗi loại dữ liệu được sử dụng so sánh với các thuật toán cluster đã được implement * Trong từng thuật toán cluster, có thể xem xét nhiều metric (có thể tự định nghĩa) ## Những công việc cần xem xét ### Cải thiện độ hiệu quả mô hình * Đoạn xử lý data - cụ thể là model pretrain ### Cần phần code thể hiện kết quả đối với input là 1 image: * Bài pseudo-label: cho vô 1 image và đầu ra là label tương ứng * Bài content-based image retrival: input 1 image và output là N image giống > Dĩ nhiên phần thể hiện trên chỉ là cách show output khác nhau của 1 quá trình - chỉ ở phần output ### Chuẩn bị thêm 1 vài task cơ bản (phòng trh chưa xử lý kịp để ra kết quả tốt cho image clustering): * dimension reduction * https://medium.com/analytics-vidhya/image-compression-using-k-means-clustering-and-principal-component-analysis-in-python-893fd37e8e15 * reduction colors # DA_20202: 19/8/2021 ## Tuấn - [x] Chạy kết quả với pretrained là Autoencoder - [x] Ra cái hình Elbow - [x] Hình N images gần nhất với centroid của mỗi cụm - [x] Viết ở trong overleaf phần Autoencoder ## Thành - [x] Chuyển báo cáo sang template của Thành - [ ] Quy trình * Kéo dài phần quy trình ## Đạt - [ ] Quy trình * Vẽ lại hình - [x] Mô tả kết quả Jaccard - trực quan hơn - [x] Sihouette - [x] DBSCAN ## Tối 19/08/2021 - 11h59 trưa 20/08/2021 #### Dũng - [ ] Bổ sung Kmeans - [ ] Viết GMM - [ ] Silhouette (báo cáo + pull request) (clusters,embedding_each_points) - [ ] Visualization GMM - [ ] Note cái experiment - [ ] GMM so sánh Kmeans dựa trên visulization #### Tuấn - [x] Autoencoder trong báo cáo + giải thích tại sao AE có thể tốt hơn raw data - [x] Visualization mỗi cụm : 5x5 images gần nhất (để dễ nhìn) - [x] Elbow - [x] Chốt cái embedding.npy - [ ] Note cái experiment - [ ] Input 1 ảnh và load ra các ảnh similar - [x] Up file embedding of raw data #### Đạt - [x] Resnet tại sao tốt hơn (10') - [x] Ghi phần két quả Jacccard - ĐÃ XONG KẾT QUẢ NHƯNG CHƯA BÌNH LUẬN (1H) - Do Jaccard là giữa 2 tập mà Kmeans thì clear giữa các cụm nên đoạn này chỉ cần nói khi đặt vô bài toán pseudo-label - [x] Nhận file npy của Dũng r chạy trên Elbow + Jaccard + Silhouette - [x] Quy trình - [x] Kéo dài phần quy trình (20') - [x] Vẽ lại hình (10') - [x] Note cái experiment - [ ] Input 1 ảnh và load ra các ảnh similar - [ ] Thêm cái hình cho Jaccard matrix #### Thành - [ ] ##### Experiment list : so sánh dựa trên bảng và Visulization (lấy code Tuấn) | STT | Data preprocessing | Thuật toán | Số cụm | Jaccard | Phân công tính các metric | | ---- | --------------------------- | ---------- | ------------------------------------------------------------ | ------- | ------------------------- | | 1 | Dữ liệu gốc | Kmeans | a | | Dũng gửi Đạt tính Jaccard | | 2 | | GMM | | | Dũng gửi Đạt tính Jaccard | | 3 | Dữ liệu qua pretrained : AE | Kmeans | nếu cụm ở phần dữ liệu gốc chưa được tối ưu thì sử dụng đúng với a | | Tuấn | | 4 | | GMM | | | Dũng gửi Đạt tính Jaccard | | 5 | Dữ liệu qua ResNet | Kmeans | | | Đạt | | 6 | | GMM | | | Dũng gửi Đạt tính Jaccard |