[论文速览] Word-As-Image for Semantic Typography
Pre
title: Word-As-Image for Semantic Typography
accepted: Arxiv 2023
paper: https://arxiv.org/abs/2303.01818
code: https://github.com/WordAsImage/Word-As-Image
project: https://wordasimage.github.io/Word-As-Image-Page/
关键词:word-as-image, typography, 字体设计, vector domain, stable diffusion
阅读理由:比较新奇的任务,效果好,被第一张图吸引到了
Idea
以矢量形式设计单词内的字符shape,让单词的外观符合它的语义,即word-as-image
Motivation&Solution
- 大多数方法都处理光栅图片,它无法自由缩放 —— 使用DiffVG将图片矢量化
- 类似工作直接在单词上加装饰或是用一些图案去替代笔画,跟本文的目的不同 —— 直接修改黑白字符形状来传达含义
Background
图1 模型生成的word-as-image
作者选了5个类别,动物、水果、运动等,然后用ChatGPT为每个类别去随机采样五个实例,由于可以独立对每个字符进行转换,因此n个字母组成的单词一共有 \(2^n\)个可能的word-as-images
图2 手动设计的word-as-image插图
图3 其他一些类似方法的效果
Method(Model)
Overview
图5 overview
如图,选定输入字母S,它矢量化后有一系列控制点P,然后迭代地优化变形的字母位置\(\hat{P}\)。每轮先用DiffVG将\(\hat{P}\)光栅化,然后通过图像增强后输入预训练的Stable Diffusion编码器,并根据CLIP编码的prompt对字母进行变形。这里预训练模型是冻结的,迭代修改的是控制点参数
图6 字母轮廓及控制点表示,橙色的是原本的贝塞尔曲线端点,蓝色是剩余的控制点(除橙色外还需要的?)
这些字母的图片都是从FreeType字体文件中抽取的,然后转换为贝塞尔曲线集保存。很显然如果控制点越多,那么表达越自由灵活,并允许转换后呈现出更多样的结果。作者这里通过为26个字母预定义好需要的点数,对于每个抽取的字母的贝塞尔曲线,通过不断拆分最长段来增加控制点到预期数量。
为了使字体形变,依靠的是一种SDS方法:
看不大懂,最早是DreamFusion提出来,用扩散损失的形式优化神经辐射场(NeRF)模型。然后作者将其用到隐空间中,便得到本文的LSDS损失:
图7 Delaunay triangulation可视化
图7展示了ACAP损失,通过约束每个控制点对应的角数量跟度数在转换前后接近来约束字体的形变不会太大。像矩形里展示的p_j有3个角。
图8 风格维持(tone-preserving)损失
图8的损失实际上是通过约束两个字母低通滤波后的L2范数来实现的,希望转换前后的风格和结构差距不要太大。作者提到该损失实际是占主导地位的,必要再训练有起色了再加入,否则字体会直接放弃形变。
Experiment
Results
图9 本文模型用八种不同字体展示单词"YOGA" 作者想展示的是模型得到不同的形变结果去契合不同字体风格
图10 跟其他基于text-to-image方法的对比
它们有的无法生成可读的字,有的没能体现出语义,有的失去了源字体的特点,都不够好
图11 初始控制点数量对输出结果的影响。P_0 是直接抽取后原有的控制点数量,P是预定义好的超参数(应达到的控制点数量)
还有一些其他的消融实验:
图13 修改第三项损失中低通滤波器的参数,最左边相当于没效果,约束很强,几乎没有形变。右边是增大模糊效果直至去掉该损失,体现出了更生动的结果
图14 将SDS损失替换为基于CLIP的损失(具体怎么实现不明),效果退化
图15 只用SDS损失,结果几乎认不出是字母,更倾向于单纯的插画
图16 修改第二个损失的权重,从左到右权重下降,结果更体现语义,但也降低了可辨识度
Critique
总的来说当前该方法效果良好,实验丰富,可应用于图标设计等方向。但代码未开源,而且只能一个个字母进行风格化,无法以单词为单位整体进行;而且只对具体的概念效果较好,但抽象概念也可以通过使用相近且具体的概念去优化来缓解;同时字母的布局比较固定,将来可实现布局自动化。
Unknown
无