Composing Photos Like a Photographer_2021_CVPR论文笔记

像一个摄影师一样构图

摘要

Image cropping is considered a promising way to automate aesthetic composition in professional photography.

在专业摄影中图像裁剪被视为一种非常有前景的自动实现美学构图的方法。

比较点:

  • 然而,目前的方法只是隐式地对这些专业知识建模,例如,通过比较候选图片来排名。
  • 受到自然构图的特征总是遵循着特定规则的启发,本文提议以一种有区别的方式学习这些构图规则,更重要的是要将这些学习到的构图规则显示地合并到模型中。
  • 文中提出了KCM(关键构图映射)概念来对这些构图规则进行编码。KCM可以揭示隐藏在不同构图规则中的普遍规则并且能够告知裁剪模型构图里什么是最重要的。
  • 利用KCM,我们提出了一种新颖的按构图来裁剪的范例并通过实例化网络以实现构图感知图像裁剪。 在两个基准上的大量实验证明我们的方法能够实现有效、可解释和快速的图像裁剪。

1 简介

图像裁剪概念

在摄影领域里,不仅这些有吸引力的视觉成分很重要,而且它们还要遵循美学的标准。然而美学构图需要专业知识和拓展训练,那么普通人能够像摄像师一样来构图吗?在日常生活中普及这种知识和经验的渴望,驱使人们对计算机视觉领域中一个有趣的研究主题的热情,这个主题就是图像裁剪。

给一张随意拍摄的照片,图像裁剪的目的就是去除多余的、无关的区域并找到一个视觉成分符合美学构图的区域。

现有的美学激励方法不足

Aesthetics-inspired approaches consider that good image cropping should be able to extract the most ‘attractive’ area, expecting that such an area obeys photographic composition rules and aesthetic attributes [6, 10]. However, these approaches typically follow a cropping-by-ranking paradigm, without explicit modeling of the composition rules.

美学激励的方法认为,良好的图像裁剪应该能够提取出最“有吸引力”的区域,并期望这样一个区域符合摄影构图规则和美学属性。然而,这些方法一般遵循通过排序来裁剪的范式,而没有对构图规则的显式建模。
在这里插入图片描述
正如Fig1(a)展示的一样,现有技术通过预先设置大量的候选框,根据每个注意力机制评估或美学评估对框进行评分,并根据评分进行排序来生成裁剪结果。获得最高分数的候选框被认为是最终的输出。这个范式假设美学构图是在一组带有相对美学注释的裁剪视图上自动学习的。

Does the assumption above hold in reality? A key insight of this work is that good image cropping should model explicit, interpretable composition rules [13]. Explicitness informs certain composition rules one image obeys; interpretability indicates major elements that determine the composition. They can provide image cropping with reasonable and reliable clues.

但是上面的假设真的适用吗?这项工作的一个关键见解是良好的图像裁剪应该建模显式的,可解释的构图规则。显式性可以告知一张图片应该遵循一定的构图规则,而可解释性则指出决定构图的主要元素。它们可以为图像裁剪提供合理和可靠的规则。

通过构图来裁剪的范式、CACNet(构图感知裁剪网络)

In this work, we introduce a new cropping-by-composition paradigm and propose a novel Composition-Aware Cropping Network (CACNet) to model the composition rules explicitly within the network (Fig. 1(b)). We assume the composition rules are learnable.

在这项工作中,我们引入了一种新的通过构图来裁剪的范式,并提出了一种新的构图感知裁剪网络(CACNet)来明确地建模构图规则(图。1(b))。我们假设组成规则是可学习的。正如fig1(b)中展示的,新的图像裁剪方法通过几个构图规则(对角构图、水平构图以及其他构图规则)按比例分配进行merge,再通过KCM对这些构图规则进行编码得到新的构图裁剪角度来得到裁剪结果。

This assumption is inspired by the observation that composition generally follows the basic, common arrangement of visual elements. For instance, the rule-of-thirds places important elements at the point where two horizontal and two vertical lines intersect; the horizontal rule arranges the major elements horizontally; the diagonal rule exploits leading diagonal lines to create dynamic senses. Since these leading elements play a critical role in composition, our idea is to learn a network to discover these elements to guide image cropping.

