开发者视角:高分辨率神经细胞自动机
艺术与数学在机器学习中交汇。
细胞自动机使用细胞网格。每个细胞根据固定规则改变状态。康威生命游戏 (Conway's Game of Life) 是一个著名的例子。通过遵循简单的规则,可以创造出复杂的模式。
神经细胞自动机 (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://t.me/GyaanSetuAi