- vừa được xem lúc

INPAINT KHUÔN MẶT SỬ DỤNG HÌNH ẢNH THAM CHIẾU: KHI KHOA HỌC KẾT HỢP NGHỆ THUẬT

0 0 9

Người đăng: Tran Hung Phong

Theo Viblo Asia

GIỚI THIỆU

Face Inpainting là việc khôi phục lại cái khu vực hình ảnh đã bị xóa (masked / corrupted) trên khuôn mặt trong khi vẫn giữ được sự hài hòa của tổng thể bố cục. Các phương pháp gần đây thường dựa vào các mô hình được huấn luyện trên một tập dữ liệu lớn và đưa ra các dựa đoán về từng điểm ảnh trong khu vực cần khôi phục. Tuy nhiên, việc thiếu sự kiểm soát trong quá trình dự đoán, cùng với bản chất phức tạp về mặt chi tiết, khiến cho các khuôn mặt tạo ra có thể bị biến dạng kỳ lạ. \

Khôi phục lại khuôn mặt sử dụng RunawayML - Stable Diffusion v1.5


Để giải quyết vấn đề này, một phương pháp khác đã được Wuyang Luo et al. giới thiệu, sử dụng một mô hình tạo sinh kết hợp cùng với trích xuất chi tiết hợp lý từ hình ảnh tham chiếu, nhằm khôi phục lại các chi tiết thiếu xót một cách hài hòa và hợp lý. Chúng ta hãy cùng tìm hiểu tổng quan phương pháp đó trong bài blog hôm nay!

Khôi phục lại khuôn mặt sử dụng mô hình RefFaceInpainting

1. Một số kiến trúc sử dụng trong việc Face Inpainting

  • Kiến trúc Recognition-based: Đầu vào sẽ chỉ có ảnh bị corrupted, mô hình sẽ học cách khôi phục lại ảnh hoàn chỉnh.
  • Kiến trúc Input concatenation: Đầu vào sẽ bao gồm cả ảnh bị corrupted và ảnh tham chiếu (chồng ma trận).
  • Kiến trúc Two-stage: Kiến trúc này kết hợp giữa việc Inpainting và hoán đổi khuôn mặt
  • Kiến trúc Dual control one-stage: Đây là kiến trúc được tác giả Wuyang Luo et al cùng với các mô hình, sử dụng nhằm điều khiển các đặc tính cũng như chi tiết được trích xuất từ hình ảnh tham chiếu, nhằm khôi phục lại hình ảnh bị corrupted.

2. Tổng quan mô hình

A. Ý tưởng

Với mục đích kiểm soát đầu ra của mô hình, giải pháp sẽ đập hình ảnh tham chiếu ra thành 2 phần thông tin: thông tin tổng quát và thông tin chi tiết. Sử dụng những thông tin trên, mô hình sẽ dần chỉnh sửa hình ảnh đầu ra tương ứng.

B. Mô hình

Sơ đồ tổng quan thiết kế


Đầu vào của mô hình sẽ bao gồm một hình ảnh đã bị corrupted và một hình ảnh tham chiếu, chúng ta sẽ lần lượt gọi là hình ảnh C và R. Hình ảnh R sẽ được đi qua 3 modules Identity Extractor và Face Parser và Style Encoder để tạo ra các thông tin dẫn đường cho quá trình khôi phục lại hình ảnh C. Hình ảnh C sẽ trải qua một quá trình nén thông tin (màu xanh) tạo ra Feature Map (F), và tái tạo lại (màu da người) với sử chỉ dẫn đuọc tạo ra bởi hình ảnh R. Ngoài ra, tác giả cũng sử dụng thêm các mạng phân biệt, hiểu nôm na như các "giám khảo" phán xét kết quả do mô hình tạo ra, cụ thể như sau:

  • SN-PatchGAN: Đánh giá tổng quan kết quả đầu ra.
  • 3 Mạng phân biệt khác được dùng để đánh giá các vùng khác nhau trên khuôn mặt (2 mắt và miệng) giúp mô hình tổng hợp được các chi tiết nhỏ.

3. Các thành phần

