AI技术在智能海报设计中的应用

背景

在视觉设计领域中,设计师们往往会因为一些简单需求付出相当多的时间,比如修改文案内容,设计简单的海报版式,针对不同机型、展位的多尺寸拓展等。这些工作需要耗费大量的时间、人力成本(5~6张/人日),但对设计师的进步成长起到的作用却非常有限。另一方面,精准营销是未来的大趋势,在大流量背景下,首页的海报资源展位需要展示“千人千面”的效果,这对海报的生产效率也提出了非常高的要求。所以,我们美团外卖技术团队尝试结合AI技术,来协助设计师避免这种低收益、高重复的任务,同时低成本、高效率、高质量地完成海报图片的生成。本文以Banner(横版海报)为例,介绍我们在海报设计与AI技术结合方面所进行的一些探索和研究。

分析

什么是Banner的设计过程?我们尝试总结了对Banner设计的理解,Banner的设计过程是一系列的具备某种特征属性的素材图层的有序叠加过程。这里的特征属性既包括颜色、形状、纹理、主题等视觉属性,也包括位置、大小、贴边等空间属性。在这个过程中,哪些环节可以被机器算法所探索呢?文献[1]研究了如何调整图像的颜色分布,使杂志封面的视觉效果更加符合人眼的视觉特性;文献[2]以此为基础,引入了基于显著性识别的图像裁剪,并使用优化方法来解决布局问题。阿里巴巴的鹿班系统在去年双十一当天,生成1.7亿张Banner;京东内部也在孵化玲珑和莎士比亚系统,更加智能地设计文案和Banner。

图1 封面配色&布局设计[2]

在设计领域的一些子问题上,可以用算法来挖掘出数据背后的规律(如图1所示)。那么,能否构建一个完整的学习算法和处理系统,统一解决Banner设计中所有的子问题(配色、布局、搭配、生成)呢?

技术方案

素材图层是Banner的基础元素,其本身可以被特征化,同时组成Banner的若干元素间的叠加顺序可以被序列化,因此,算法实际是在学习“在什么时候,选择某种素材,放在哪里”。

图2 流程框架

如图2所示,为了解决这个问题,我们设计规划器、优化器、生成器来共同构建海报设计的学习与生产过程。其中:

  1. 规划器从数据中学习设计师对不同风格下的设计习惯与规律;
  2. 优化器基于美学质量和设计原则,对前者的输出结果做精细化调整;
  3. 最后,由生成器选取/生成素材并渲染成图;
  4. 素材库作为这三个环节的基础,负责素材管理和素材标签化。

素材库

如何提取素材图片的特征属性,这是比较典型的分类问题。在计算机视觉领域,传统方案是提取图像的颜色、梯度等低级语义特征[3],结合传统的分类器(LR、SVM等)来实现分类。近年来,基于深度学习的方法因为能表达更为复杂的语义特征,逐渐成为主流方法[4]。如图3所示我们提取传统的低级语义特征,以及基于CNN的高级语义特征,来共同完成素材特征属性提取。

图3 素材库-特征提取

规划器

完成素材的数据化工作后,怎样学习Banner的设计过程?

作为一种生成模型,对抗生成网络(GAN)[5]在近年广为应用,其优势是可以端到端地训练图像生成模型,但在我们的应用场景下,GAN存在以下两个问题:

  1. GAN的过程更像是“黑盒”的过程:输入方面,虽然Conditional-GAN之类的方法可以实现某种程度有条件地可控生成,但对于Banner设计任务来说,其输入信息(文案、目标风格、主体信息)仍然过于复杂;
  2. 输出方面,GAN直接生成源数据(即图像),但非常缺乏解释性。我们需要的是更加直观、更有解释性的信息,比如素材的类型、颜色、轮廓、位置等。

