因为内容确实不过,搜遍了全网,来做 Deep Learning for Pixel Art 的工作也没多少,肯定是实在是没有市场了吧 hhhh。

先说 GitHub 上一堆标着 pixel-art-generator 或者 image-to-pixel 的,前者大多是随机生成的,无意义的像素块,后者大多是拿 OpenCV 或者什么其他的图像处理的库 resize 一下就完了,最多能给你加个 filter 就不错。

只能说,像素风这种略抽象,却需要非常具体的东西,很可能现在还搞不定。

什么是 Pixel Art

关于像素画的定义,我倒是听过很多种,不过这种我感觉会因人而异吧,毕竟像素风也是在发展的,早些年画的像素人物风格已经和现在有较多差异了。

首先,一个共识就是,无抗锯齿,也就是每个像素都是具体的,不要有模糊的边界。毕竟像素画是基于像素的艺术,需要基于像素的修改

剩下的我感觉就因人而异了,有的人比较喜欢带边框的,有些人喜欢无边框,或者半边框,或者不连续不边框的。

其次,关于像素画的色彩,其实现在是没有要求的,之前可能由于电脑限制只有 8-bit 的色彩,但是现在几乎所有颜色你都可以使用,但是肯定不能太多(这里只是针对小篇幅)

画廊 & 数据集

在开始前,让我们先来瞅一眼画廊和数据集吧!

画廊

eBoy: https://hello.eboy.com/pool/everything/1

上面很多作品都很赞啊!

PixelJoint: https://pixeljoint.com/

是一个像素画论坛的画廊,作品只能说有优有劣

OpenGameArt: https://opengameart.org/art-search?keys=pixelart

做一个像素画的过滤,还是有比较多作品的

spriters-resource: https://www.spriters-resource.com/nes/

有一些精灵和游戏截图

probertson: https://probertson.tumblr.com/

都是带制作

数据集

sprites: https://paperswithcode.com/dataset/sprites https://spritedatabase.net/download

GitHub 上的一些数据集

优秀的项目

那让我们先来看一下比较优秀的项目吧!

info

这一部分一共有两内容,一个是 `Pixelate` 也就是 像素化,一个是 `Depixelate` 也就是 去像素化。

Pixelate

info

下面有些文献我还没有阅读,仅供参考哈!只有部分工作用到了深度学习,这里我就不加区分了。 另外我也就不加项目和论文的区分了哈,都放一起说了,论文会加书名号

《Automatic portrait image pixelization》 [pdf]

这是 2021 年的一篇文章, 其实是有丢失一些信息的啦,只用了图像处理,是用 MATLAB 实现的,可惜好像是没有公开代码,不过看起来是没有太复杂

《Pixelated image abstraction》 [pdf]

看起来效果挺不错的,2012 年的一篇文章,但这个其实是没有用到深度学习了

pixel_character_generator [code]

用 DCGAN、Conditional DCGAN、DC AutoEncoder 来做的角色生成,只能说是不太理想

Make Pixel Art in Seconds with Machine Learning [url]

这个是用 CycleGAN 做的,其实效果还 ok 啦,这里说用卡通图进行训练要比真实场景的图片效果好,也确实卡通图的 domain 会和像素画比较接近了 这里顺手贴一个 cartoonset

pixel-me [blog] [demo]

这个结果确实很 awesome,但感觉主要是针对人脸,对其他 domain 的图片效果就比较一般了,虽然没有论文和代码,但是应该是先去背景,用 Pix2pix 生成,最后补上了描边

《Deep Unsupervised Pixelization》 [pdf] [sup] [code]

这居然是发在 SIGGRAPH Asia 2018 的工作,np。通过无监督方法做的像素化,具体我还没研究。

eBoyGAN [code] [colab]

作者就是通过 StyleGAN,用上面提到的 eBoy 上的数据进行训练的,有 pre-trained 模型在 colab,但是好像是不能运行了

Depixelate

去像素画的工作其实有很多啊,但是绝大部分工作其实都不是用深度学习来完成的,也没有太好的整理

《MMPX Style-Preserving Pixel Art Magnification》 [page] [pdf]

还提供了一个 Web 工具,有多种算法的实现和对比 [url] 这里有我自己的一个 实现,但说实话我感觉其实效果一般,可能还不如 xBR2X

《Geometric Total Variation for Image Vectorization, Zooming and Pixel Art Depixelizing》 [pdf] demo [code]

也是没有用深度学习,直接图像矢量化了 np,可能大家都觉得从像素画到正常的图形应该不用深度学习吧 hhh

info

这两篇文章里面提供的几个算法都是可以参考的

Other Works

《Towards Machine-Learning Assisted Asset Generation for Games: A Study on Pixel Art Sprite Sheets》 [pdf] [blog]

这个工作主要是用 Pix2pix 给像素画上色,提供了一个不错的思路,主要是先搞定明暗关系,再给角色语义分割一下,最后生成各种颜色的角色(很适合做 NFT hhhh)。可惜代码没开源、数据集未公开。

绘制工具

像素画的绘制工具可太多了,这玩意毕竟是其他图片编辑器的降维打击,除了传统图片编辑器基本都支持像素画以外,目前比较专业的也是用的人最多的就是 aseprite.

aseprite: https://github.com/aseprite/aseprite

这玩意虽然开源,但是需要自行编译,或者去 steam 上购买

LibreSprite: https://github.com/LibreSprite/LibreSprite

这个用了 aseprite 最后一个 GPLv2 的 commit 衍生出来的,有 release,也不错

另外的一些项目就太多,还是之前说的,基本实现没什么难度,反复造轮子罢了。

结语

现在基于 GAN 的结果,很容易发现的一个现象就是 太脏了,主要是细微噪声太多,这也是最开始说的,像素画虽然抽象,但是每一个像素非常具体,不应该存在色差较小的过渡,细微的色差虽然能够引来色彩的变化,但是他太连续了,看起来也就没了像素画内味 er,基本不会有人承认他是像素画的。而像 pixel-me 这样的优秀项目,除了进行了一些 GAN 上的操作,在 GAN 前和 GAN 后也一定做了一些图像处理,不过他却没 Open Source,确实有点失望,还做了个软件付费:(

后面有时间我感觉我会试着做一下。