Mô hình và nền tảng AI

Cách thức hoạt động của Trí tuệ nhân tạo Text-to-3D: Meta 3D Gen, OpenAI Shap-E và hơn thế nữa

mm
Thêm Unite.AI vào các nguồn ưu tiên của bạn trên Google
div]:bg-bg-300 [&_pre]:-mr-4 md:[&_pre]:-mr-9″>

Khả năng tạo ra tài sản kỹ thuật số 3D từ các lệnh văn bản đại diện cho một trong những phát triển gần đây nhất và thú vị nhất trong lĩnh vực trí tuệ nhân tạo và đồ họa máy tính. Khi thị trường tài sản kỹ thuật số 3D dự kiến sẽ tăng từ $28,3 tỷ vào năm 2024 lên $51,8 tỷ vào năm 2029, các mô hình trí tuệ nhân tạo văn bản-sang-3D đang sẵn sàng đóng vai trò chính trong việc cách mạng hóa việc tạo nội dung trên các ngành công nghiệp như trò chơi, phim, thương mại điện tử và hơn thế nữa. Nhưng chính xác thì những hệ thống trí tuệ nhân tạo này hoạt động như thế nào? Trong bài viết này, chúng tôi sẽ đi sâu vào các chi tiết kỹ thuật đằng sau việc tạo ra 3D từ văn bản.

Thử thách của việc tạo ra 3D

Tạo ra tài sản 3D từ văn bản là một nhiệm vụ phức tạp hơn nhiều so với việc tạo ra hình ảnh 2D. Trong khi hình ảnh 2D cơ bản là lưới các điểm ảnh, tài sản 3D yêu cầu đại diện hình học, kết cấu, vật liệu và thường là các hoạt hình trong không gian ba chiều. Sự phức tạp và chiều không gian này làm cho nhiệm vụ tạo ra trở nên khó khăn hơn nhiều.

Một số thử thách chính trong việc tạo ra 3D từ văn bản bao gồm:

  • Đại diện hình học và cấu trúc 3D
  • Tạo ra kết cấu và vật liệu nhất quán trên bề mặt 3D
  • Đảm bảo tính hợp lý và nhất quán về mặt vật lý từ nhiều góc nhìn
  • Tập trung vào các chi tiết và cấu trúc toàn cầu đồng thời
  • Tạo ra tài sản có thể được dễ dàng kết xuất hoặc in 3D

Để giải quyết những thử thách này, các mô hình trí tuệ nhân tạo văn bản-sang-3D tận dụng một số công nghệ và kỹ thuật chính.

Các thành phần chính của hệ thống văn bản-sang-3D

Hầu hết các hệ thống tạo ra 3D từ văn bản hiện đại đều chia sẻ một số thành phần cốt lõi:

  1. Mã hóa văn bản: Chuyển đổi lệnh văn bản đầu vào thành một biểu diễn số
  2. Đại diện 3D: Một phương pháp để đại diện hình học và ngoại hình 3D
  3. Mô hình tạo ra: Mô hình trí tuệ nhân tạo cốt lõi để tạo ra tài sản 3D
  4. Kết xuất: Chuyển đổi đại diện 3D thành hình ảnh 2D để trực quan hóa

Hãy cùng khám phá từng thành phần này một cách chi tiết hơn.

Mã hóa văn bản

Bước đầu tiên là chuyển đổi lệnh văn bản đầu vào thành một biểu diễn số mà mô hình trí tuệ nhân tạo có thể làm việc với. Điều này thường được thực hiện bằng cách sử dụng các mô hình ngôn ngữ lớn như BERT hoặc GPT.

Đại diện 3D

Có một số cách phổ biến để đại diện hình học 3D trong các mô hình trí tuệ nhân tạo:

  1. Lưới voxel: Mảng 3D của các giá trị đại diện cho chiếm đóng hoặc tính năng
  2. Đám mây điểm: Tập hợp các điểm 3D
  3. Lưới: Đỉnh và mặt định nghĩa một bề mặt
  4. Hàm ngầm: Hàm liên tục định nghĩa một bề mặt (ví dụ: hàm khoảng cách có dấu)
  5. Trường bức xạ thần kinh (NeRFs): Mạng nơ-ron định nghĩa mật độ và màu sắc trong không gian 3D

