VITALIFY.ASIA logo

Tạo avatar 3D từ một ảnh bằng FLAME, DECA và DiffLocks

Author profile
Toshihiko Nagaoka23/06/2026
Tạo avatar 3D từ một ảnh bằng FLAME, DECA và DiffLocks

“Nếu có thể tạo một nhân vật 3D chân thực như trong phim hoặc game chỉ từ một bức ảnh của chính mình thì sao?”

Bạn đã từng nghĩ như vậy chưa? Khi nhu cầu về avatar 3D ngày càng tăng cùng với sự phổ biến của metaverse, VRChat và các nền tảng tương tự, việc tự tay dựng mô hình 3D vẫn là một rào cản rất lớn.

Lần này, chúng tôi đã thử một workflow tiên tiến: kết hợp FLAME, mô hình suy luận DECA và DiffLocks để tạo mô hình 3D phần đầu chân thực từ một bức ảnh khuôn mặt, sau đó tạo thêm mái tóc tự nhiên cho mô hình đó.

Trong bài viết này, chúng tôi sẽ giải thích quy trình thực hiện, kết quả thu được, cũng như kiến thức cơ bản về từng công nghệ được sử dụng.

Trước tiên là kiến thức cơ bản: Các công nghệ AI được sử dụng lần này

Trước khi đi vào quy trình thực tế, chúng tôi sẽ giải thích các công nghệ chính được sử dụng trong thử nghiệm này. Đặc biệt, công nghệ “DECA”, một bước tiến lớn trong lĩnh vực khôi phục khuôn mặt 3D, rất thú vị nên chúng tôi sẽ đi sâu hơn một chút.

FLAME: Chuẩn mô hình 3D khuôn mặt

FLAME, viết tắt của Faces Learned with an Articulated Model and Expressions, là một “mô hình đầu 3D thống kê” được xây dựng bằng cách học dữ liệu khuôn mặt của hàng nghìn người. Đây là một hệ thống có thể biểu diễn “hình dạng”, “biểu cảm” và “tư thế” của khuôn mặt bằng các tham số số.

Tuy nhiên, bản thân FLAME chỉ là một “chuẩn” của mô hình. Vì vậy, để dự đoán các tham số từ ảnh, cần có một mô hình AI khác.

Để ước lượng chính xác các tham số FLAME từ một bức ảnh duy nhất và khôi phục thêm chất liệu chân thực, lần này chúng tôi sử dụng hai mô hình tiên tiến sau.

DECA: Tạo hình dạng và texture cho phần đầu

Trong workflow lần này, phần thú vị nhất về mặt kỹ thuật chính là DECA, viết tắt của Detailed Expression Capture and Animation.

Các công nghệ khôi phục khuôn mặt 3D trước đây có thể nắm bắt được đường nét tổng thể và vị trí các bộ phận trên khuôn mặt, nhưng thường gặp vấn đề là kết quả trông phẳng và giống mannequin. Điểm ấn tượng của DECA là nó suy luận khuôn mặt bằng cách tách thành “hình dạng thô” và “chi tiết”, đồng thời còn tách riêng “màu sắc” và “ánh sáng”.

Tạo displacement, tức các chi tiết lồi lõm nhỏ: DECA tạo ra dữ liệu gọi là displacement map cho các chi tiết như “rãnh cười” hoặc “nếp nhăn trên trán” xuất hiện khi khuôn mặt có biểu cảm. Khi áp dụng dữ liệu này lên mesh cơ bản, nó có thể khôi phục cảm giác chất liệu sống động đến bất ngờ.

Tách albedo, tức màu da gốc, và ánh sáng: Ở đây cần giải thích thêm về “albedo”. Trong 3DCG, albedo có nghĩa là “màu cơ bản của chính vật thể, hoàn toàn không bao gồm ảnh hưởng của ánh sáng hay bóng đổ”.

Trong ảnh chụp luôn có ánh sáng và bóng tại thời điểm chụp. Tuy nhiên, DECA dùng suy luận AI để tách “màu nền thuần của da”, tức albedo, và “môi trường ánh sáng”. Nhờ đó, bóng trong ảnh không bị in cố định vào texture, và sau này có thể dựng lại ánh sáng tự do trong phần mềm 3D.

