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
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Space using prostochel097/alpha3D-v1 1