在上文中有提到,Banner设计过程是素材图层依次叠加的过程。因此,我们可以用序列生成模型来拟合这个过程[6]。在建模过程中,我们把素材视作词汇(Word),海报视作句子(Sentence),词汇索引视为离散化的特征索引,素材叠加顺序就可以视为句子中的词顺序[7]。

图4 规划器-序列生成

图4是我们使用的序列生成模型,输入主体信息和目标风格,输出素材特征的序列。为了增强预测过程中多条路径结果的多样性,我们在监督性地训练每个时刻的输出之外,还引入了评估整个序列合理性的Object loss。如图5所示,借鉴SeqGAN的思想,Object loss可以由判别器来提供[8]。

图5 SeqGAN[8]

优化器

规划器预测素材的量化特征,为了确保最终成图符合美学标准,需要一个后处理的过程(图6)。我们用优化器来解决这个问题。从本质上讲,这是一个优化过程。通过和设计师们的沟通,我们设计了一些基于常规设计理念和美学标准的目标函数,动作集合包括移动、缩放、亮度调整等,结合优化方法,提升Banner的视觉效果。

图6 优化器

生成器

优化后的素材特征序列,通过生成器来渲染成图。如图7所示,对于素材库检索不到符合某种特征属性的素材的情况,我们设计了图像风格迁移的方法来实现图像特征迁移。这里的特征可以是颜色、形状、纹理等低级特征,也可以是某种语义化的视觉风格特征,对后者来说,可以将源图像的内容Content和目标图像的风格Style在某种特征空间(CNN中的某一层)里做融合,实现风格迁移[9,10]。

图7 素材生成

应用场景及功能拓展

“千人千面”的精准营销是未来营销策略的趋势,这对商品素材的丰富性提出了非常高的要求;从为商家赋能的角度来说,也需要为商家提供更多样的海报版式,这也要求系统具备海报风格的快速学习能力和拓展能力。对此,在常规设计风格的研究之外,我们从以下3个方面做了一些拓展研究。

主体图片加工

商品素材的丰富度与美学质量是精细化营销及海报美学质量非常重要的一环。其中最核心的要求是图像分割的能力[11,12]。以全卷积网络(FCN)为基础,如图8所示,我们采取以下几个在目标分割领域常见的技巧,来实现商品图片的目标分割:

  1. Encoder-Decoder结构
  2. 空洞卷积
  3. 多尺度特征融合
  4. Two-Stage微调网络

图8 图像语义分割&抠图(结构图部分参考DeepLab v3+[12])

这种基于语义分割方法的结果,在专业设计师人工评审质量的过程中,发现主体边缘有时会出现明显的锯齿感。经过分析,我们认为有以下两个原因:

  1. 语义分割模型把问题建模为一个“像素级分类过程”,每一个像素的类别都天然地被假设为“非此即彼”,大多数的Segmentation模型都采用Cross-Entropy作为损失函数;
  2. 因此,无论是从模型结构(CNN)还是从损失函数的角度来说,分割模型会更倾向于全局信息从而丢弃局部结构信息,导致只能得到边缘比较粗糙的分割结果。

为此,如图8所示,我们在图像分割的输出结果之外,结合了Image Matting方法:

  1. 对分割模型的输出结果做形态学变换,生成三值Trimap,分别表示前景区、背景区、未知区;
  2. 应用常规的Matting方法,比如Bayesian、Close-Form等,以原图像和Trimap图像为输入,输出前景图的Alpha通道;
  3. Matting可以使前景主体的边缘更加平滑,视觉质量更高(图9)。

图9 商品主体抠图

另外,基于图像美学质量评分模型,我们会优先选择质量分高的图片作为主体素材来源。对中低分的图片,未来可以考虑借鉴Cycle-GAN[13]的思想,设计基于半监督和GAN的图像增强网络,美化后再经过图像分割产生主体素材。

海报模板拓展

