設計師要開工,總是離不開配色方案,也就是色板。
不過,做色板可不是個簡單的活,色板生成器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改一個出來~