这个假设的灵感还是来源于一般构图都是遵循基本的、通用的视觉元素的安排。比如,三分之一构图规则将重要元素放在两条水平线和两条垂直线的相交处。水平构图规则则将主要元素水平安排,对角构图规则利用主对角线创建动态感官。由于这些主要元素在构图中起着关键作用,我们的想法是学习一个网络来发现这些元素,以指导图像裁剪。

CACNet分支构成

  • 构图分支:构图分支旨在从数据中学习构图规则。这是通过将图像分为9条规则来实现的:三分之一规则(RoT)、中心(Cen.)、水平(Hor.)、对称的(Sym.)、对角线(Dia.)、弯曲的(Cur.)、垂直方向(Ver.)、三角形(Tri.)和重复的模式(Pat.)。这些规则然后通过类激活映射(class activation maps)(CAMs)来描述。不同的cam被进一步压缩到一个二维映射上,我们称之为关键构图映射(KCM)。KCM被用来告知裁剪分支,什么是构图里重要的部分。

  • 裁剪分支:利用一个锚点回归变量来生成以KCM为条件的裁剪输出。

文中还提到,在两个基准上进行的大量实验表明,CACNet表现出许多吸引人的特性:

  • 有效:CACNet与最近的竞争对手取得了最先进的性能;
  • 可解释:KCM可以说明为什么裁剪过程是合理的、有依据的;
  • 快速:由于CACNet不需要生成大量的候选盒子,它可以在一个RTX2080TiGPU上处理高达155FPS的图像。

2 相关工作

对于什么是更好地图像裁剪,目前的文献大多分为两中观点。一个是注意引导的图像裁剪,另一个是美学引导的图像裁剪。

  • Attention-Guided Image Cropping:这种方法认为良好的图像裁剪能够保存突出的物体或信息区域。这些方法通常有特定的应用程序场景,如缩略图生产和小屏幕显示。

  • Aesthetics-Informed Image Cropping: 以美学为基础的方法不追求裁剪图像的视觉吸引力。他们假设美学成分可以通过比较观点学习,因此通常遵循两阶段的管道:

    • 通过缩放和移动生成不同的候选者;
    • 根据美学对所有候选者进行评分,并考虑评分第一的作为最终输出。

接着,文中提到了很多以前的,如VFN、DIC、VPN、GAIC等美学引导的图像裁剪网络都有不同程度的局限性。以前的成果假设美学构图可以在可比较的排名视图上自动学习或通过美学奖励学习。 相比之下,我们认为应该在网络中明确地对构图规则进行建模,即按构图进行图像裁剪。

3 构图感知图像裁剪

3.1 大纲

构图感知的图像裁剪受一般构图的基本视觉因素的安排启发,这些元素在指导图像裁剪中起了重要作用,因此文中建议在图像裁剪中纳入这些构图规则。CAANet就是设计来实现以上想法的,CACNet包括三个部分:一个主干、一个构图分支和一个裁剪分支。Fig2展示了CACNet的技术管道
在这里插入图片描述

  • 主干由构图分支和裁剪分支共享。
  • 构图分支旨在通过将图像分类为9个构图规则来学习构图规则。Fig3列出了这些不同规则。

在这里插入图片描述

To discover the key elements in images, class activation maps(CAMs) are extracted and are further merged to form the KCM. We would like to highlight that, despite CAM is not a novel technique in this work, the idea of mining key composition rules using CAMs, to our knowledge, is novel to image cropping.

为了发现图像中的关键元素,我们提取了类激活图(CAMs),并进一步合并形成KCM。我们想强调的是,尽管CAM在这项工作中并不是一种新技术,但据我们所知,使用CAM挖掘关键构图规则的想法对于图像裁剪是新颖的。

  • 对于裁剪分支,一个锚点回归变量被用来预测从锚点到ground-truth bounding box(GT)的偏移量。锚点由KCM加权,目的是从KCM学习组合映射来实现以集成的方式模拟专家注释。