上述的常规设计风格的学习属于一种广义的设计风格,需要设计师先期投入很多精力做风格划分以及数据收集、处理。为了快速适配热点场景,我们借鉴图像检索技术(如图10所示),提取素材图片的CNN特征及颜色特征,使用欧式距离来度量素材相似度,这能节省人工打标签的成本,实现基于固定模板的自动拓展及生成(海报临摹)。

图10 素材图像检索与模板拓展

多分辨率拓展

在日常工作中,设计师在设计出Banner后,往往要花费很长时间对不同展位、不同版本、不同机型做多尺寸适配(如图11所示)。能否用算法来协助人工提效?在素材已经确定,并且相互的位置关系近乎确定的条件下做多分辨率适配,这本质上是一个优化问题,我们在上文布局优化器的基础上,增加元素的局部相对位置与全局绝对位置的拓扑关系作为目标函数。目前,系统支持在某个固定宽高比±30%范围内的任意分辨率适配,未来会进一步扩大适配范围。

图11 多分辨率拓展

总结

目前,我们的Banner智能设计系统为钻展(外卖首页广告位)、商家店铺装修等业务提供稳定的设计能力;素材加工等子能力也在为外卖、闪购等商品图片提供技术支持。后续我们会从扩展常规设计风格、语义相关的颜色及素材挖掘、自动解析数据、构建自评估学习闭环等方面继续研究,进一步提高算法的设计能力和适用性,尽可能协助设计师提高效率,降低高重复性工作的时间和经济成本。

参考文献

[1] A. Jahanian, J. Liu, D. Tretter, Q. Lin, E. O’Brien-Strain, S. Lee, N. Lyons, and J. P. Allebach. "Automatic Design of Colors for Magazine Covers". In Proc. IS&T/SPIE Electronic Imaging, International Society for Optics and Photonics, 2013 [2] X. Y. Yang, T. Mei, Y. Q. Xu, Y. Rui, S. P. Li. "Automatic Generation of Visual-Textual Presentation Layout". ACM Transactions on Multimedia Computing, Communications, and Applications, 2017 [3] David G. Lowe. "Distinctive Image Features from Scale-Invariant Keypoints". International journal of computer vision, 2004 [4] Alex Krizhevsky, Ilya Sutskever, Geoffrey E. Hinton. "ImageNet Classification with Deep Convolutional Neural Networks". NIPS, 2012 [5] I. Goodfellow, J. Pouget-Abadie, M. Mirza, B. Xu, D. Warde-Farley, S. Ozair, A. Courville, Y. Bengio. "Generative Adversarial Networks". NIPS, 2014 [6] K. Kawakami. "Supervised Sequence Labelling with Recurrent Neural Networks". Studies in Computational Intelligence, 2008 [7] T. Mikolov. "Statistical Language Models based on Neural Networks". 2012 [8] L. Yu, W. Zhang, J. Wang, Y. Yu. "SeqGAN: Sequence Generative Adversarial Nets with Policy Gradient". AAAI, 2017 [9] L.A. Gatys, A.S. Ecker, M. Bethge. "Image Style Transfer Using Convolutional Neural Networks". CVPR, 2016 [10] Y. Li, M.Y. Liu, X. Li, M.H. Yang, J. Kautz. "A Closed-form Solution to Photorealistic Image Stylization". ECCV, 2018 [11] J. Long, E. Shelhamer, T. Darrell. "Fully Convolutional Networks for Semantic Segmentation". CVPR, 2015 [12] L.C. Chen, Y. Zhu, G. Papandreou, F. Schroff, H. Adam. "Encoder-Decoder with Atrous Separable Convolution for Semantic Image Segmentation". ECCV, 2018 [13] J.Y. Zhu, T. Park, P. Isola, A. A. Efros. "Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks". ICCV, 2017

作者简介

晓星,2017年6月加入美团,目前主要负责美团外卖图像内容挖掘、增强、生成方面的相关工作,致力于图像相关技术的积累及落地。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/276574.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