Tuy nhiên, albedo do DECA tạo ra có một đặc điểm lớn. Đó là: mặc dù nó tham chiếu tông màu tổng thể của ảnh gốc, ví dụ độ sáng của da, nhưng lại hoàn toàn không tham chiếu các chi tiết cụ thể trên khuôn mặt như râu, nốt ruồi, vết thâm hay trang điểm. Những chi tiết này bị bỏ qua hoàn toàn.

Kết quả là ta có thể thu được một albedo sạch, nhưng da lại trơn và giống “da mannequin không thuộc về một người cụ thể”.

DiffLocks: Tạo tóc 3D

Sau khi có khuôn mặt, bước tiếp theo là tóc. Đây là lúc DiffLocks xuất hiện.

DiffLocks là công nghệ ứng dụng “diffusion model”, vốn nổi tiếng trong AI tạo ảnh, vào việc tạo tóc 3D, cụ thể là các sợi tóc. Thay vì kiểu tóc polygon giống “một khối đất sét” thường thấy trong game truyền thống, DiffLocks có thể tạo ra kiểu tóc 3D rất phong phú và chân thực, với dòng chảy và từng lọn tóc.

Có thể chỉ định các kiểu như “tóc xoăn” hoặc “bob ngắn”, rồi tạo tóc sao cho phù hợp với hình dạng phần đầu.

Phần thực hành: Từ một bức ảnh đến avatar hoàn chỉnh

Sau đây là workflow thực tế mà chúng tôi đã thử.

Chuẩn bị ảnh nền

Đầu tiên, cần chuẩn bị một bức ảnh làm đầu vào. Để AI có thể nhận diện chính xác hình dạng khuôn mặt, chúng tôi chọn ảnh đáp ứng các điều kiện sau.

Ảnh nhìn thẳng chính diện
Không có bóng đổ mạnh lên khuôn mặt
Trán và đường viền khuôn mặt không bị tóc che khuất

Lần này, chúng tôi sử dụng một bức ảnh selfie với phần tóc mái được vuốt lên để đường viền khuôn mặt dễ nhìn hơn. Tuy nhiên, thực chất đây là một ảnh do AI tạo ra.

Tạo mesh 3D phần đầu bằng DECA

Dựa trên bức ảnh đã chuẩn bị, chúng tôi bắt đầu tạo mô hình 3D phần đầu.

Trích xuất hình dạng cơ bản

Đầu tiên, đưa ảnh vào DECA. Như đã nói ở trên, “hình dạng thô” sẽ được áp dụng vào mô hình cơ bản của FLAME.

Từ ảnh đầu vào, DECA phát hiện vùng khuôn mặt, đưa qua mô hình học sâu, tức encoder dùng cho nhận dạng hình ảnh, để trích xuất và dữ liệu hóa các đặc trưng thị giác của khuôn mặt.

Từ các đặc trưng đã trích xuất, DECA suy luận, tức hồi quy, các giá trị tham số cần thiết để điều khiển FLAME, bao gồm hình dạng, biểu cảm, tư thế hàm, vị trí camera, môi trường ánh sáng, albedo, v.v. Khi đưa các tham số này vào chuẩn FLAME, trước tiên một “mesh phần đầu cơ bản” với ít chi tiết lồi lõm sẽ được xây dựng.

Vì DECA không thay đổi cấu trúc mesh, các tham số biểu cảm vốn có của FLAME vẫn được giữ nguyên.

Hình dạng cơ bản của FLAME. Bất kể tuổi tác, giới tính hay chủng tộc, tất cả đều được tạo từ mô hình cơ bản này.
DECA điều chỉnh theo khuôn mặt trong ảnh.

Trích xuất texture

Như đã giải thích ở trên, ở bước này DECA loại bỏ môi trường ánh sáng trong ảnh và tạo ra “albedo texture thuần”. Đồng thời, một phần đầu cơ bản chân thực với các chi tiết lồi lõm nhỏ nhờ displacement map cũng được xây dựng.

Chỉ sau vài giây đến vài chục giây xử lý, dữ liệu mesh 3D giống với ảnh, dưới dạng file .obj, cùng với texture đã được xuất ra.

Cảm giác hơi kỳ lạ, nhưng khuôn mặt trước đó chỉ là ảnh phẳng giờ đã có thể xoay trong không gian 3D. Tuy nhiên, ở giai đoạn này mô hình vẫn là đầu trọc trơn, nên chưa thể gọi là hoàn chỉnh.

Tạo tóc bằng DiffLocks

Dựa trên mô hình phần đầu đã tạo, chúng tôi tiếp tục tạo tóc bằng DiffLocks.

