Погляд розробника: Нейронні клітинні автомати високої роздільної здатності

Мистецтво та математика перетинаються у машинному навчанні.

Клітинні автомати використовують сітку клітинок. Кожна клітинка змінює свій стан на основі фіксованих правил. Гра «Життя» Конвея — відомий приклад. Дотримуючись простих правил, можна створювати складні візерунки.

Нейронні клітинні автомати (NCA) змінюють цей підхід. Замість фіксованих правил нейронна мережа вивчає ці правила на основі даних. Мережа передбачає наступний стан клітинки, аналізуючи її сусідів. Це дозволяє створювати складні та сюрреалістичні візуальні ефекти.

Генерація зображень високої роздільної здатності є складним завданням. Зі збільшенням розміру сітки математичні обчислення стають занадто складними для мережі.

Щоб вирішити цю проблему, я використовую метод під назвою pixel shuffle.

Ви можете реалізувати це за допомогою PyTorch. Ось простий спосіб структурування моделі NCA:

import torch
import torch.nn as nn
import torch.optim as optim

class NCA(nn.Module):
    def __init__(self):
        super(NCA, self).__init__()
        self.conv = nn.Conv2d(3, 64, kernel_size=3, padding=1)

    def forward(self, x):
        x = torch.relu(self.conv(x))
        x = torch.max_pool2d(x, 2)
        x = torch.relu(self.conv(x))
        x = torch.max_pool2d(x, 2)
        return x

NCA дозволяє подолати розрив між кодом та цифровим мистецтвом. Це активна галузь для наукової візуалізації та креативного дизайну.

Джерело: https://dev.to/kelvin_kariuki_20f4bec616/developer-take-on-a-high-resolution-neural-cellular-automata-111g

Додаткова спільнота для навчання: https://t.me/GyaanSetuAi