A. Thành phần kiểm soát đặc trưng

  • Ở đây, chúng ta sẽ sử dụng một mạng nhận diện khuôn mặt (ArcFace) nhằm trích xuất ra các đặc trưng của khuôn mặt. Các đặc trưng này sẽ loại bỏ các yếu tố về dáng, ánh sáng và cảnh quan xung quanh.
  • Half-AdaIN: Như chúng ta có thể thấy ở sơ đồ tổng quan, Half-AdaIN được sử dụng để đưa các đặc trưng của ảnh tham chiếu vào quá trình khôi phục lại ảnh bị corrupted. Half-AdaIN được cải tiến từ AdaIN khi ma trận đặc trưng F thay vì đi thẳng qua module AdaIN, sẽ được tách làm hai phần, kết hợp cùng thông tin đặc trưng của ảnh tham chiếu để tổng hợp lại sau đấy. Điều này là vì AdaIN có thể vứt hết thông tin từ Feature Map F.

B. Thành phần kiểm soát chi tiết

  • Để nắm bắt được các thông tin chi tiết trên khuôn mặt là một công việc phức tạp do bản chất kích thước nhỏ và đa dạng chi tiết, do đó chúng ta sẽ tập trung vào 5 phân vùng chính trên khuôn mặt: Mắt trái, phải, lông mày trái, phải, và môi. Để kiểm soát các chi tiết, chúng ta sẽ tập trung vào việc trích xuất các chi tiết trên các vùng này.
  • Style Encoder: Đầu tiên, một mô hình face-parsing sẽ được tận dụng để trích xuất ra bản đồ phân đoạn ảnh (segmentation map). Sau đó, 5 phân vùng trên sẽ được xác định trên bản đồ này, và rút ra được ma trận mã hóa phong cách (style encoding) tương tự như SEAN với kích cỡ 512. Ma trận Style Code này sẽ nắm trong mình các thông tin về chi tiết trên 5 phân vùng khác nhau của khuôn mặt.
  • Component-wise Style Injector (CWSI):

Thành phần này sẽ được sử dụng để đẩy các chi tiết vào Feature Map F trong quá trình táo tạo. Tương tự như thành phần Half-AdaIN, ở đây F cũng được đi vào hai nhánh. Ở Segmentation Branch, tương tự như Style Encoder, nhánh này cũng sử dụng face-parsing để tạo ra segmentation map, chúng ta sẽ lựa chọn 5 phân vùng đã được xác định. Một cách dễ hiểu thì, Segmentation Branch sẽ giúp chúng ta xác định các phân vùng cần được "vẽ" thêm thông tin vào và Style Code chính là ma trận chứa các thông tin được dùng để "vẽ" tương ứng với các phân vùng.

C. Huấn luyện

Cùng với hai thành phần trên, mô hình sẽ vẽ phác họa ra được khuôn mặt dựa trên các đặc trưng nổi bật của khuôn mặt, sau đó bổ sung các chi tiết còn thiếu vào năm phân vùng khác nhau của khuôn mặt.
Có thể thấy rằng, việc bổ sung chi tiết nắm một cách chính xác đóng vai trò quan trọng trong việc đảm bảo tính hài hòa, tính "real" của khuôn mặt. Do đó, tác giả đề xuất một quy trình huấn luyện ba modes (TMT) nhằm không chỉ cải thiện khả năng Inpaiting, mà còn cải thiện khả năng đưa ra hướng dẫn bổ sung chi tiết của mô hình thông qua việc huấn luận 2 modes còn lại.

Điểm khác biệt giữa các modes nằm ở cách mô hình "che" đi hình ảnh như thế nào, được thể hiện qua hình ảnh sau:

4. Kết quả

A. Mô hình cho kết quả "real" hơn các mô hình cũ

Kết quả định tính

Kết quả định lượng
Về số liệu thì quá rõ ràng rồi, còn về định tính thì mọi người có thể tự đánh giá và đưa ra bình luận ở bên duới nhé :)

B. Việc sử dụng các thành phần giúp cải thiện kết quả mô hình

Tóm lại, việc không sử dụng CWSI không đem lại các cải thiện quá nổi bật, tuy nhiên khi tập trung vào các chi tiết ở xung quanh mắt, môi, lông mày, có thể chúng ta vẫn có thể quan sát được những điểm cải thiện.

C. Kết hợp chéo các khuôn mặt

Có thể thấy rằng kết quả đưa ra khá thuyết phục về mặt cảm tính, tuy nhiên có thể thấy rằng không có quá nhiều người có vẻ đẹp phi giới tính nhỉ 😃

D. Các trường hợp thất bại

