设计师要开工,总是离不开配色方案,也就是色板。
不过,做色板可不是个简单的活,色板生成器Colormind的作者Jack Qiao(名字来自Product Hunt,我们下面叫他小乔吧)解释了这项工作难在何处:一系列颜色搭配得好了,大部分人都知道好看,但想解释“为什么”就不那么容易了;要创造出既好看、又符合品牌指导等等预设条件的色板,更是难上加难。
作为一个提起色板就头疼的设计师,小乔配色一靠猜二靠试,三靠从在线颜色生成器和好看的照片上取色。
虽有三大法宝在手,小乔的设计师生涯依然艰难。好在数学功底不错的小乔悟出了一个道理:要做好设计,先过码农关,我高贵的灵感怎能浪费在配色这种事上!
于是,小乔选了算法,开始尝试用机器学习自动生成色板。
保守的LSTM
一开始,小乔把生成色板转化成了一个向量序列预测问题:
已知一个由四种颜色组成的序列,下一种颜色是什么?
他选择用长短时记忆网络(LSTM)来解决这个问题,得到的结果是这样的:
有些配色方案看起来还不错,但是LSTM似乎不喜欢明亮的颜色。这个模型害怕失败,总是倾向于选择灰、棕等中性颜色。
小乔试着去优化LSTM,到2016年底终于放弃了。因为,他移情别恋了。
还是GAN好
生成对抗网络(GAN)是Ian Goodfellow于2014年提出的模型,近两年来一直是学术界研究热点。它的主要功能,是用来造假生成以假乱真的图片,量子位曾经写过一个玩转GAN的教程。
小乔觉得,生成色板这个工作交给GAN更合适,确切地说是pix2pix,也就是那篇题为Image-to-Image Translation with Conditional Adversarial Nets的论文,和它的开源代码。
pix2pix有很多衍生品,前些天火遍Twitter的画猫应用也是用它改的。
小乔下载了pix2pix并做了一些改动,用Adobe Color的数据进行训练,让它在残缺的色板里填充颜色。GAN选择的颜色经常和人类不太一样,但还是很好看的。
训练模型时,小乔发现L1参数对视觉效果影响最大,它影响了模型的空间感知。L1数值越高,输出的随机性越低,色彩也更单调。
还有一个很关键的问题:会不会过拟合?既然是用Adobe Color训练,如果它过拟合到了直接返回输入数据的程度,我直接用Adobe Color就好了嘛……按理说一个GAN倒是不会。
小乔测试的结果是,确实和没有过拟合。
从照片提取色板
玩转了根据一两个颜色补全色板,小乔还没折腾狗,他开始研究如何从图片提取色板。
其实,网上已经有不少提取色板的工具,比如说Pictaculous就是这样一个在线工具。这类工具通常使用颜色量化算法MMCQ。
提取色板遇到的最大问题来自照片本身:大部分照片,配色其实都不怎么好看。而色板提取常用的MMCQ,往往力求真反映照片的颜色,结果就是生成出的色板也跟着不好看。
不仅不好看,还排列得很随机,跟GAN填充出的色板一点也不一样。
比如说这张照片生成出的色板:
小乔觉得,用GAN应该能让色板变美一点,但他尝试了一种更简单粗暴的方法,并给这种方法起名叫generative-MMCQ。
generative-MMCQ,就是先给MMCQ提取的色板生成几个变体,然后将每个色板上的颜色调换一下位置,再用分类器对调换位置后的色板进行打分,然后选出最好的一个。
最后的分类器,掌握着色板的生杀大权。小乔建立了一个独立的分类器并用手选的颜色对它进行训练。
Demo
小乔折腾的结果,就是我们一开始提到的Colormind。
在量子位(QbitAI)公众号会话界面回复“色板”,获取本文提到的各种资源链接,包括Colormind、Pictaculous、颜色量化算法、pix2pix等。
可惜没找到Colormind开源算法,希望有大神可以用pix2pix改一个出来~