| | --- |
| | license: apache-2.0 |
| | pipeline_tag: text-to-3d |
| | library_name: transformers |
| | --- |
| | |
| | # alpha3D-v1 🧊🎨 |
| |
|
| | **alpha3D-v1** — это экспериментальная легковесная нейросеть для генерации 3D-объектов по текстовому описанию (Text-to-3D). |
| |
|
| | Модель преобразует текстовые эмбеддинги в цветные облака точек (Point Clouds). Обучена на синтетическом датасете геометрических примитивов. |
| |
|
| | ✨ Возможности |
| |
|
| | Генерация форм: Куб (Cube), Сфера (Sphere). |
| | Генерация цветов: Красный, Зеленый, Синий. |
| | Интерполяция: Умеет смешивать формы и цвета (например, фиолетовый кубо-шар). |
| | Формат: Выводит облако из 1000 точек (XYZ + RGB). |
| | |
| | 🛠 Установка |
| |
|
| | Для запуска вам понадобятся Python и несколько библиотек: |
| |
|
| | ```Bash |
| | pip install torch numpy matplotlib safetensors |
| | ``` |
| |
|
| | 🚀 Как запустить (Inference) |
| |
|
| | Если у вас уже есть файлы модели (model.safetensors, config.json, vocab.json), используйте этот код: |
| |
|
| | ```Python |
| | 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. Вы можете использовать, модифицировать и распространять этот код, в том числе в коммерческих целях. |
| |
|