Có thể thấy rằng các trường hợp thất bại đa phần nằm ở các góc hiếm gặp như nhìn ngang, cúi xuống, ... Bộ dữ liệu được sử dụng là CelebA chủ yếu chứa hình ảnh khuôn mặt ở góc thẳng, do đó việc vẽ lại các khuôn mặt ở các góc quá đà như này vẫn còn là một bài toán khó.

5. Kết luận

Trong bài viết này, chúng ta đã cùng nhau tìm hiểu một cách tổng quan về cách một mô hình tái tạo khuôn mặt sử dụng hình ảnh tham chiếu. Bằng cách thiết kế một cách thông minh các thành phần như Half-AdaIN và CWSI, tác giả đã có thể kiểm soát cũng như bổ sung chi tiết một cách chính xác trong quá trình tái tạo. Tuy nhiên, mô hình vẫn tồn tại điểm yếu liên quan đến góc khuôn mặt như đề cập ở trên và hy vọng rằng bài toán này sẽ được giải quyết thông qua các bài báo trong tương lai!

6. Tài liệu tham khảo

  1. Wuyang Luo, Su Yang, & Weishan Zhang. (2023). Reference-Guided Large-Scale Face Inpainting with Identity and Texture Control.
  2. Z. (2019, May 18). GitHub - zllrunning/face-parsing.PyTorch: Using modified BiSeNet for face parsing in PyTorch. GitHub.
  3. Jiahui Yu, Zhe Lin, Jimei Yang, Xiaohui Shen, Xin Lu, & Thomas Huang. (2019). Free-Form Image Inpainting with Gated Convolution.
  4. Xun Huang, & Serge Belongie. (2017). Arbitrary Style Transfer in Real-time with Adaptive Instance Normalization.
  5. Peihao Zhu, Rameen Abdal, Yipeng Qin, & Peter Wonka (2020).

Bình luận

Bài viết tương tự

- vừa được xem lúc

Hành trình AI của một sinh viên tồi

Mình ngồi gõ những dòng này vào lúc 2h sáng (chính xác là 2h 2 phút), quả là một đêm khó ngủ. Có lẽ vì lúc chiều đã uống cốc nâu đá mà giờ mắt mình tỉnh như sáo, cũng có thể là vì những trăn trở về lý thuyết chồng chất ánh xạ mình đọc ban sáng khiến không tài nào chợp mắt được hoặc cũng có thể do mì

0 0 131

- vừa được xem lúc

[Deep Learning] Key Information Extraction from document using Graph Convolution Network - Bài toán trích rút thông tin từ hóa đơn với Graph Convolution Network

Các nội dung sẽ được đề cập trong bài blog lần này. . Tổng quan về GNN, GCN. Bài toán Key Information Extraction, trích rút thông tin trong văn bản từ ảnh.

0 0 204

- vừa được xem lúc

Tìm hiểu về YOLO trong bài toán real-time object detection

1.Yolo là gì. . Họ các mô hình RCNN ( Region-Based Convolutional Neural Networks) để giải quyết các bài toán về định vị và nhận diện vật thể.

0 0 272

- vừa được xem lúc

Encoding categorical features in Machine learning

Khi tiếp cận với một bài toán machine learning, khả năng cao là chúng ta sẽ phải đối mặt với dữ liệu dạng phân loại (categorical data). Khác với các dữ liệu dạng số, máy tính sẽ không thể hiểu và làm việc trực tiếp với categorical variable.

0 0 244

- vừa được xem lúc

TF Lite with Android Mobile

Như các bạn đã biết việc đưa ứng dụng đến với người sử dụng thực tế là một thành công lớn trong Machine Learning.Việc làm AI nó không chỉ dừng lại ở mức nghiên cứu, tìm ra giải pháp, chứng minh một giải pháp mới,... mà quan trọng là đưa được những nghiên cứu đó vào ứng dụng thực tế, được sử dụng để

0 0 55

- vừa được xem lúc

Xây dựng hệ thống Real-time Multi-person Tracking với YOLOv3 và DeepSORT

Trong bài này chúng ta sẽ xây dựng một hệ thống sử dụng YOLOv3 kết hợp với DeepSORT để tracking được các đối tượng trên camera, YOLO là một thuật toán deep learning ra đời vào tháng 5 năm 2016 và nó nhanh chóng trở nên phổ biến vì nó quá nhanh so với thuật toán deep learning trước đó, sử dụng YOLO t

0 0 303