CACNet 同时在裁剪数据集{X1, Ybox} 和合成数据集{X2, Ycls} 上进行训练,其中 Ybox 表示带注释的裁剪框,Ycls 表示带注释的合成类。

3.2 学习和编码构图规则

Learning Composition Rules

  • Learning Composition Rules:构图规则通过将图像分类到不同的构图规则里,在构图分支中学习构图规则。我们可以在Fig.3中看到遵循不同规则的样图。这些构图中的元素提供了显式和可解释的规则来指导图像裁剪。
  • 从技术上讲,构图分支由一个解码器、一个全局平均池(GAP)层和一个全连接(FC)层组成,FC在其中输出置信度分数。在构图数据集中,训练图像可以遵循一个或多个(最多3)构图规则。具有多个规则的图像将对每个GT类进行多次训练。在实验中,这种训练策略比多标签损失更有效。

Encoding Rules in the Key Composition Map

CAMs被提取来描述相应的构图规则。CAM的一个重要特性是,它可以指示决定每个构图的信息区域。不同的CAM被进一步编码到一个二维映射中,我们称之为Key Composition Map(KCM)。KCM能够告知整体构图的关键区域。它揭示了不同构图规则背后的共同规律,因此可以用来指导裁剪分支构图中哪部分是最重要的。
在这里插入图片描述

CAMs

CAM的简要回顾:在构图分支中,解码器提取c维特征映射F,F然后通过GAP层转为一个向量f并通过FC和softmax层转为一个置信度分数s。CAMs由Mn来表示,用投影回F上的FC层的权重W∈RC×N提取,其中N表示构图规则的数量。Mn揭示了构图规则n中识别输入图像的判别构图依据。
在这里插入图片描述
在这里插入图片描述

KCM的合并过程

KCM由cam合并。考虑到图像可以遵守一个或多个构图规则(例如,一个站在海边的一个人的图像可以同时遵循Hor的规则。和RoT.),KCM应该考虑到多个规则。为了融合全局构图元素,将KCM提取为不同归一化cam的加权和,即每个Mn由置信分数sn进行加权,其中φ(·)是将CAMs值归一化为[0,1]的归一化函数。然后将KCM上采样到输入图像大小。Fig.4说明了KCM的生成。它突出了信息最丰富的构图区域,提供了可解释的线索作为裁剪指导。

3.3 KCM表示的裁剪

裁剪分支的目的是为KCM与构图良好的裁剪之间的关系建模。由于图像裁剪的目的是改变主导构图区域的相对位置,因此通过明确的构图规则,可以更好地完成。

加权锚点的引入

问题是如何将KCM注入到裁剪模型中。受对象检测和姿态估计中的锚点方法的启发,可以将局部锚点回归变量相结合来更好地泛化。KCM可以为锚点分配权重,以加强/抑制不同锚点的影响。局部锚点均匀地设置在输入图像上,步幅为K。

3.4 Multi-Task Network Optimization(多任务网络优化)

训练

  • 在相应的数据集上同时优化了裁剪和组成分支。在每次训练迭代中,X1和X2被顺序地输入主干。然后X1通过这两个分支,而X2只进入构图分支。网络参数是使用累积梯度来进行更新的。
  • 裁剪损失Lcrop使用预测框和GT框之间的平滑ℓ1损失。构图损失Lcom由预测的置信度得分s与构图标签之间的交叉熵来定义。通过最小化以下损失函数,以端到端的方式训练整个网络,其中λ是一个平衡因素。

推断

给定一个源图像,CACNet输出:

  1. 一个裁剪框
  2. 一个突出区分构图的KCM
  3. 图像遵循的一个或多个构图规则

KCM、构图分布和裁剪框的共同呈现为观众提供了构图指导,而不仅仅是一个简单的裁剪结果。

4 Experiments

4.1 数据集与实现细节

Composition Dataset

