# AI Final Project - Báo cáo ###### tags: `COTAI LHP` Họ và Tên: Trần Công Thịnh - 11CT2 Vũ Thị Quỳnh Nga - 11CA3 ### Mục tiêu của Project * Phân biệt mặt người thật và mặt người được tạo bởi GANs. * AI sẽ giải quyết vấn đề trên như thế nào: Các model AI sẽ được train và ensemble để phân biệt mặt người thật/giả một cách chính xác nhất * Scope of work: Cố gắng đạt độ chính xác cao nhất có thể, tổng kết được các kĩ thuật đã học và tổng hợp được những kĩ thuật mới. ### Chi tiết quá trình thực hiện - Load và phân tích data: - Tập train: *8000* tấm, kích thước *256x256*; 2 class: 1 (*fake*) và 0 (*real*), mỗi class *4000* tấm => Balanced dataset - Tập test: *12000* tấm, kích thước *256x256* - Chia train/val tỉ lệ 80/20 (*6400 ảnh/1600 ảnh*) (*random_state=42*) - Tùy chỉnh ảnh để tạo thêm dữ liệu (data augmentation): - Horizontal/Vertical Shift (dịch chuyển ảnh ngang/dọc): không xuất hiện lỗi - Rotation (xoay): xoay ảnh xuất hiện lỗi (xem trong file FakeorRealImage.ipynb) - Brightness (tùy chỉnh độ sáng): với brightness_range = [0.8, 1.1], những tấm hình tối nhất vẫn có thể nhìn được - Zoom (phóng to, thu nhỏ, ép hình ngang/dọc): xuất hiện lỗi (xem trong file FakeorRealImage.ipynb) - Preprocessing image: rescale: 1/.255 (SAI. Cần sử dụng hàm preprocessing image riêng cho từng pretrained model) - Các pretrained model đã thử nghiệm: ResNet152, Xception (bị overfit vì dùng sai phương pháp preprocessing image), EfficientNetB7, InceptionResNetV2 (bị overfit vì dùng sai phương pháp preprocessing image). - Metrics: accuracy - Optimizer: Adam - Learning rate: 1e-5 - EarlyStopping: patience = 10 - ModelCheckpoint: save_best_only = True, save_weights_only = False - Max Epoch = 50 - Batchsize: 16 (96 nếu sử dụng TPU) - Thử nghiệm algorithm mới để tùy chỉnh learning_rate: ReduceLROnPlatue để giảm lr mỗi khi val_loss không giảm - Submit predictions trên tập test, sử dụng các model đúng trên 99% để ensemble (Resnet152, EfficientNetB7) - Ensemble: - Strategy: Clipping(0.04, 0.96), Blending(*ensemble_pred* = 0.5*Resnet_pred* + 0.5*EfficientNet_pred*) - Để tìm ra strategy hiệu quả, chúng em đã thử trên tập val và chọn strategies có log_loss thấp nhất - Demo: sử dụng thư viện gradio - Final Result trên tập test: 99,77% ### Implepment Plan 1/5 - 8/5: Load dữ liệu và thử các cách augmentation 8/5 - 15/5: Train các Model và Ensemble 15/5 - 17/5: Viết báo cáo, soạn Powerpoint. ### Kết quả đạt được ![](https://i.imgur.com/eZZrfkG.png) ### Link các thành phần liên quan * [Link weight (.hdf5)](https://drive.google.com/drive/folders/1BHIh8p08TQvfreLLZnWOaA_RL8nWNTVa?usp=sharing) * [Link dataset](https://drive.google.com/drive/folders/1zE4g0rGf27Sjzz3-RTwQ4K4O0khzglxe?usp=sharing) * [Link Presentation](https://docs.google.com/presentation/d/12o2xQ4W0sg7fAQ4GHayeycuZOKQu6MArjVX_nGfaGbA/edit?usp=sharing)