Mỗi phương pháp đều có sự đánh đổi về độ phân giải, sử dụng bộ nhớ và dễ dàng tạo ra. Nhiều mô hình gần đây sử dụng hàm ngầm hoặc NeRFs vì chúng cho phép tạo ra kết quả chất lượng cao với yêu cầu tính toán hợp lý.

Ví dụ, chúng ta có thể đại diện cho một hình cầu đơn giản như một hàm khoảng cách có dấu:

import numpy as np

<p>def sphere_sdf(x, y, z, radius=1.0):
return np.sqrt(x**2 + y**2 + z**2) - radius</p>

<p># Evaluate SDF at a 3D point
point = [0.5, 0.5, 0.5]
distance = sphere_sdf(*point)
print(f&quot;Khoảng cách đến bề mặt hình cầu: {distance}&quot;)

Mô hình tạo ra

Lõi của một hệ thống văn bản-sang-3D là mô hình tạo ra tài sản 3D từ lệnh văn bản. Hầu hết các mô hình hiện đại đều sử dụng một số biến thể của mô hình khuếch tán, tương tự như những mô hình được sử dụng trong việc tạo ra hình ảnh 2D.

Mô hình khuếch tán hoạt động bằng cách逐渐 thêm nhiễu vào dữ liệu, sau đó học cách đảo ngược quá trình này. Đối với việc tạo ra 3D, quá trình này xảy ra trong không gian của đại diện 3D được chọn.

Một mã giả đơn giản cho một bước đào tạo mô hình khuếch tán có thể trông như thế này:

def diffusion_training_step(model, x_0, text_embedding):
# Sample a random timestep
t = torch.randint(0, num_timesteps, (1,))

<p># Add noise to the input
noise = torch.randn_like(x_0)
x_t = add_noise(x_0, noise, t)</p>

<p># Predict the noise
predicted_noise = model(x_t, t, text_embedding)</p>

<p># Compute loss
loss = F.mse_loss(noise, predicted_noise)</p>

return loss

<p># Training loop
for batch in dataloader:
x_0, text = batch
text_embedding = encode_text(text)
loss = diffusion_training_step(model, x_0, text_embedding)
loss.backward()
optimizer.step()

Trong quá trình tạo ra, chúng ta bắt đầu từ nhiễu thuần túy và lặp đi lặp lại quá trình làm giảm nhiễu, có điều kiện bởi lệnh văn bản.

Kết xuất

Để trực quan hóa kết quả và tính toán tổn thất trong quá trình đào tạo, chúng ta cần kết xuất đại diện 3D thành hình ảnh 2D. Điều này thường được thực hiện bằng cách sử dụng các kỹ thuật kết xuất khác biệt cho phép gradient chảy ngược qua quá trình kết xuất.

Đối với các đại diện dựa trên lưới, chúng ta có thể sử dụng một trình kết xuất dựa trên raster hóa:

import torch
import torch.nn.functional as F
import pytorch3d.renderer as pr

<p>def render_mesh(vertices, faces, image_size=256):
# Create a renderer
renderer = pr.MeshRenderer(
rasterizer=pr.MeshRasterizer(),
shader=pr.SoftPhongShader()
)</p>

<p># Set up camera
cameras = pr.FoVPerspectiveCameras()</p>

<p># Render
images = renderer(vertices, faces, cameras=cameras)</p>

return images

<p># Example usage
vertices = torch.rand(1, 100, 3) # Random vertices
faces = torch.randint(0, 100, (1, 200, 3)) # Random faces
rendered_images = render_mesh(vertices, faces)

Đối với các đại diện ngầm như NeRFs, chúng ta thường sử dụng các kỹ thuật hành quân tia để kết xuất các góc nhìn.

Tổng hợp lại: Đường ống văn bản-sang-3D