为了训练构图分支,论文使用了KU-PCP数据集,它由4244张户外照片组成。我们将数据分成3169张图像的训练集和1075张图像的验证集。每幅图像都被分到9个构图规则里。由于一个图像可能遵循多个组合规则,所以每个样本都至少有一个标签(≤3标签)。

Cropping Datasets

使用两个图像裁剪基准,即FCDB和FLMS。FCDB包含1743张图像,其中1395张图像用于训练,348张用于测试。对于每个图像,都会标注一个GT框。对于FLMS,我们使用所有500张图像进行测试。每个图像都有10个裁剪框。根据在该数据集上之前的工作,我们采用了TOP 1最大重叠的度量。

Implementation Details

CACNet使用Adam优化器[16]进行训练,权重衰减为1e−4。初始学习速率设置为3.5e−4,每5个周期衰减一次×0.1。主干利用了所有的卷积块,不包括在ImageNet上预训练的VGG-16的最后一个最大池层。组合分支的输入为41分辨率,裁剪分支为116输入分辨率。我们用随机的水平翻转来增强数据。平衡因子λ设置为0.7。λ的灵敏度实验和CACNet技术结构的细节被放在补充材料中。所有实验均在一个NVIDIA RTX 2080TiGPU上进行。

4.2 与现有技术的比较

在这里,我们比较了CACNet与现有的最先进的方法。我们使用平均交叉过联合(IoU)和平均边界位移误差(BDE)作为度量。此外,我们报告每秒帧(FPS)以评估效率。

CACNet结果显示出来的优缺点

定量结果

在这里插入图片描述

  • 表1报告了定量结果。该方法不仅具有良好的泛化性能,而且具有快速的推理速度。在FLMS和FCDB数据集上,CACNet的性能都优于或至少与最先进的方法相当。良好的泛化可能是引入构图分支和专业摄影知识的显式KCM嵌入的结果,从而导致更好的构图感知特征学习。良好的泛化还意味着网络确实捕获了底层的组成规则,而不是简单地利用数据偏差。
  • CACNet的运行速度也为155.0FPS。高效率可以归结为CACNet的一期回归方式,这避免了在其他方法中使用的许多耗时的程序,如每个候选评分。特别是,CACNet在两个数据集上都显著优于之前的TOP 3快的方法。
  • 我们还可以观察到具有小尺寸注释的图像的性能下降。与其他基于候选的方法,如VFN、VEN、VPN、ASMNet和CGS,可以密集预设许多小尺寸候选,CACNet可能存在数据失衡,可能不太适合小尺寸的裁剪。另一个原因可能是CACNet的学习机制。它学习从源构图中进行裁剪,然后从KCM和专家注释之间的关系中建模潜在的空间构图规则。

定性分析

可以观察到:

  • VFN和VEN容易裁剪部分主体,破坏整体平衡和组成;
  • VPN倾向于产生压缩裁剪结果;
  • A2RL在某些情况下不能消除不必要的干扰;
  • GAIC可以产生相对吸引人的结果,保持主要内容,但结果仍然不能称为足够好的构图;
  • CACNet学习构建空间成分,能够稳定产生接近GT的优秀构图裁剪结果。

4.3 消融研究

为了证明CACNet的每一种设计选择,我们对FCDB进行了消融研究。特别是,我们使用1195张图像进行训练,并使用保留的图像进行验证。

与Baseline的比较

  • KCM有利于图像裁剪(B4vsB5):与没有KCM的训练相比,每个锚点共享相同的权重,使用KCM的锚点权值分配使BDE提高了4.0%,物联网提高了1.7%。这证实了在图像裁剪中注入基本构图概念和使用KCM对构图规则进行建模的重要性。
  • 与仅处理裁剪任务的模型相比,CACNet采用多任务的方式进行训练,可以通过归纳知识转移进行增强,从而降低了过拟合的风险。
  • 锚点回归因子将结果提高了8.0%BDE和2.4%IoU,验证了单阶段回归的有效性。与基线相比,可以更好地探索局部空间上下文信息。

构图的影响

