人工智能设计师之智能排版的另一种实现方式
Flipboard的自动排版系统Duplo
最近在整理算法驱动设计的案例,翻到Flipboard的自动排版系统,再次研究了下,把相关的技术思路整理了下:
Flipboard主要要解决的是多种屏幕尺寸的排版方案选择,系统内置一些模版库,通过输入内容的决策树判断,组合出大量的排版方案(一般达到2000+以上),然后通过评估(打分,通过预先制定评分规则),选取分数最高的方案,然后进行再进一步的精细化排版。
一、大批量生成排版方案
例如:
生成3栏的横向版面,Duplo可以进行匹配组合,生成2000+个排版样式。
二、排版方案生成的逻辑
把复杂的版面进行拆解,分解成更小的单元,使用的时候,进行组合,拼装出目标版面。
如,上图从2栏的模版里选取适合的,加上从1栏的模版里选取的进行组合。
基于决策树的规则体系:
三、评估2000+个排版方案,从中选择最适合的的方案
构建一个评估函数,由Page flow、每一页面中文字所占比例、不同尺寸版面内容展示的一致性、图片的评估等构成。
3.1 Page flow
这里用到了Perlin noise算法,Perlin Noise 可以用来表现自然界中无法用简单形状来表达的物体的形态,比如火焰、烟雾、表面纹路等。这里运用它为每一种版面方案进行打分,下图是评分规则:
3.2 每一页面中文字所占比例
这里认为80%或更高的比例更适合,即得分越高。
3.3 不同尺寸版面内容展示的一致性
由于是考虑适配各种屏幕的排版方案,因而会考虑选取一种内容展示更一致的方案。
3.4 图片的评估
对于图片,大批量的排版方案中会采用不同的缩放和裁切参数,这里的评估采用opencv识别图片中的人脸,选择最佳的缩放和裁切参数。
综合以上的得分,选择一种排版方案。
四、进一步优化排版
通过栅格系统,再进一步地微调页面内各元素的位置与尺寸。
以上为本文的全文。