javaScript如何监听浏览器关闭事件

转载链接:http://www.cnblogs.com/Tim_Liu/archive/2010/11/09/1872596.html 最近写东西的时候发现需要对浏览器的关闭进行监听,当用户关闭的时候需要调用session.invalid();清空session信息,但是仔细一查手册发现无论是body还是window都没有onclose事件,之后onload…

C++树的实现

C树的实现 STL里面没有提供容器树的模板实现&#xff0c;自已写一个&#xff1a;Tree.h //tree.h 头文件 #include <list> #include <algorithm> using namespace std; struct TreeNode; //定义一个结构体原型 classTree; //定义一个类原型 classIterator; //定义一…

加密文件忘记密码怎么解密_MyBatis 配置文件 用户密码加密存储

properties配置文件一般是使用properties保存配置文件内容,然后在mybatis配置文件中进行读取在resource文件下新建db.properties文件内容如下# 数据库配置文件 driver com.mysql.cj.jdbc.Driver url jdbc:mysql:// /mybatis username password 然后,接着把文件放入源码包…

PHP,如何防止同一用户同一时间多次登录

转载链接&#xff1a;http://blog.sina.com.cn/s/blog_4832ea590101djnp.html PHP&#xff0c;如何防止同一用户同一时间多次登录&#xff1f; 创建表 username password sessionId 张三 123456 ksw9dkw9ksl92w3 备注&#xff1a;用户…

科技前沿智能创新 2019北京智能家居 全屋智能博览会

2019北京智能家居大型展览会 2019北京全屋智能家居博览会报道布展&#xff1a;2019年6月26日-27日 展会开幕&#xff1a;2019年6月28日上午9&#xff1a;00时展会交易&#xff1a;2019年6月28日-30日 展会撤展&#xff1a;2019年6月30日下午14&#xff1a;00时 展览会在北京市政…

java 容器_我也来聊聊,JAVA容器与迭代器

java的容器与迭代器是一个老生常谈的话题了。本文旨在与大家分享一些关于双向链表与迭代器的运用小技巧&#xff0c;并希望本篇文章的内容能够在项目中给你带来帮助。Stack与LinkedListStack是一个LIFO(后进先出)的容器。若要在java中定义一个Stack应该怎么办&#xff1f;也许你…

VS2005调试时变慢解决办法

vs2005生成代码以及调试运行时&#xff0c;如果设置断点系统运行非常缓慢&#xff0c;从网上查阅一些资料后解决&#xff1a; 主要解决办法是&#xff1a; 打开VS2005菜单项"工具"---->"导入导出设置"----->"重置所有设置" 本文参考:http:…

apache目录的访问控制

转载链接&#xff1a;http://blog.sina.com.cn/s/blog_7be8a2150100trml.html 1.根目录的访问控制 DocumentRoot "/var/www/html" <Directory /> Options FollowSymLinks AllowOverride None </Directory> 解释一下&#xff1a; <Dir…

广东高院驳回快播对深圳市场监管局2.6亿罚款案上诉

雷帝网 乐天 12月29日报道据广东高院官方微信消息&#xff0c;广东省高级人民法院对深圳市快播科技有限公司&#xff08;简称快播&#xff09;诉深圳市市场监督管理局&#xff08;简称市场监管局&#xff09;著作权行政处罚纠纷案作出终审宣判&#xff0c;驳回上诉&#xff0c;…

【Vegas原创】恢复Oracle Package的笨方法

imp没有恢复package的参数&#xff0c;所以&#xff0c;只能用笨办法&#xff1a;rowsn&#xff0c;只导入表结构和物件。 步骤&#xff1a; 1&#xff0c;dbca新建一个test数据库&#xff1b; 2&#xff0c;新增user&#xff0c;表空间&#xff0c;给user赋予权限 3&#xff0…

python enumerate函数_关于python中enumerate和zip函数的用法及举例