这项工作的一个关键观点是,编码构图规则可以促进构图感知的图像裁剪。当使用KCM进行训练时,裁剪精度随着构图精度的提高而提高。这一发现进一步强调了KCM的重要性。更高的构图精度可以实现更准确的KCM生成,从而实现更有效的图像裁剪。

锚点步长K的影响

Fig.9比较了k不同的结果,当无锚训练改为锚点训练时,性能得到提高。当C=8时,CACNet的BDE和IoU达到最好,而当K进一步降低时,其性能下降。这表明密集的锚点可能对性能有害。在我们看来,以弱监督方式训练的KCM不能提供准确的像素级权重分配,而是一个全局的粗激活。一个粗的KCM不能支持密集的锚点。K=8就足够了。

4.4 构图感知图像裁剪

当图像的裁剪元素发生变化时,一种好的裁剪方法可以自适应地重新对图像构图。我们演示了我们的方法的一个有趣的应用。如图所示Fig.10,我们调整相机,在同一场景下拍3张照片。唯一的区别是我们把盆栽植物放在哪里。我们可以发现,CACNet可以了解构图的关键元素,并生成构图感知裁剪结果。
在这里插入图片描述

4.5 用户研究

由于构图是主观的,我们进一步进行了用户研究来验证不同的方法。我们随机选择155张图像,95张从FLMS和60张从FCDB的测试集。邀请15名有摄影经验的人。表5中的结果显示,大多数用户都喜欢我们的方法。

4.6 失败案例的分析

在这里插入图片描述

虽然CACNet在大多数情况下可以生成良好的、可解释的裁剪,但在某些情况下它可能会失败。一些有趣的故障案例如图所示Fig.11 。构图规则和KCM不能准确预测,GT框相对较小。这揭示了我们的方法的一个局限性:它倾向于保留主要的视觉内容。

5 结论

受摄影中构图规则的启发,我们提出了一种新的构图裁剪范式来实现构图感知的图像裁剪。我们表明,显式的构图规则的显式建模有利于图像裁剪。为了对这些规则进行建模,我们引入了KCM的概念,并在一个构图感知的裁剪网络CACNet中实现了它。广泛的结果证明,CACNet能够有效、可解释和快速的图像裁剪,为图像裁剪社区提供了一个强大和高效的基线。我们还展示了额外的分析来突出构图的作用。对于未来的工作,我们计划探索适用于不同尺寸比的灵活裁剪模型。我们的工作也为特定的构图裁剪开辟了一扇门。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spanned.SPAN_COMPOSING 是一个常量,用于表示一个跨度对象(Span)正在处于组合文本输入的状态。它是用于处理复杂文本输入和编辑的 Android 文本样式类 Spanned 的一个标记常量。 当用户正在进行组合文本输入(如中文输入法的拼音输入)时,输入的文本可能会被拆分成多个部分,并且在用户最终确定输入之前,这些部分可能会不断变化。SPAN_COMPOSING 被用于标记这些处于组合输入状态的文本部分,以便在显示和处理这些文本时进行特殊处理。 在使用 Spanned 接口及其实现类(如 SpannableString 或 SpannableStringBuilder)处理文本时,可以使用 Spanned.SPAN_COMPOSING 来标记处于组合输入状态的文本部分。例如,你可以使用 setSpan() 方法将 Spanned.SPAN_COMPOSING 应用于文本的特定范围,以便在显示或处理文本时对这些部分进行特殊处理。 以下是一个使用 Spanned.SPAN_COMPOSING 的示例: ```java SpannableString spannableString = new SpannableString("Hello World"); spannableString.setSpan(new ForegroundColorSpan(Color.RED), 0, 5, Spanned.SPAN_COMPOSING); textView.setText(spannableString); ``` 在上面的示例中,"Hello" 这个单词将被标记为处于组合输入状态,并且会应用红色前景色。这样,当用户在输入过程中修改或删除这部分文本时,可以对其进行特殊处理,以提供更好的用户体验。 希望这个解释对你有所帮助!如果还有其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值