印度小哥在「我的世界」里搭神经网络,做图像识别,网友:这是「别人的世界」

简介: 在沙盒游戏《我的世界》中,有人搭建了完整的校园,有人举办了毕业典礼,有的人从零开始制作计算机,玩家们层出不穷的创意总能让人眼前一亮。现在,又有一位印度程序员展现了真正的技术:在《我的世界》里搭建神经网络。

对于计算机科学爱好者们来说,有关《我的世界》中的环境是否「够格」作为各种严肃实验的话题,早已经过了充分讨论:

1.jpg


答案是肯定的,《我的世界》中红石电路和命令方块体系已经分别图灵完备了。这意味着我们理论上可以在其中构建一个通用图灵机(虽然难度比较大),进而造出一台功能完整的常规架构计算机。


既然如此,我们能不能在游戏里「敲出」一个神经网络模型呢?


已经有人做到了。最近,一名来自印度的程序员 Ashutosh Sathe 向我们展示了真正的技术,他在《我的世界》里运行起了一个具有图像识别能力的神经网络。

只要在游戏里的「画板」上写字,《我的世界》里的「计算机」就可以识别出你写的内容是什么:

2.gif

在《我的世界》里进行 MNIST 式的手写数字识别。


3.jpg

「神经网络推断出画板上的文字为数字 1」。

除了给出识别的结果,神经网络识别的过程也是清晰可见:

4.gif

5.gif


在看了这波操作之后,众多吃瓜网友留下了不争气的泪水,感慨道:「这是『别人的世界』……」


这一炫酷的技术被称为 scarpet-nn,是一套可以让玩家在《我的世界》游戏中运行二值神经网络(BNN)的工具。BNN 是一种激活、权重被固定为 1 或-1 的特殊神经网络,大幅度简化了神经网络的运算量,最早由 Yoshua Bengio 等人提出。正是这些特性,让 BNN 的权重可以由单个二进制位来表示,并在《我的世界》里运行。



与此前人们在《我的世界》中运行神经网络的一些尝试不同,scarpet-nn 的 API 允许人们在游戏中运行任何二值神经网络的体系架构。也就是说,任何人都可以训练自己的二值神经网络,然后将其运行在《我的世界》里。


此外,Ashutosh Sathe 还开放了代码。


项目地址:https://github.com/ashutoshbsathe/scarpet-nn


技术细节:投影(Litematica)原理图生成


要想在我的世界里运行神经网络,你首先需要安装一个 Java 版游戏,Litematica 和 carpetmod 两个 mod,另一方面还需要有 Python 3,深度学习框架 pytorch 和 nbtlib 库。


通用表征标准


在 scarpet-nn 中,nn-to-litematica 模块将 pytorch 检查点的二值化权重转换为 litematica 原理图。每个 litematica 的排列方式是让前两个维度位于 (x,z) 平面上。此外,原理图的加载点(加载原理图时玩家所在的区域)总是表示权重数组中的第一个数字。权重数组中的第一个维度是从加载点到 X 轴正半轴,第二个维度是从加载点到 Z 轴正半轴。超过 3 的维度会被重塑成第 3 个轴(Y 轴)。


卷积层的表征


这里遵循上述通用表征标准。由于卷积层是以四维数组的形式存储的,因此需要压缩额外的维度,使其变成三维。卷积层的典型 shape 是 [c_2,c_1,f_h,f_w]。其中,

  • c_2 = 输出激活应有的通道数
  • c_1= 输入激活应有的通道数
  • (f_h,f_w)= 卷积滤波器的高度和宽度


为了将此转换成三维的表征,scarpet-nn 将 (f_h,f_w) 压缩成一个大小为 f_h×f_w 的单一维度。因此,生成的原理图中新的卷积层将会是 [c_2,c_1,f_h×f_w]。


为了直观地理解这一点,请看下面的样例图片。该图展示了第三个卷积层(conv3)权重的块表征,它的权重从 [16, 8, 3, 3] 压缩成了 [16, 8, 9]。

6.jpg


全连接层的表征


