Phát hiện khuôn mặt đã qua chỉnh sửa
Bạn đang xem tài liệu "Phát hiện khuôn mặt đã qua chỉnh sửa", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Tài liệu đính kèm:
- phat_hien_khuon_mat_da_qua_chinh_sua.pdf
Nội dung text: Phát hiện khuôn mặt đã qua chỉnh sửa
- PHÁT HIỆN KHUÔN MẶT ĐÃ QUA CHỈNH SỬA Bùi Trung Hiếu, Nguyễn Hoàng Tuấn, Nguyễn Thế Việt Hoàng Khoa Công nghệ Thông tin, Trường Đại học Công nghệ TP. Hồ Chí Minh GVHD: ThS. Bùi Mạnh Toàn TÓM TẮT Gần đây, các kỹ thuật chỉnh sửa khuôn mặt video, hình ảnh đang dần trở nên phổ biến và dễ tiếp cận hơn. Chỉ với vài từ khóa về chỉnh sửa khuôn mặt thì đã xuất hiện hàng loạt các ứng dụng, trang trực tuyến cho phép người dùng chỉnh sửa một cách dễ dàng. Khả năng tiếp cận phổ biến và dễ dàng như vậy dẫn đến các hệ lụy nghiêm trọng và không thể kiểm soát. Tràn ngập các video, hình ảnh giả mạo đưa thông tin sai lệch làm ảnh hưởng đến các cá nhân, tổ chức nói riêng và cả xã hội nói chung. Do đó, cần phải phát triển một công cụ có thể phát hiện và xác thực mức độ thật giả của một video, hình ảnh đang phát tán trên mạng. Bài báo này mô tả cách tiếp cận và sử dụng giải pháp trí tuệ nhân tạo để phát hiện các video, hình ảnh có khuôn mặt đã qua chỉnh sửa. Đặc biệt, sử dụng mô hình mạng thần kinh học sâu có tên Xception. Một loại mô hình đã được phát triển và kết quả thu được đã được xác minh. Từ khóa: Deepfake, Deep Learning, FaceForensics, Fake video, Phát hiện giả mạo. 1 GIỚI THIỆU 1.1 Mô hình mạng Xception 1.1.1 Lý thuyết Xception là từ viết tắt của Extreme Inception, là một phiên bản tinh chỉnh và phát triển dựa trên mô hình Inception V3. Là một mô hình mạng thần kinh học sâu được công bố bởi tác giả Francois Chollet vào tháng 4 năm 2017 [2]. Xception có thể học rất sâu mà không làm hỏng đi cấu trúc so với dữ liệu đầu vào, nghĩa là không bị sai sót khi mô hình đi quá sâu. Ngoài ra, Xception có thể hoạt động tốt khi chúng ta có dữ liệu rất ít nhưng muốn mô hình học chính xác và không bị quá khớp so với dữ liệu đầu vào, còn gọi là Overfitting. Nó sẽ áp dụng rất nhiều bộ lọc để tạo ra nhiều dữ liệu cho việc học sâu. So với các loại mô hình mạng thần kinh học sâu khác [6], Xception cho phép giảm các tham số nhưng vẫn giữ được cấu trúc và độ chính xác qua từng lớp, nhằm cải thiện hiệu suất tính toán và thời gian. 1.1.2 Ý tưởng đặc biệt của Xception Trong mô hình học sâu được nói đến trong [2], việc tăng số lượng các lớp trong mạng làm giảm độ chính xác, càng đi sâu độ chính xác giữa các lớp sẽ càng thấp vì thế mô hình Xception sử dụng kết nối dư nhằm kết nối trực tiếp đầu vào của lớp n với lớp n+x để giữ được độ chính xác. Sử dụng phép tích chập chuyển đổi tách rời theo chiều sâu (Depthwise Separable Convolutions) làm giảm số lượng tham số nhưng vẫn học sâu một cách chi tiết. 78
- 1.2 Phương pháp hoạt động 1.2.1 Luồng nhập Luồng nhập gồm có 4 mô đun, mô đun đầu tiên là 2 lớp tích chập (Convolutional) lần lượt là 32 và 64 bộ lọc. Ở mô đun đầu tiên, 2 lớp tích chập tạo ra hình ảnh với nhiều bộ lọc khác nhau nhằm trích xuất những điểm đặc biệt của ảnh như: mắt, mũi, miệng, các góc cạnh đặc biệt của ảnh và làm dữ liệu đầu vào cho các lớp tiếp theo. Các mô đun còn lại, mỗi mô đun có 1 lớp tích chập phân tách (Separable Convolutinal) tiếp tục tạo ra nhiều bộ lọc cho ra các chi tiết rõ hơn, 1 lớp gộp tối đa (Max Pooling) nhằm lấy những chi tiết có thuộc tính cao nhất và bỏ qua các chi tiết không quan trọng, sau lớp tích chập phân tích và lớp gộp là 1 hàm kích hoạt. Sau mỗi mô đun sẽ được thêm vào 1 lớp tích chập thông thường lấy từ lớp tích chập thông thường cuối cùng ở mỗi mô đun, mục đích giữ lại độ chính xác cho các lớp sau quá trình học sâu, vì học càng sâu thì độ chính xác giữa các lớp sẽ bị giảm đi. 1.2.2 Luồng giữa Luồng giữa có 1 mô đun duy nhất chứa 3 lớp tích chập phân tách và được lặp lại 8 lần. Nhằm tạo ra nhiều hình ảnh khác nhau qua việc áp dụng nhiều bộ lọc ngẫu nhiên. Trích xuất các đặc điểm rõ ràng hơn như, góc cạnh của mắt, mũi, miệng. 1.2.3 Luồng xuất Luồng xuất có 2 mô đun, mô đun thứ nhất gồm 2 lớp tích chập phân tách và 1 lớp gộp đối đa, học sâu từ bản đồ tính năng của lớp tích chập thông thường được thêm vào. Mô đun tiếp theo, có 2 lớp tích chập phân tách và 1 lớp tổng gộp trung bình. Sau lớp tổng gộp trung bình là 1 vector được trải ra từ bản đồ tính năng (Feature Map) của lớp tổng gộp trung bình và lớp kết nối đầy đủ tùy chọn (Fully Connecter Layer), cuối cùng là kết nối lại toàn bộ các đặc điểm đã học từ các lớp trước đó và đưa ra kết quả. 2 QUY TRÌNH SUY LUẬN Hình 1. Sơ đồ khối quá trình thực hiện Tách khung: khung hình được trích xuất 30 khung/giây/video. Nhận diện khuôn mặt: sử dụng thư viện DLIB được đào tạo sẵn có trong OpenCV. 79
- Cắt và thay đổi kích thước ảnh: khối này được sử dụng khi hệ thống không tìm thấy khuôn mặt trong ảnh và được thực hiện ẩn trong quá trình. Một trong những lý do có thể là kích thước khuôn mặt trong ảnh (Ví dụ: Một diễn viên đứng quá xa so với máy quay). Bước này sẽ cắt bỏ những thứ không phải là khuôn mặt và phóng to ảnh tập trung vào khuôn mặt. Kiểm tra tỷ lệ chính xác: khối này được thực hiện để bỏ qua các vật thể không phải là khuôn mặt, giảm thiểu sai sót trong quá trình nhận diện khuôn mặt. Theo dõi khuôn mặt: được thực hiện bởi IoU (Intersection over Union) giữa các hộp giới hạn từ 2 khung liên tiếp nhau. Phân loại thật giả: cuối cùng, để xác định xem video đầu vào là thật hay giả, hệ thống sẽ kết nối toàn bộ khung hình đã trải qua quá trình phân loại bằng mô hình mạng Xception và đưa ra dự đoán. 3 THỬ NGHIỆM 3.1 Dữ liệu thử nghiệm Dữ liệu thử nghiệm được dùng trong bài được trích từ nguồn dữ liệu công khai trên khác phương tiện truyền thông và dữ liệu dùng nhiều nhất là từ Google & Jigsaw. Dữ liệu bao gồm 720 video đã qua qua chỉnh sửa (Fake) bằng công nghệ Deepfake, Face2Face, FaceSwap, NeuralTexture, 140 gốc (Real) cho việc thực hiện train và validate. Dữ liệu thử nghiệm được lưu dưới dạng khung hình, được tách ra từ video. Nguồn dữ liệu FaceForensics, Google & Jigsaw [5]. Bảng 1. Số liệu dữ diệu sử dụng Số lượng sử Thứ tự Phương pháp Số lượng trích xuất dụng 1 Deepfake (Fake) 180 video Ngẫu nhiên 10 ảnh/video 2 Face2Face (Fake) 180 video Ngẫu nhiên 10 ảnh/video 3 FaceSwap (Fake) 180 video Ngẫu nhiên 10 ảnh/video 4 NeuralTexture (Fake) 180 video Ngẫu nhiên 10 ảnh/video 5 Gốc - Không chỉnh sửa (Real) 140 video Ngẫu nhiên 30 ảnh/video 3.2 Môi trường thử nghiệm - Máy tính cá nhân sử dụng NVIDIA GeForce GTX 1650 Ti, quá trình huấn luyện mô hình trải qua khoảng 12 tiếng. - Ngôn ngữ thực hiện: Python 3. Bảng 2. Thông số cài đặt thử nghiệm Stt Thuộc tính Giá trị 1 Batch size train 64 2 Batch size test 32 3 Epochs 24 4 Loss Function Binary Cross Entropy 80
- Stt Thuộc tính Giá trị 5 Dữ liệu train 720 video 6 Dữ liệu validate 140 video 7 Dữ liệu test 80 video 8 Thời gian huấn luyện ~12 tiếng 3.3 Kết quả thử nghiệm Các chỉ số phân lớp được xác định bằng hàm Loss Function là Binary Cross Entropy (LogLoss) được đề xuất trong [7]. ∑[ ( ̂) ( ) ̂] trong đó: : là số lượng video được dự đoán, ̂ : xác suất dự đoán của một video giả, : là 1 nếu video là giả, 0 là video thật, Log(): Logaric tự nhiên dựa trên e. 3.3.1 Kết quả thực nghiệm với các phương pháp chỉnh sửa video có trong tập huấn luyện 95.00% 93.32% 93.50% 92.34% 90.00% 85.00% 80.34% 80.00% 75.00% 70.00% Deepfake Neural Face Swap Face2Face Textures Hình 2. Sơ đồ cột thể hiện độ chính xác của hệ thống khi phát hiện trên 4 phương thức chỉnh sửa Hình 3. Khung ảnh giả từ video Deepfake Hình 4. Khung ảnh giả từ video Face2Face 81
- Hình 5. Khung ảnh giả từ video Face Swap Hình 6. Khung ảnh giả từ video Neural Textures 3.3.2 Kết quả thực nghiệm với các phương pháp chỉnh sửa video ngoài tập huấn luyện 70.00% 60.77% 60.00% 50.00% 40.00% 30.00% 20.00% 10.00% 0.78% 0.67% 0.96% 0.00% FaceApp AvatarifyApp RefaceApp Khác Hình 7. Sơ đồ cột thể hiện độ chính xác của hệ thống khi phát hiện trên các phương pháp ngoài tập dữ liệu huấn luyện Hình 8. Kết quả sai khi thử nghiệm trên video Hình 9. Kết quả sai khi thử nghiệm trên video Avatarify FaceApp Hình 10. Kết quả tương đối chính xác khi thử Hình 11. Kết quả sai khi thử nghiệm trên video nghiệm trên video RefaceApp Instagram (Khác) 82
- 4 KẾT LUẬN Tiếp cận và sử dụng mô hình mạng Xception trong việc phát hiện các video, hình ảnh có khuôn mặt đã qua chỉnh sửa đã cho kết quả đáng mong đợi. Hệ thống đã có thể phát hiện và phân loại ra các video, hình ảnh là giả mạo hay thật. Tuy nhiên, kết quả chỉ nằm ở mức tương đối vì dữ liệu được học còn hạn chế chỉ tập trung vào các công nghệ chỉnh sửa được áp dụng trong tập huấn luyện. Nếu có thêm các công nghệ khác ngoài các công nghệ được áp dụng, thì việc đào tạo lại hệ thống là điều phải xảy ra. Thực tế, vẫn có rất ít phương pháp hàng đầu có thể áp dụng vào trong lĩnh vực này, việc sử dụng mô hình mạng Xception đã mang lại hiệu quả tốt và cũng có thể xem là phương pháp ổn định nhất cho đến thời điểm hiện tại. 5 HƯỚNG PHÁT TRIỂN Hệ thống sẽ được phát triển để bám sát với các vấn đề thực tế như phát hiện giả mạo người khác trong video livestream, trong các cuộc hội, họp trực tuyến và trong các buổi học trực tuyến. Ngoài ra, hệ thống cũng sẽ được cải thiện độ chính xác đối với các phương pháp chỉnh sửa ngoài tập huấn luyện. Cập nhật thêm nguồn dữ liệu của các phương pháp đã được huấn luyện để hệ thống có thể phát hiện một cách chính xác hơn. TÀI LIỆU THAM KHẢO [1] Review: Xception - With Depthwise Separable Convolution. better-than-inception-v3-image-dc967dd42568 [2] Francois Chollet, Google Inc (2017). Xception: Deep Learning with Depthwise Separable Convolutions. [3] Convolutional Neural Networks cheatsheet. 230/cheatsheet-convolutional-neural-networks [4] Andreas Rossler, Davide Cozzolino, Luisa Verdoliva, Christian Riess, Justus Thies, Matthias Nießner. Technical University of Munich, University Federico II of Naples, University of Erlangen-Nuremberg. (2019). FaceForensics++: Learning to Detect Manipulated Facial Images. [5] Andreas Rossler, Davide Cozzolino, Luisa Verdoliva, Christian Riess, Justus Thies, Matthias Nießner. Technical University of Munich, University Federico II of Naples, University of Erlangen-Nuremberg. (2018). FaceForensics: A Large-scale Video Dataset for Forgery Detection in Human Faces. [6] A Basic Introduction to Separable Convolutions. basic-introduction-to-separable-convolutions-b99ec3102728 [7] Understanding binary cross-entropy / log loss: a visual explanation. explanation-a3ac6025181a 83