Trong DiffLocks, dữ liệu hình dạng phần đầu vừa tạo được đưa vào như một dạng dữ liệu va chạm, để tóc có thể mọc tự nhiên theo da đầu.

Lần này, chúng tôi điều chỉnh tham số và text prompt với mục tiêu tạo “tóc dài trung bình, hơi gợn sóng”. Sau khi để GPU chạy hết công suất và chờ vài phút, kết quả đã được tạo ra.

Trạng thái tóc được tạo bằng DiffLocks đã được fit vào phần đầu có áp dụng albedo texture.

Kỹ thuật riêng: Xử lý tổng hợp texture hybrid

Kết quả là dữ liệu tóc 3D, tức các strand, đã được tạo ra rất đẹp, khớp với hình dạng phần đầu và có dòng chảy nhỏ, phức tạp.

Tuy nhiên, chúng tôi gặp một vấn đề lớn. Như đã nói ở trên, “albedo texture” do DECA trích xuất có ưu điểm là tách ánh sáng và bóng, nhưng lại bỏ qua hoàn toàn các đặc điểm cá nhân như râu hay nốt ruồi. Vì vậy, khi áp dụng texture này lên mô hình 3D, khuôn mặt trở nên phẳng và giống một người khác, không còn giống người trong ảnh gốc.

Vì vậy, lần này chúng tôi đã tự động hóa và tích hợp thêm một xử lý: “cắt phần khuôn mặt từ ảnh gốc và sử dụng trực tiếp làm texture” để giúp mô hình giống khuôn mặt gốc hơn.

Tuy nhiên, nếu chỉ projection đơn thuần từ chính diện, texture ở các phần bên của khuôn mặt như tai và má, vốn không nhìn thấy từ camera, sẽ bị kéo giãn và hỏng.

Để giải quyết vấn đề này, chúng tôi sử dụng xử lý hybrid như sau.

Phần chính diện của khuôn mặt, quanh mắt, mũi và miệng: Sử dụng ảnh gốc trực tiếp làm texture, giữ nguyên hoàn toàn “độ giống người thật”, bao gồm râu, nốt ruồi và các đặc điểm khác.

Toàn bộ phần đầu, tai và các vùng bên như má: Sử dụng albedo texture do DECA tạo ra làm nền.

Xử lý phần ranh giới: Tạo mask ở ranh giới giữa hai texture trên và làm mượt, tức blend, để chúng hòa vào nhau một cách tự nhiên.

Nhờ xử lý tổng hợp tự động này, chúng tôi đã thành công trong việc tránh lỗi texture ở góc nghiêng, đồng thời giữ được “độ giống người thật” khi nhìn từ chính diện.

Ảnh render của mô hình 3D hoàn chỉnh. Vấn đề phần râu ở má, một đặc điểm quan trọng của nhân vật, bị biến mất sẽ được nói ở phần sau.
Vì đây là một nhân vật hư cấu do AI tạo ra, chúng tôi chưa từng gặp người này ngoài đời. Do đó không có cách nào biết khuôn mặt nhìn nghiêng thật sự ra sao, nhưng chắc hẳn khuôn mặt đó sẽ trông như thế này.

Các vấn đề cần giải quyết trong tương lai

Bạn có nhận ra không? So với ảnh gốc, phần râu ở má, một đặc điểm khá nổi bật, đã biến mất. Đây là điểm yếu của phương pháp blend ảnh chính diện vào albedo texture đã giải thích ở trên.

Vì phần chính diện của khuôn mặt, như quanh miệng và đầu cằm, được projection từ ảnh gốc nên râu vẫn còn nguyên. Nhưng vùng “má”, tức phần bên của khuôn mặt, lại sử dụng albedo của DECA để tránh hiện tượng texture bị kéo giãn.

Như đã giải thích trong phần kiến thức cơ bản, albedo của DECA về nguyên lý sẽ loại bỏ hoàn toàn các “chi tiết cá nhân” như râu và nốt ruồi trong quá trình suy luận, rồi tạo ra làn da trơn.

Kết quả là khi áp dụng hybrid texture này, hiện tượng sau xảy ra: “quanh miệng vẫn có râu, nhưng khi đến vùng má thì râu đột ngột biến mất một cách thiếu tự nhiên và trở thành da trơn”.