关于python中enumerate和zip函数的用法及举例关于enumerate函数&#xff1a;enumerate函数可以同时返回列表或元组等可迭代对象的下标和内容&#xff0c;但实际上&#xff0c;enumerate函数实际返回的是一个enumerate类型的可迭代对象&#xff0c;下面是用法举例&#xff1a;se…

php 解析xml 的四种方法(转)

转载链接&#xff1a;http://www.cnblogs.com/likwo/archive/2011/08/24/2151793.html XML处理是开发过程中经常遇到的&#xff0c;PHP对其也有很丰富的支持&#xff0c;本文只是对其中某几种解析技术做简要说明&#xff0c;包括&#xff1a;Xml parser, SimpleXML, XMLReader,…

Golang 微服务系列 go-kit(Log,Metrics,Tracing)

go-kit Log & Metrics & Tracing 微服务监控3大核心 Log & Metrics & Tracing Log Log 模块源码有待分析&#xff08;分析完再补上&#xff09; Metrics 主要是封装 Metrics 接口&#xff0c;及各个 Metrics(Prometheus,InfluxDB,StatsD,expvar) 中间件的封装。…

GDI+

载解压GDI开发包&#xff1b; 2&#xff0e; 正确设置include & lib 目录&#xff1b; 3&#xff0e; stdafx.h 添加&#xff1a; #ifndef ULONG_PTR #define ULONG_PTR unsigned long* #endif #include <gdiplus.h> 4&#xff0e; 程序中添加GDI的包含文件gdip…

shell 练习3

1、编写脚本/root/bin/createuser.sh&#xff0c;实现如下功能&#xff1a;使用一个用户名做为参数&#xff0c;如果指定参数的用户存在&#xff0c;就显示其存在&#xff0c;否则添加之&#xff1b;显示添加的用户的id号等信息2、编写脚本/root/bin/yesorno.sh&#xff0c;提示…

HTML5文件实现拖拽上传

转载链接&#xff1a;http://www.cnblogs.com/caonidayecnblogs/archive/2010/09/09/1821925.html 通过HTML的文件API &#xff0c;Firefox、Chrome等浏览器已经支持从操作系统直接拖拽文件&#xff0c;并上传到服务器。 相对于使用了十多年的HTML表单&#xff0c;这是一个革命…

两个数组结果相减_学点算法(三)——数组归并排序

今天来学习归并排序算法。分而治之归并算法的核心思想是分而治之&#xff0c;就是将大问题转化为小问题&#xff0c;在解决小问题的基础上&#xff0c;再去解决大问题。将这句话套用到排序中&#xff0c;就是将一个大的待排序区间分为小的待排序区间&#xff0c;对小的排序区间…

python实习生面试题_大数据分析实习生面试题库

原标题&#xff1a;大数据分析实习生面试题库大数据分析是一个有吸引力的领域&#xff0c;因为它不仅有利可图&#xff0c;而且您有机会从事有趣的项目&#xff0c;而且您总是在学习新事物。如果您想从头开始&#xff0c;请查看大数据分析实习生面试题库以准备面试要点。大数据…

JavaScript编程语言 基础 (1)

问题&#xff1a;什么是web前端前端&#xff1a;指界面&#xff0c;计算机&#xff08;PC&#xff09;软件桌面的界面&#xff1b; 计算机端的浏览器界面&#xff1b; 移动端的软件&#xff08;app&#xff09;界面&#xff1b; 移动端的浏览器界面。HtmlcssJavaScript 使用网页…

shell结合expect写的批量scp脚本工具

转载链接&#xff1a;http://www.jb51.net/article/34005.htm expect用于自动化地执行linux环境下的命令行交互任务&#xff0c;例如scp、ssh之类需要用户手动输入密码然后确认的任务。有了这个工具&#xff0c;定义在scp过程中可能遇到的情况&#xff0c;然后编写相应的处理语…