نماذج ومنصات الذكاء الاصطناعي

كيفية عمل генерація 3D من النص: Meta 3D Gen و OpenAI Shap-E وغيرها

mm
أضف Unite.AI إلى مصادرك المفضلة على Google
div]:bg-bg-300 [&_pre]:-mr-4 md:[&_pre]:-mr-9″>
_*]:min-w-0″>

القدرة على توليد أصول رقمية ثلاثية الأبعاد من نصوص الدخول تمثل واحدة من التطورات الأكثر إثارة في مجال الذكاء الاصطناعي والرسومات الحاسوبية. مع نمو سوق الأصول الرقمية ثلاثية الأبعاد من $28.3 مليار في عام 2024 إلى $51.8 مليار في عام 2029، فإن نماذج الذكاء الاصطناعي من النص إلى 3D على وشك لعب دور رئيسي في ثورة إنشاء المحتوى عبر صناعات مثل الألعاب والسينما والتجارة الإلكترونية وغيرها. ولكن كيف تعمل هذه الأنظمة بالضبط؟ في هذا المقال، سنقوم بتحليل تفصيلي للتفاصيل الفنية خلف توليد 3D من النص.

تحدي توليد 3D

توليد أصول 3D من النص هو مهمة أكثر تعقيدا من توليد الصور ثنائية الأبعاد. في حين أن الصور ثنائية الأبعاد هي في الأساس شبكات من البكسل، فإن الأصول 3D تتطلب تمثيل الهندسة والمنسوجات والمواد وأحيانا الحركات في الفضاء ثلاثي الأبعاد. هذا الإضافات البعدية والتعقيد يجعل مهمة التوليد أكثر تحديا.

بعض التحديات الرئيسية في توليد 3D من النص تشمل:

  • تمثيل الهندسة 3D والهيكل
  • توليد منسوجات و مواد متسقة على سطح 3D
  • ضمان المطابقة الفيزيائية والمنطقية من عدة زوايا
  • التحكم في التفاصيل الدقيقة والهيكل العالمي في نفس الوقت
  • توليد أصول يمكن عرضها أو طباعتها بسهولة

لمواجهة هذه التحديات، تعتمد نماذج النص إلى 3D على عدة تقنيات رئيسية.

المكونات الرئيسية لأنظمة النص إلى 3D

معظم أنظمة توليد 3D من النص المتقدمة تشترك في بعض المكونات الرئيسية:

  1. ترميز النص: تحويل النص الدخول إلى تمثيل رقمي
  2. تمثيل 3D: طريقة لتمثيل الهندسة 3D والمظهر
  3. نموذج توليد: النموذج الرئيسي للذكاء الاصطناعي لتوليد الأصل 3D
  4. العرض: تحويل تمثيل 3D إلى صور 2D للعرض

دعونا نستكشف كل هذه المكونات بالتفصيل.

ترميز النص

الخطوة الأولى هي تحويل النص الدخول إلى تمثيل رقمي يمكن للنموذج العمل معه. هذا يتم عادة باستخدام نماذج لغة كبيرة مثل BERT أو GPT.

تمثيل 3D

هناك عدة طرق شائعة لتمثيل الهندسة 3D في نماذج الذكاء الاصطناعي:

  1. شبكات الفوكسيل: مصفوفات 3D من القيم التي تمثل الاحتلال أو الميزات
  2. سحابة النقاط: مجموعات من النقاط 3D
  3. الشبكات: رؤوس ووجوه تحدد سطحا
  4. الدوال الضمنية: دوال متواصلة تحدد سطحا (مثل دوال المسافة الموقعة)
  5. حقول الإشعاع العصبية: شبكات عصبية تمثل الكثافة واللون في الفضاء 3D

كل منها له تبادلات فيما يتعلق بالدقة واستخدام الذاكرة وسهولة التوليد. العديد من النماذج الحديثة تستخدم الدوال الضمنية أو حقول الإشعاع العصبية لأنها تسمح بنتائج عالية الجودة مع متطلبات حسابية معقولة.

على سبيل المثال، يمكننا تمثيل كرة بسيطة كدالة مسافة موقعة:

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;Distance to sphere surface: {distance}&quot;)