Nếu giả định công đoạn hoàn thiện cuối cùng sẽ được thực hiện thủ công, có thể nói vấn đề này hoàn toàn không đáng lo ngại. Về texture, vẫn còn rất nhiều dư địa để nâng chất lượng bằng cách chỉnh sửa thủ công trong Photoshop ở bước cuối. Một phần của việc đó có thể là vẽ thêm râu ở má.

Mặt khác, nếu muốn pipeline hóa toàn bộ quy trình và hướng tới tự động hóa hoàn toàn, cần có thêm giải pháp khi xử lý ảnh của những người có râu má dày.

Kiểm chứng với mẫu nữ và các vấn đề phát hiện được

Không chỉ thử với ảnh selfie nam giới, chúng tôi cũng thử workflow tương tự với ảnh nữ giới.

Kết quả là chất lượng của “mô hình phần đầu” được tạo bởi DECA và kỹ thuật tổng hợp hybrid texture riêng rất tốt, có thể tái hiện khuôn mặt rất chân thực và đẹp.

Tuy nhiên, mặt khác, “kiểu tóc” được tạo bằng DiffLocks lại có một số điểm bị lỗi. Có vẻ như việc mô phỏng và tạo một cách tự nhiên những kiểu tóc dài, phức tạp đặc trưng của nữ giới, hoặc tóc có độ phồng lớn, vẫn là một bài toán khó đối với DiffLocks. Đây là vấn đề cần tiếp tục xử lý trong tương lai, thông qua việc điều chỉnh tham số sâu hơn hoặc tìm kiếm các phương pháp tạo tóc khác.

Ảnh được sử dụng làm hình gốc. Ảnh này được tạo bằng Gemini.
Chúng tôi đã blend texture khuôn mặt từ chính diện vào albedo do DECA tạo ra. Đường rẽ ngôi tóc được tái hiện chính xác, nhưng tổng thể tóc lại bị dài quá mức. Đây là điểm chúng tôi muốn tiếp tục điều chỉnh trong tương lai.

⚠️ Lưu ý: Về giấy phép, không được sử dụng cho mục đích thương mại

Khi thử các công nghệ được giới thiệu lần này, có một điểm quan trọng cần lưu ý.

Dữ liệu mô hình và mã nguồn của các công nghệ AI / 3D mới như FLAME, DECA, EMOCA và DiffLocks chủ yếu được công bố cho mục đích nghiên cứu học thuật. Vì vậy, về cơ bản, việc sử dụng thường bị giới hạn trong phạm vi phi thương mại.

Việc sử dụng các mô hình 3D được tạo bằng những công nghệ này trong game thương mại, hoặc dùng làm avatar Vtuber trên kênh YouTube đang kiếm tiền, có khả năng cao vi phạm giấy phép.

Hãy chỉ sử dụng chúng trong phạm vi thử nghiệm cá nhân, học tập kỹ thuật hoặc nghiên cứu. Khi thực sự thử nghiệm, hãy luôn tự kiểm tra các điều khoản License trong repository chính thức của từng công nghệ.

Tổng kết và cảm nhận

Việc có thể tạo ra mô hình 3D và tóc chân thực đến mức này chỉ từ một bức ảnh 2D khiến chúng tôi cảm nhận rõ sự phát triển đáng kinh ngạc của công nghệ.

Trong thời gian tới, chúng tôi muốn thử thêm việc gắn bone, tức bộ xương, vào mô hình 3D đã tạo để cho nó chuyển động, hoặc đồng bộ biểu cảm của chính mình bằng facial tracking.

Đây là thời đại mà ngay cả khi không có kinh nghiệm 3D modeling, chúng ta vẫn có thể tạo avatar chất lượng cao đến mức này nhờ sức mạnh của AI. Nếu bạn quan tâm, hãy thử xem qua các repository chính thức.

Đừng để ý tưởng chỉ nằm trên giấy. Với tốc độ và sự linh hoạt đã được chứng minh qua 1.000+ dự án, chúng tôi sẽ giúp doanh nghiệp của bạn bứt phá.

Nhận tư vấn miễn phí ngay
#Generative AI & ML

Bài viết liên quan về "Generative AI & ML"

AI có làm giảm cơ hội việc làm tại Việt Nam không?

AI có làm giảm cơ hội việc làm tại Việt Nam không?

Vitalify Asia Team29/05/2026

AI có làm giảm việc làm tại VN? COO của VFA thảo luận về tác động thực tế của AI đối với ngành offshore và "sự tò mò mang tính tự hủy" cần có ở thế hệ kỹ sư tiếp theo.

I'm Duper, ask me anything!