Bây giờ chúng ta đã bao quát các thành phần chính, hãy đi qua cách chúng được kết hợp trong một đường ống tạo ra 3D từ văn bản điển hình:

  1. Mã hóa văn bản: Lệnh văn bản đầu vào được mã hóa thành một biểu diễn vectơ dày đặc sử dụng một mô hình ngôn ngữ.
  2. Tạo ra ban đầu: Một mô hình khuếch tán, có điều kiện bởi lệnh văn bản, tạo ra một đại diện 3D ban đầu (ví dụ: NeRF hoặc hàm ngầm).
  3. Đồng nhất về góc nhìn: Mô hình kết xuất nhiều góc nhìn của tài sản 3D được tạo ra và đảm bảo tính nhất quán trên các góc nhìn.
  4. Làm tinh: Các mạng bổ sung có thể làm tinh hình học, thêm kết cấu hoặc tăng cường chi tiết.
  5. Kết quả cuối cùng: Đại diện 3D được chuyển đổi thành định dạng mong muốn (ví dụ: lưới có kết cấu) để sử dụng trong các ứng dụng hạ nguồn.

Dưới đây là một ví dụ đơn giản về cách này có thể trông như thế nào trong mã:

class TextTo3D(nn.Module):
def __init__(self):
super().__init__()
self.text_encoder = BertModel.from_pretrained(&#039;bert-base-uncased&#039;)
self.diffusion_model = DiffusionModel()
self.refiner = RefinerNetwork()
self.renderer = DifferentiableRenderer()

<p>def forward(self, text_prompt):
# Encode text
text_embedding = self.text_encoder(text_prompt).last_hidden_state.mean(dim=1)</p>

<p># Generate initial 3D representation
initial_3d = self.diffusion_model(text_embedding)</p>

<p># Render multiple views
views = self.renderer(initial_3d, num_views=4)</p>

<p># Refine based on multi-view consistency
refined_3d = self.refiner(initial_3d, views)</p>

return refined_3d

<p># Usage
model = TextTo3D()
text_prompt = &quot;Một chiếc xe thể thao màu đỏ&quot;
generated_3d = model(text_prompt)

Top Mô hình tài sản 3D từ văn bản hiện có

3DGen – Meta

3DGen được thiết kế để giải quyết vấn đề tạo ra nội dung 3D – chẳng hạn như nhân vật, đạo cụ và cảnh – từ các mô tả văn bản.

Large Language and Text-to-3D Models - 3d-gen

Large Language and Text-to-3D Models – 3d-gen

3DGen hỗ trợ kết xuất dựa trên vật lý (PBR), điều cần thiết cho việc chiếu sáng lại tài sản 3D thực tế trong các ứng dụng thực tế. Nó cũng cho phép tạo lại kết cấu của các hình dạng 3D được tạo ra trước hoặc được tạo bởi nghệ sĩ sử dụng các lệnh văn bản mới. Đường ống này tích hợp hai thành phần cốt lõi: Meta 3D AssetGen và Meta 3D TextureGen, xử lý tạo ra tài sản 3D từ văn bản và tạo ra kết cấu từ văn bản, tương ứng.

Meta 3D AssetGen

Meta 3D AssetGen (Siddiqui et al., 2024) chịu trách nhiệm tạo ra ban đầu các tài sản 3D từ lệnh văn bản. Thành phần này tạo ra một lưới 3D với kết cấu và bản đồ vật liệu PBR trong khoảng 30 giây.

Meta 3D TextureGen

Meta 3D TextureGen (Bensadoun et al., 2024) tinh chỉnh kết cấu được tạo ra bởi AssetGen. Nó cũng có thể được sử dụng để tạo ra kết cấu mới cho các lưới 3D hiện có dựa trên các mô tả văn bản bổ sung. Giai đoạn này mất khoảng 20 giây.

Point-E (OpenAI)

Point-E, được phát triển bởi OpenAI, là một mô hình tạo ra 3D từ văn bản khác đáng chú ý. Không giống như DreamFusion, tạo ra các đại diện NeRF, Point-E tạo ra đám mây điểm 3D.

Các tính năng chính của Point-E:

a) Đường ống hai giai đoạn: Point-E đầu tiên tạo ra một góc nhìn tổng hợp 2D sử dụng một mô hình khuếch tán văn bản-sang-hình ảnh, sau đó sử dụng hình ảnh này để điều kiện cho một mô hình khuếch tán thứ hai tạo ra đám mây điểm 3D.