全连接(fc)层也符合 scarpet-nn 的通用表征标准。全连接层的典型 shape 是 [n,k],输入是 [m,n],输出是 [m,k]。由于所有的操作都是二维的,所以不需要做维度调整。由于也没有第三维,所以整个的权重数组都在 X-Z 平面内。

如下是 fc1 层的示意图。该层的 shape 是 [8, 16]。

7.jpg


看完技术细节,有人觉得,在这种像素化的沙盒游戏里,用红石搭建神经网络,未免也太过复杂……

8.jpg


但也有人觉得,恰恰是因为用红石逻辑构建网络,才让人印象深刻。

9.jpg


作者本人回复说,scarpet-nn 比命令方块体系的性能要好得多,《我的世界》可以将其用于绘制地图时在隐蔽模式下打开隐藏内容。

10.jpg


只是目前,在《我的世界》中可以实现的神经网络功能仍然有限:看起来只有前向传播而没有反向传播。

11.jpg


不过在玩家们的不懈努力下,又有什么是不能实现的呢?

参考链接:https://ashutoshbsathe.github.io/scarpet-nn/https://www.reddit.com/r/MachineLearning/comments/gb08da/p_i_wrote_an_api_to_build_neural_networks_in/

相关实践学习
基于函数计算实现AI推理
本场景基于函数计算建立一个TensorFlow Serverless AI推理平台。
相关文章
|
5天前
|
机器学习/深度学习
大模型开发:解释卷积神经网络(CNN)是如何在图像识别任务中工作的。
**CNN图像识别摘要:** CNN通过卷积层提取图像局部特征,池化层减小尺寸并保持关键信息,全连接层整合特征,最后用Softmax等分类器进行识别。自动学习与空间处理能力使其在图像识别中表现出色。
29 2
|
5天前
|
机器学习/深度学习 人工智能 TensorFlow
人工智能与图像识别:基于卷积神经网络的猫狗分类器
人工智能与图像识别:基于卷积神经网络的猫狗分类器
76 0
|
5天前
|
机器学习/深度学习 人工智能 TensorFlow
人工智能与图像识别:基于深度学习的卷积神经网络
人工智能与图像识别:基于深度学习的卷积神经网络
40 0
|
5天前
|
机器学习/深度学习 算法 计算机视觉
卷积神经网络(CNN)在图像识别中的应用与优化
卷积神经网络(CNN)在图像识别中的应用与优化
112 0
|
6月前
|
机器学习/深度学习 数据可视化 算法
图像识别5:LDA 与 SVM+神经网络+支持向量机实验
图像识别5:LDA 与 SVM+神经网络+支持向量机实验
59 0
|
6月前
|
机器学习/深度学习 数据采集 算法
图像识别4:决策树+神经网络GUI+支持向量机实验
图像识别4:决策树+神经网络GUI+支持向量机实验
50 0
|
8月前
|
机器学习/深度学习
深度学习卷积神经网络图像识别介绍
深度学习卷积神经网络图像识别介绍
91 0
|
10月前
|
机器学习/深度学习 存储 数据可视化
【MATLAB第45期】基于MATLAB的深度学习SqueezeNet卷积神经网络混凝土裂纹图像识别预测模型
【MATLAB第45期】基于MATLAB的深度学习SqueezeNet卷积神经网络混凝土裂纹图像识别预测模型
|
机器学习/深度学习 传感器 算法
【图像识别】基于卷积神经网络CNN和支持向量机SVM实现花卉图像识别附matlab代码
【图像识别】基于卷积神经网络CNN和支持向量机SVM实现花卉图像识别附matlab代码
|
机器学习/深度学习 算法 前端开发
人工智能,神经网络,图像识别,目标检测
该库采用C及C++ 语言编写,可以在windows,linux,macOSX系统上面运行。该库的所有代码都经过优化,计算效率很高 它的一个目标是提供友好的机器视觉接口函数,从而使得复杂的机器视觉产品可以加速面世。该库包含了横跨工业产品检测、医学图像处理、安防、用户界面、摄像头标定、三维成像、机器视觉等领域的超过500个接口函数。
201 0
人工智能,神经网络,图像识别,目标检测

热门文章

最新文章