File size: 4,068 Bytes
0d624cc
 
 
 
 
 
75b4779
0d624cc
75b4779
0d624cc
 
 
 
 
 
 
 
 
 
 
 
 
 
2df5b70
0d624cc
2df5b70
0d624cc
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
---
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. Вы можете использовать, модифицировать и распространять этот код, в том числе в коммерческих целях.