b) Hiệu suất: Point-E được thiết kế để hiệu suất tính toán, có khả năng tạo ra đám mây điểm 3D trong vài giây trên một GPU đơn.

c) Thông tin màu sắc: Mô hình có thể tạo ra đám mây điểm màu sắc, bảo tồn cả thông tin hình học và ngoại hình.

Hạn chế:

  • Chất lượng thấp hơn so với các phương pháp dựa trên lưới hoặc NeRF
  • Đám mây điểm yêu cầu xử lý bổ sung cho nhiều ứng dụng hạ nguồn

Shap-E (OpenAI):

Xây dựng trên Point-E, OpenAI giới thiệu Shap-E, tạo ra lưới 3D thay vì đám mây điểm. Điều này giải quyết một số hạn chế của Point-E trong khi vẫn duy trì hiệu suất tính toán.

Các tính năng chính của Shap-E:

a) Đại diện ngầm: Shap-E học cách tạo ra các đại diện ngầm (hàm khoảng cách có dấu) của các đối tượng 3D.

b) Trích xuất lưới: Mô hình sử dụng một triển khai khác biệt của thuật toán marching cubes để chuyển đổi đại diện ngầm thành một lưới đa giác.

c) Tạo kết cấu: Shap-E cũng có thể tạo ra kết cấu cho các lưới 3D, dẫn đến các kết quả trực quan hấp dẫn hơn.

Ưu điểm:

  • Thời gian tạo ra nhanh (vài giây đến vài phút)
  • Kết xuất lưới trực tiếp phù hợp cho việc kết xuất và các ứng dụng hạ nguồn
  • Khả năng tạo ra cả hình học và kết cấu

GET3D (NVIDIA):

GET3D, được phát triển bởi các nhà nghiên cứu của NVIDIA (NVDA ), là một mô hình tạo ra 3D từ văn bản khác mạnh mẽ tập trung vào việc tạo ra các lưới 3D có kết cấu chất lượng cao.

Các tính năng chính của GET3D:

a) Đại diện bề mặt rõ ràng: Không giống như DreamFusion hoặc Shap-E, GET3D tạo ra trực tiếp các đại diện bề mặt rõ ràng (lưới) mà không cần đại diện ngầm trung gian.

b) Tạo kết cấu: Mô hình bao gồm một kỹ thuật kết xuất khác biệt để học và tạo ra các kết cấu chất lượng cao cho các lưới 3D.

c) Kiến trúc dựa trên GAN: GET3D sử dụng một kiến trúc mạng đối nghịch tạo sinh (GAN), cho phép tạo ra nhanh chóng một lần mô hình được đào tạo.

Ưu điểm:

  • Hình học và kết cấu chất lượng cao
  • Thời gian tạo ra nhanh
  • Tích hợp trực tiếp với các công cụ kết xuất 3D

Hạn chế:

  • Yêu cầu dữ liệu đào tạo 3D, điều mà có thể khan hiếm cho một số loại đối tượng

Kết luận

Tạo ra 3D từ văn bản đại diện cho một sự thay đổi cơ bản trong cách chúng ta tạo ra và tương tác với nội dung 3D. Bằng cách tận dụng các kỹ thuật học sâu tiên tiến, những mô hình này có thể tạo ra các tài sản 3D phức tạp, chất lượng cao từ các lệnh văn bản đơn giản. Khi công nghệ tiếp tục phát triển, chúng ta có thể mong đợi thấy ngày càng nhiều hệ thống tạo ra 3D từ văn bản tinh vi và có khả năng hơn, những hệ thống sẽ cách mạng hóa các ngành công nghiệp từ trò chơi và phim đến thiết kế sản phẩm và kiến trúc.

Tôi đã dành 5 năm qua để đắm mình trong thế giới hấp dẫn của Máy học và Học sâu. Đam mê và chuyên môn của tôi đã dẫn tôi đến việc đóng góp vào hơn 50 dự án kỹ thuật phần mềm đa dạng, với sự tập trung đặc biệt vào AI/ML. Sự tò mò liên tục của tôi cũng đã thu hút tôi đến với Xử lý Ngôn ngữ Tự nhiên, một lĩnh vực tôi渴望 khám phá thêm.