نموذج التوليد

النواة من نظام النص إلى 3D هو نموذج التوليد الذي ينتج تمثيل 3D من النص الدخول. معظم النماذج الحديثة تستخدم بعض الاختلافات من نموذج الانتشار.

نماذج الانتشار تعمل عن طريق إضافة الضوضاء تدريجيا إلى البيانات، ثم تعلم عكس هذه العملية. بالنسبة لتوليد 3D، هذه العملية تحدث في مساحة التمثيل 3D المختارة.

كود بسيط لمثال على خطوة تدريب نموذج انتشار قد يبدو كالتالي:

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()

خلال التوليد، نبدأ من ضوضاء نقية ونقوم بتحسينها تدريجيا، مشروطة بالترميز النصي.

العرض

لعرض النتائج وحساب الخسائر أثناء التدريب، намنح عرض تمثيل 3D إلى صور 2D. هذا يتم عادة باستخدام تقنيات العرض القابلة للتفاضل التي تسمح بالتدرج عبر عملية العرض.

对于 تمثيلات الشبكات، قد نستخدم معالج عرض قائم على الرستر:

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)

对于 تمثيلات الضمنية مثل حقول الإشعاع العصبية، نستخدم عادة تقنيات المسار الراسي للعرض.

جمع كل شيء معا: خط أنابيب النص إلى 3D

الآن بعد أن غطينا المكونات الرئيسية، دعونا نستعرض كيف يتم جمعها في خط أنابيب توليد 3D من النص النموذجي:

  1. ترميز النص: النص الدخول يتم ترميزه إلى تمثيل رقمي كثيف باستخدام نموذج لغة.
  2. التوليد الأولي: نموذج انتشار، مشروط بالترميز النصي، يولد تمثيل 3D أولي (مثل NeRF أو دالة ضمنية).
  3. التوافق متعدد الزوايا: النموذج يعرض عدة مناظير للصورة 3D الناتجة ويتأكد من التطابق عبر الزوايا.
  4. التحسين: شبكات إضافية قد تتحسن الهندسة أو تضيف منسوجات أو تعزز التفاصيل.
  5. الإخراج النهائي: تمثيل 3D يتم تحويله إلى تنسيق مرغوب (مثل شبكة منسوجة) للاستخدام في التطبيقات اللاحقة.

هنا مثال مبسط على كيفية ظهور ذلك في الكود:

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;A red sports car&quot;
generated_3d = model(text_prompt)

أفضل نماذج الأصول 3D المتاحة

3DGen – Meta

3DGen مصمم لمواجهة مشكلة توليد المحتوى 3D – مثل الشخصيات والملحقات والمناظر – من وصف نصي.

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

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

3DGen يدعم العرض المبني على الفيزياء (PBR)، وهو ضروري لإنارة الأصول 3D بشكل واقعي في التطبيقات الحقيقية. كما يسمح بتوليد إعادة النصوص للشكال 3D المولدة مسبقا أو المولدة بواسطة الفنان باستخدام مدخلات نصية جديدة. خط الأنابيب يتضمن مكونين رئيسيين: Meta 3D AssetGen و Meta 3D TextureGen، والتي تتعامل مع توليد النص إلى 3D وتوليد النص إلى النسيج على التوالي.

Meta 3D AssetGen

Meta 3D AssetGen (Siddiqui et al., 2024) مسؤول عن توليد الأصول 3D الأولية من النصوص الدخول. هذا المكون ينتج شبكة 3D مع منسوجات وخرائط مواد PBR في حوالي 30 ثانية.

Meta 3D TextureGen

Meta 3D TextureGen (Bensadoun et al., 2024) يتحسن من المنسوجات التي تم توليدها بواسطة AssetGen. كما يمكن استخدامه لتوليد منسوجات جديدة للشكال 3D الحالية بناء على وصف نصي إضافي. هذه المرحلة تستغرق حوالي 20 ثانية.

Point-E (OpenAI)

Point-E، تم تطويره بواسطة OpenAI، هو نموذج توليد 3D من النص آخر ملحوظ. على عكس DreamFusion، الذي ينتج تمثيلات NeRF، يولد Point-E سحابة نقطية 3D.

