alpha3D-v1 🧊🎨
alpha3D-v1 — это экспериментальная легковесная нейросеть для генерации 3D-объектов по текстовому описанию (Text-to-3D).
Модель преобразует текстовые эмбеддинги в цветные облака точек (Point Clouds). Обучена на синтетическом датасете геометрических примитивов.
✨ Возможности
Генерация форм: Куб (Cube), Сфера (Sphere).
Генерация цветов: Красный, Зеленый, Синий.
Интерполяция: Умеет смешивать формы и цвета (например, фиолетовый кубо-шар).
Формат: Выводит облако из 1000 точек (XYZ + RGB).
🛠 Установка
Для запуска вам понадобятся Python и несколько библиотек:
pip install torch numpy matplotlib safetensors
🚀 Как запустить (Inference)
Если у вас уже есть файлы модели (model.safetensors, config.json, vocab.json), используйте этот код:
from safetensors.torch import load_file
import torch
import json
import numpy as np
import matplotlib.pyplot as plt
# 1. Загрузка конфига и словаря
with open("config.json", "r") as f: config = json.load(f)
with open("vocab.json", "r") as f: vocab = json.load(f)
# 2. Инициализация модели (Архитектура MLP)
model = torch.nn.Sequential(
torch.nn.Linear(5, 128), torch.nn.BatchNorm1d(128), torch.nn.ReLU(),
torch.nn.Linear(128, 512), torch.nn.BatchNorm1d(512), torch.nn.ReLU(),
torch.nn.Linear(512, 1024), torch.nn.ReLU(),
torch.nn.Linear(1024, config['parameters']['num_points'] * 6)
)
# 3. Загрузка весов
model.load_state_dict(load_file("model.safetensors"))
model.eval()
# 4. Функция генерации
def generate(color, shape):
vec = [0.0] * 5
if color in vocab: vec[vocab[color]] = 1.0
if shape in vocab: vec[vocab[shape]] = 1.0
with torch.no_grad():
out = model(torch.tensor([vec])).numpy()[0]
# Визуализация
xyz, rgb = out.reshape(-1, 6)[:, :3], np.clip(out.reshape(-1, 6)[:, 3:], 0, 1)
fig = plt.figure(); ax = fig.add_subplot(111, projection='3d')
ax.scatter(xyz[:,0], xyz[:,1], xyz[:,2], c=rgb, s=10)
plt.show()
# 🔥 Запуск
generate("red", "sphere")
generate("blue", "cube")
🧠 Архитектура и Обучение
Модель представляет собой простой MLP (Multi-Layer Perceptron):
Вход: One-Hot вектор размерностью 5 (словарь: red, green, blue, cube, sphere).
Скрытые слои: 128 -> 512 -> 1024 нейронов.
Выход: Вектор размерностью 6000 (1000 точек × 6 значений: X, Y, Z, R, G, B).
Функция потерь: MSE (Mean Squared Error).
Датасет: Синтетический генератор. Сферы создаются по спирали Фибоначчи, кубы — по равномерной сетке.
🔮 Латетное пространство
Модель способна на морфинг между объектами. Смешивая входные векторы, можно получать промежуточные состояния:
0.5 * Cube + 0.5 * Sphere = Раздутый куб ("Подушечка").
0.5 * Red + 0.5 * Blue = Фиолетовый (Magenta).
📄 Лицензия
Распространяется под лицензией Apache 2.0. Вы можете использовать, модифицировать и распространять этот код, в том числе в коммерческих целях.
- Downloads last month
- 12