Visão do Desenvolvedor: Autômatos Celulares Neurais de Alta Resolução
A arte e a matemática se encontram no aprendizado de máquina.
Autômatos celulares utilizam uma grade de células. Cada célula muda de estado com base em regras fixas. O Jogo da Vida de Conway é um exemplo famoso. Você segue regras simples para criar padrões complexos.
Os Autômatos Celulares Neurais (NCA) mudam isso. Em vez de regras fixas, uma rede neural aprende as regras a partir de dados. A rede prevê o próximo estado de uma célula observando seus vizinhos. Isso produz visuais complexos e surreais.
Gerar imagens de alta resolução é difícil. À medida que a grade cresce, a matemática torna-se complexa demais para a rede.
Eu utilizo uma técnica chamada pixel shuffle para resolver isso.
- Eu faço o downsampling da grade para uma resolução menor.
- Eu treino a rede nesta grade menor.
- Eu faço o upsampling da saída para obter uma imagem de alta resolução.
Você pode implementar isso usando PyTorch. Aqui está uma maneira simples de estruturar um modelo 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
O NCA permite que você preencha a lacuna entre o código e a arte digital. É um campo ativo para visualização científica e design criativo.
Comunidade de aprendizado opcional: https://t.me/GyaanSetuAi