الميزات الرئيسية ل Point-E:

a) خط أنابيب مرحلتين: Point-E يولد أولاً منظرًا اصطناعيًا 2D باستخدام نموذج انتشار النص إلى الصورة، ثم يستخدم هذا المنظر لتشغيل نموذج انتشار ثاني ينتج سحابة النقاط 3D.

b) الكفاءة: Point-E مصمم ليكون كفؤًا حسابيًا، قادرًا على توليد سحابة نقطية 3D في ثوان على جهاز كمبيوتر واحد.

c) معلومات اللون: النموذج يمكنه توليد سحابة نقطية ملونة، مما يحافظ على المعلومات الهندسية والمظهر.

القيود:

  • دقة أقل مقارنة بالمناهج القائمة على الشبكات أو NeRF
  • سحابة النقاط تتطلب معالجة إضافية ل许多 التطبيقات اللاحقة

Shap-E (OpenAI):

بناءً على Point-E، قدم OpenAI Shap-E، الذي يولد شبكات 3D بدلاً من سحابة النقاط.

الميزات الرئيسية ل Shap-E:

a) التمثيل الضمني: Shap-E يتعلم توليد تمثيلات ضمنية (دوال مسافة موقعة) للكائنات 3D.

b) استخراج الشبكة: النموذج يستخدم تنفيذًا قابلًا للتفاضل لخوارزمية Marching Cubes لتحويل التمثيل الضمني إلى شبكة متعددة الأوجه.

c) توليد النسيج: Shap-E يمكنه أيضًا توليد منسوجات للشبكات 3D، مما يؤدي إلى نتائج أكثر جاذبية.

المزايا:

  • أوقات توليد سريعة (ثوان إلى دقائق)
  • إخراج الشبكة مباشر مناسب للعرض والتطبيقات اللاحقة
  • القدرة على توليد الهندسة والنسيج

GET3D (NVIDIA):

GET3D، تم تطويره بواسطة باحثين في NVIDIA (NVDA ) ، هو نموذج توليد 3D من النص قوي يركز على إنتاج شبكات 3D منسوجة عالية الجودة.

الميزات الرئيسية ل GET3D:

a) تمثيل السطح الصريح: على عكس DreamFusion أو Shap-E، يولد GET3D تمثيلات سطح صريح (شبكات) دون تمثيلات ضمنية متوسطة.

b) توليد النسيج: النموذج يتضمن تقنية عرض قابلة للتفاضل لتعلم وتوليد منسوجات عالية الجودة للشبكات 3D.

c) هيكل الشبكة التوليفي: GET3D يستخدم نهجًا شبكيًا توليفيًا، مما يسمح بأوقات توليد سريعة بعد تدريب النموذج.

المزايا:

  • هندسة ونسيج عالية الجودة
  • أوقات استدعاء سريعة
  • التكامل المباشر مع محركات العرض 3D

القيود:

  • يتطلب بيانات تدريب 3D، والتي يمكن أن تكون نادرة لبعض فئات الكائنات

الخلاصة

توليد 3D من النص يمثل تحولاً جوهرياً في كيفية إنشاء وتفاعلنا مع المحتوى 3D. من خلال الاستفادة من تقنيات الذكاء الاصطناعي المتقدمة، يمكن لهذه النماذج إنتاج أصول 3D معقدة عالية الجودة من وصف نصي بسيط. مع استمرار تطور هذه التكنولوجيا، يمكننا توقع رؤية نماذج أكثر تطوراً وقدرة على توليد 3D من النص التي ستثور في الصناعات من الألعاب والأفلام إلى تصميم المنتجات والهندسة المعمارية.

لقد قمت بإنفاق الخمس سنوات الماضية في غمرة العالم المثير للاهتمام من التعلم الآلي والتعلم العميق. وقد أدت شغفي وخبرتي إلى المساهمة في أكثر من 50 مشروعًا متنوعًا في هندسة البرمجيات، مع التركيز بشكل خاص على الذكاء الاصطناعي والتعلم الآلي. كما أدت فضولي المستمر إلى جذبي نحو معالجة اللغة الطبيعية، وهو مجال أنا متحمس لاستكشافه بشكل أكبر.