
Я научил небольшой Transformer генерировать цифры одной нитью
ashotagabekov 43 минуты назад Я научил небольшой Transformer генерировать цифры одной нитью Средний 8 мин 413 Python * Машинное обучение * Обработка изображений * Кейс Наверняка вы видели портреты, собранные из одной...
Anthropic — What company has the best second artificial intelligence model at the end of June?
Вот важная новость с фронта ИИ: ashotagabekov 43 минуты назад Я научил небольшой Transformer генерировать цифры одной нитью Средний 8 мин 413 Python * Машинное обучение * Обработка изображений * Кейс Наверняка вы видели портреты, собранные из одной нити, натянутой между сотнями гвоздей. Я решил проверить: можно ли научить нейросеть генерировать не готовую картинку, а инструкцию, по которой такая картинка строится? Я превратил цифры MNIST в последовательности переходов между 256 гвоздями и обучил небольшой Transformer продолжать путь нити.
В результате модель выдаёт не PNG, а JSON-траекторию, которую можно отрисовать в любом разрешении - или потенциально передать физической string-art установке. Представьте круг из 256 гвоздей, одну непрерывную нить и последовательность переходов:0 -> 152 -> 250 -> 147 -> ... В сыром бинарном представлении каждый индекс помещается в один байт.
Технические детали
Несколько сотен таких переходов, заранее известные правила декодирования - и по этой инструкции на экране, а потенциально и на физической установке, появляется узнаваемая цифра. Я назвал этот эксперимент Nitograph. Его суть не в том, чтобы изобрести новый формат сжатия.
Мне было интересно проверить гипотезу: можно ли заменить матрицу пикселей короткой последовательностью действий, а затем научить модель самостоятельно такие последовательности генерировать. Как устроен pipelineПроект выстроен в цепочку из нескольких этапов: MNIST image -> string-art encoder -> dataset of nail sequences -> causal Transformer -> sampler with geometry rules -> JSON / 4K renderСначала изображение цифры превращается в траекторию нити. Затем такие траектории собираются в датасет, на котором обучается causal Transformer.
После обучения модель может сгенерировать траекторию для заданного класса, а renderer превращает её в картинку . Главный артефакт здесь - не PNG, а JSON:{ "digit": 7, "num_nails": 256, "line_count": 220, "temperature": 0. 85, "top_k": 32, "seed": 42, "nails": }Для одного из примеров получились такие размеры: model params: 1,532,864checkpoint: 7,153,739 bytesPNG render: 6,454,345 bytesJSON path: 2,251 bytespath length: 221 nail indicesrender size: 4096x4096Сравнивать эти числа как обычное сжатие некорректно.
Отраслевые последствия
PNG самодостаточен, а JSON требует заранее известного декодера. Размер PNG также зависит от разрешения, свечения и параметров сохранения. Кроме того, текущий JSON сделан человекочитаемым и содержит метаданные.
Если хранить только 221 индекс в бинарном виде, они заняли бы примерно 221 байт. Поэтому правильнее считать JSON не «сжатой картинкой», а процедурным описанием построения. PNG отвечает на вопрос «что получилось».
JSON отвечает на вопрос «как это построить». Как изображение становится траекториейПервый и самый важный компонент - не нейросеть, а string-art encoder.
Этот прогресс даёт важные сигналы о будущем отрасли, и технологический мир внимательно наблюдает.





