论文解读一篇关于语义生成论文(要求控制单独语义生成)

本文聚焦语义多模态图像合成(SMIS)任务,旨在通过特定类控制器调整对应区域生成图像,且不影响其他部分。针对现有方法局限,提出GroupDNet,利用组卷积并逐步减少解码器组数,提升可控性与生成质量。实验表明其优越性,还能支持多种合成应用。

☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜

论文解读一篇关于语义生成论文(要求控制单独语义生成) - 创想鸟

论文分享

PS:哪里觉得不理解大家可以一起探讨

论文题目:Semantically Multi-modal Image Synthesis

题目翻译:多模态语义信息图像合成

论文地址:https://arxiv.org/abs/2003.12697

论文代码地址: https://github.com/Seanseattle/SMIS

相信看到这个题目大家有点懵逼,于是我打算让大家看看论文开始的摘要。

1. Abstract

        在本文中,我们着重于语义多模态图像合成(SMIS)任务,即在语义层次上生成多模态图像。以前的工作试图使用多个特定于类的生成器,限制其在具有少量类的数据集中的使用。相反,我们提出了一种新的群减少网络(GroupDNet),它利用生成器中的组卷积,并逐步减少解码器中卷积的组数。因此,GroupDNet在将语义标签转换为自然图像方面具有更多的可控性,并且对于具有许多类的数据集具有合理的高质量产量。在几个具有挑战性的数据集上进行的实验证明了GroupDNet在执行SMIS任务方面的优越性。我们还表明,GroupDNet能够执行广泛的有趣的合成应用程序。 在本文中,我们着重于语义多模态图像合成(SMIS)任务,即在语义层次上生成多模态图像。以前的工作试图使用多个特定于类的生成器,限制其在具有少量类的数据集中的使用。相反,我们提出了一种新的群减少网络(GroupDNet),它利用生成器中的组卷积,并逐步减少解码器中卷积的组数。因此,GroupDNet在将语义标签转换为自然图像方面具有更多的可控性,并且对于具有许多类的数据集具有合理的高质量产量。在几个具有挑战性的数据集上进行的实验证明了GroupDNet在执行SMIS任务方面的优越性。我们还表明,GroupDNet能够执行广泛的有趣的合成应用程序。

这个时候大家会发现关键词就出现了,SMIS。这篇论文就提出了一种模型架构更好的实现这个任务。因此接下来我带着大家继续阅读什么叫做SMIS任务。

2. SMIS任务解释

只是想象一下一个来自人类解析映射的内容创建场景。在语义到图像的转换模型的帮助下,解析映射(就是语义分割信息)可以转换为每个真实的图片。一般来说看起来不错,但生成的衣服上身不适合你的口味。然后问题就出现了,要么这些模型不支持多模态合成,要么当这些模型改变了上身时,其他部分也会随之变化。这些都不能满足你的意图。总之,这个用户可控的内容创建场景可以被解释为执行一个任务,在语义级别上产生多模态结果,而其他语义部分没有被触及。 我们将这个任务总结为:语义多模态图像合成(SMIS)。对于每个语义,我们都有它特定的控制器。通过调整特定类的控制器,只有相应的区域被相应地改变。 这里论文举了一个小小的例子,见figure 1。论文解读一篇关于语义生成论文(要求控制单独语义生成) - 创想鸟        

对于SMIS挑战详细阐述

设M表示一个语义分割掩码。假设在数据集中有C个语义类。H和W分别表示图像的高度和宽度。作为一个非常明了的方式去引导label-to-image模型变换。 生成器G需要M作为条件输入来生成图像。然而,为了支持多模态生成,我们需要另一个输入源来控制生成的多样性。通常,我们使用一个编码器来提取一个潜在代码Z作为控制器。在接收到这两个输入后,可以通过O=G(Z,M)产生图像输出O。然而,在语义多模态图像合成(SMIS)任务中,我们的目标是通过干扰特定类的潜在代码来产生语义不同的图像,该代码独立地控制相应类的多样性。

对于SMIS任务的挑战,关键是将潜在代码划分为一系列特定于类的潜在代码,每个潜在代码只控制一个特定的语义类的生成。传统的卷积编码器并不是一个最优的选择,因为所有类的特征表示都是内部纠缠在潜在的代码中。即使我们有特定于类的潜在代码,如何使用这些代码仍然存在问题。正如我们将在实验部分所说明的,简单地用特定于类的代码替换spade[38]中的原始潜在代码,处理SMIS任务的能力有限。这一现象促使我们需要在编码器和解码器中进行一些架构修改,以更有效地完成任务。

好了,此刻我已经把任务给描述清楚了,那么这个时候面对这个任务,我们的解决思路是什么,首先是剖析这个问题,SMIS和一般的语义生成任务有什么不同?它要求更细腻的语义控制。我认为有特征解耦的那个味道,像素级特征控制(那个英特尔的editgan,论文地址为(https://arxiv.org/pdf/2111.03186.pdf).

3. 面对问题思考

1. 首先第一种思路是基于每个语义类标签创建一个子网络,这样每一个语义都由一个模型控制,其潜在的思想是独立地处理每个类,然后融合不同子网的结果。为简单起见,我们将这种网络称为多重网络(MulNet)。这个想法很直接,但是不由自主的会出现问题:

1. 如果这个语义生成具体任务有100类那就需要100个子网络,就是这个子网络数量会随着类别数量增加而增加,参数增加的很快,相应训练方面也会有很多问题,训练时长,资源等,这种类型的方法很快就会面临性能的下降,训练时间的增加和计算资源消耗的线性增加。2. 各个语义信息部分的互动性较差。

       

2. 使用语义生成的SPADE,但是这个语义生成的SPADE原始框架很难进行控制单个语义。(这个SPADE就是这篇论文的backbone,然后论文就是基于spade进行修改)

3. 另一个有类似想法的替代方法是在整个网络中使用group convolutions。用group convolutions替换encoder和decoder中的所有卷积,并将组数设置为 class number,我们把这种网络称作为GroupNet。如果每一Group的通道数等于单个MulNet子网络中对应的通道数,则在理论上等价于MulNet。这里提到一个叫做GroupNet,卷积组数和标签类别相同.试图通过这样实现单个语义分开控制,就是nn.conv2d(groups = num_class)。

4. 然后呢,本文使用的是叫GroupDNet,这个和GroupNet的主要区别是decoder中groups数的单调减少。

论文解读一篇关于语义生成论文(要求控制单独语义生成) - 创想鸟        

这个时候吧,或许会有同学会问这个groupdnet改变思路如此简单会好用吗?

于是作者说了这个朴实操作背后的几层深意。


class balance。值得注意的是,不同的类有不同数量的实例[32,5,55],并且需要不同的网络容量来建模这些类。MulNet and GroupNet需要找到一个合适的网络设计来平衡所有的类。更重要的是,并非所有的类都出现在一个图像中。在这种情况下,MulNet and GroupNet不可避免地浪费了大量的计算资源,因为它们必须在训练或测试期间激活所有类的所有子网络或子组。然而,在GroupDNet中,不平衡类与其邻居类共享参数,极大地缓解了类不平衡的问题。


类相关性。在自然世界中,语义类通常与其他类有关系,例如草的颜色和树叶的颜色相似,建筑物影响附近道路上的阳光等。为了产生合理的结果,MulNet和GroupNet都有一个融合模块(几个规则卷积).在decoder的末尾,将不同类的特征合并为一个图像输出。一般来说,融合模块大致考虑了不同类之间的相关性。然而,我们认为这是不够的,因为不同类别之间的相关性太复杂了,不能通过使用这样一个具有有限的接受域的简单成分来充分探索。另一种选择是使用一些网络模块,如自注意块来捕获图像的长期依赖关系,但它的计算阻碍了它在这类场景中的使用(就是qkv计算需要太多的内存空间)。然而,GroupDNet在整个解码器中雕刻了这些关系;因此,它更准确和彻底地利用了相关性。因此,GroupDNet生成的图像比其他两种方法生成的图像更好、更真实。


GPU memory. 为了保证MulNet的每一个网络或分组网中每个类的分组参数有足够的容量,信道总数将随着类数的增加而显著增加。达到一定限度,显卡的最大GPU内存将不再能够容纳一个样本。正如我们对ADE20K数据集[55]的粗略估计那样,即使将批量大小设置为1,一个特斯拉V100显卡也不能容纳有足够容量的模型。但是,GroupDNet中的问题不那么严重,因为不同的类共享参数,因此没有必要为每个类设置如此多的通道。

4. 模型具体架构

此刻相信大家已经初具想法了,就是在SPADE基础上结合groupdnet的思路,用group conv替代普通的conv,好,放图,这就是这篇论文的主要架构。论文解读一篇关于语义生成论文(要求控制单独语义生成) - 创想鸟            

给大家对照解释一下,CG-Normal就是SPADE,CG-Block就是Spade-resblock. 给大家回顾一下SPADE模型图。论文解读一篇关于语义生成论文(要求控制单独语义生成) - 创想鸟论文解读一篇关于语义生成论文(要求控制单独语义生成) - 创想鸟            

详细说明模型架构流程

从本论文架构图可以看出,GroupDNet包含一个编码器和一个解码器。受VAE[26]和spade[38]思想的启发,编码器E产生了一个潜在的编码Z,该编码在训练过程中应该遵循一个高斯分布N(0,1)。在测试时,编码器E被丢弃。从高斯分布中随机抽样的编码代替z。为了实现这一点,我们使用重新参数化技巧[26]在训练过程中启用可微损失函数。具体来说,编码器通过两个全连接的层来预测一个平均向量和一个方差向量来表示编码的分布。编码z分布和高斯分布之间的差距可以通过施加kl-散度损失来最小化。

Encoder详解

Encoder:原文是这样的:论文解读一篇关于语义生成论文(要求控制单独语义生成) - 创想鸟            

我在这里给大家总结几个点:

这个输入的数据是比较奇特的Xc,我给大家简单介绍一下这个操作X是原图[b,3,h,w],Mc是 segmantation mask[b,class_num,h,w],接下来给大家看下我写的具体伪代码,这就是具体的操作:

images = Nonefor i in range(b):    image = None    for j in  range(class_num):        one = X[i] * Mc[i][j] #[3,h,w]        one = one.unsqueeze([0])#[1,3,h,w]        if image ==None:            image =one        else:            image = concat([image,one],axis = 1)               #image.shape = [1,3*class_num,h,w]    if images ==None:        images =image    else:        images = concat([images,image],axis = 0)        # images.shape = [b,3*class_num,h,w]

       

好了这个就是输入encoder的input,这样处理数据的核心含义是什么呢?作者是这么解释的:

该操作减少了Encoder处理特征解纠缠的一部分压力,节省了对特征进行精确编码的容量。

Encoder中的Groups 为class_num从输入和架构方面,Encoder解耦不同的class,使其彼此独立。因此,所编码的潜在代码Z由所有类的特定于类的潜在代码Zc(Z的一个离散部分)组成。在即将到来的解码阶段,Zc作为c类的控制器。说白了就是Encoder就是专心解耦,争取把特征解耦编码的Zc也可以明白具体控制哪个类。与产生两个向量作为高斯分布的均值和方差预测的一般方案不同,我们的编码器通过卷积层生成一个均值映射和一个方差映射,以在潜在代码Z中大规模保留结构信息。这个点我需要强调一下啊,因为原论文Spade的Encoder经过几层卷积后就把这个特征图,给resize打平成一维向量,这个操作很大程度破坏了原图的特征位置结构信息,再并联两个全连接得到均值和logvar。但是本篇论文就直接舍弃了resize这个操作,用卷积操作代替全连接,这样这个得到的均值和logvar就可以保留图片的结构信息.

decoder详解

论文解读一篇关于语义生成论文(要求控制单独语义生成) - 创想鸟 论文解读一篇关于语义生成论文(要求控制单独语义生成) - 创想鸟        

论文解读一篇关于语义生成论文(要求控制单独语义生成) - 创想鸟 论文解读一篇关于语义生成论文(要求控制单独语义生成) - 创想鸟        

以上就是论文解读一篇关于语义生成论文(要求控制单独语义生成)的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/42755.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月6日 21:17:23
下一篇 2025年11月6日 21:19:25

相关推荐

  • 为什么自定义样式表在 Safari 中访问百度页面时无法生效?

    自定义样式表在 safari 中失效的原因 用户尝试在 safari 偏好设置中添加自定义样式表,代码如下: body { background-image: url(“/users/luxury/desktop/wallhaven-o5762l.png”) !important;} 测试后发现,在…

    2025年12月24日
    000
  • HTML、CSS 和 JavaScript 中的简单侧边栏菜单

    构建一个简单的侧边栏菜单是一个很好的主意,它可以为您的网站添加有价值的功能和令人惊叹的外观。 侧边栏菜单对于客户找到不同项目的方式很有用,而不会让他们觉得自己有太多选择,从而创造了简单性和秩序。 今天,我将分享一个简单的 HTML、CSS 和 JavaScript 源代码来创建一个简单的侧边栏菜单。…

    2025年12月24日
    200
  • 前端代码辅助工具:如何选择最可靠的AI工具?

    前端代码辅助工具:可靠性探讨 对于前端工程师来说,在HTML、CSS和JavaScript开发中借助AI工具是司空见惯的事情。然而,并非所有工具都能提供同等的可靠性。 个性化需求 关于哪个AI工具最可靠,这个问题没有一刀切的答案。每个人的使用习惯和项目需求各不相同。以下是一些影响选择的重要因素: 立…

    2025年12月24日
    000
  • 带有 HTML、CSS 和 JavaScript 工具提示的响应式侧边导航栏

    响应式侧边导航栏不仅有助于改善网站的导航,还可以解决整齐放置链接的问题,从而增强用户体验。通过使用工具提示,可以让用户了解每个链接的功能,包括设计紧凑的情况。 在本教程中,我将解释使用 html、css、javascript 创建带有工具提示的响应式侧栏导航的完整代码。 对于那些一直想要一个干净、简…

    2025年12月24日
    000
  • 如何在网页 F12 调试中查看鼠标悬停时才出现的 DOM 元素?

    如何在网页 f12 调试中查看鼠标悬停时才出现的 dom 元素? 在 f12 调试模式下,鼠标悬停时才出现的 dom 元素无法通过直接选择查看。解决方法根据显示原理的不同而有所区别: 1. css 控制的元素 强制开启悬停状态:在 firefox 浏览器中,可以通过在开发者工具中手动开启选中元素的 …

    2025年12月24日 好文分享
    100
  • 布局 – CSS 挑战

    您可以在 github 仓库中找到这篇文章中的所有代码。 您可以在这里查看视觉效果: 固定导航 – 布局 – codesandbox两列 – 布局 – codesandbox三列 – 布局 – codesandbox圣杯 &#8…

    2025年12月24日
    000
  • 隐藏元素 – CSS 挑战

    您可以在 github 仓库中找到这篇文章中的所有代码。 您可以在此处查看隐藏元素的视觉效果 – codesandbox 隐藏元素 hiding elements hiding elements hiding elements hiding elements hiding element…

    2025年12月24日
    400
  • 居中 – CSS 挑战

    您可以在 github 仓库中找到这篇文章中的所有代码。 您可以在此处查看垂直中心 – codesandbox 和水平中心的视觉效果。 通过 css 居中 垂直居中 centering centering centering centering centering centering立即…

    2025年12月24日 好文分享
    300
  • 如何在 Laravel 框架中轻松集成微信支付和支付宝支付?

    如何用 laravel 框架集成微信支付和支付宝支付 问题:如何在 laravel 框架中集成微信支付和支付宝支付? 回答: 建议使用 easywechat 的 laravel 版,easywechat 是一个由腾讯工程师开发的高质量微信开放平台 sdk,已被广泛地应用于许多 laravel 项目中…

    2025年12月24日
    000
  • 如何在移动端实现子 div 在父 div 内任意滑动查看?

    如何在移动端中实现让子 div 在父 div 内任意滑动查看 在移动端开发中,有时我们需要让子 div 在父 div 内任意滑动查看。然而,使用滚动条无法实现负值移动,因此需要采用其他方法。 解决方案: 使用绝对布局(absolute)或相对布局(relative):将子 div 设置为绝对或相对定…

    2025年12月24日
    000
  • 移动端嵌套 DIV 中子 DIV 如何水平滑动?

    移动端嵌套 DIV 中子 DIV 滑动 在移动端开发中,遇到这样的问题:当子 DIV 的高度小于父 DIV 时,无法在父 DIV 中水平滚动子 DIV。 无限画布 要实现子 DIV 在父 DIV 中任意滑动,需要创建一个无限画布。使用滚动无法达到负值,因此需要使用其他方法。 相对定位 一种方法是将子…

    2025年12月24日
    000
  • 移动端项目中,如何消除rem字体大小计算带来的CSS扭曲?

    移动端项目中消除rem字体大小计算带来的css扭曲 在移动端项目中,使用rem计算根节点字体大小可以实现自适应布局。但是,此方法可能会导致页面打开时出现css扭曲,这是因为页面内容在根节点字体大小赋值后重新渲染造成的。 解决方案: 要避免这种情况,将计算根节点字体大小的js脚本移动到页面的最前面,即…

    2025年12月24日
    000
  • Nuxt 移动端项目中 rem 计算导致 CSS 变形,如何解决?

    Nuxt 移动端项目中解决 rem 计算导致 CSS 变形 在 Nuxt 移动端项目中使用 rem 计算根节点字体大小时,可能会遇到一个问题:页面内容在字体大小发生变化时会重绘,导致 CSS 变形。 解决方案: 可将计算根节点字体大小的 JS 代码块置于页面最前端的 标签内,确保在其他资源加载之前执…

    2025年12月24日
    200
  • Nuxt 移动端项目使用 rem 计算字体大小导致页面变形,如何解决?

    rem 计算导致移动端页面变形的解决方法 在 nuxt 移动端项目中使用 rem 计算根节点字体大小时,页面会发生内容重绘,导致页面打开时出现样式变形。如何避免这种现象? 解决方案: 移动根节点字体大小计算代码到页面顶部,即 head 中。 原理: flexível.js 也遇到了类似问题,它的解决…

    2025年12月24日
    000
  • 形状 – CSS 挑战

    您可以在 github 仓库中找到这篇文章中的所有代码。 您可以在此处查看 codesandbox 的视觉效果。 通过css绘制各种形状 如何在 css 中绘制正方形、梯形、三角形、异形三角形、扇形、圆形、半圆、固定宽高比、0.5px 线? shapes 0.5px line .square { w…

    2025年12月24日
    000
  • TDesign UI库中小程序开发的CSS选择器:为什么“.t-grid–card”能生效?

    TDesign UI库中CSS选择器困惑 在小程序开发中,使用TDesign UI库时,您可能会遇到一个困惑的CSS选择器。例如,在DOM结构中,一个元素的class为”t-grid t-card class t-class”, 但其CSS选择器却是”&#8216…

    2025年12月24日
    000
  • 有哪些美观的开源数字大屏驾驶舱框架?

    开源数字大屏驾驶舱框架推荐 问题:有哪些美观的开源数字大屏驾驶舱框架? 答案: 资源包 [弗若恩智能大屏驾驶舱开发资源包](https://www.fanruan.com/resource/152) 软件 [弗若恩报表 – 数字大屏可视化组件](https://www.fanruan.c…

    2025年12月24日
    000
  • 逻辑属性与旧版属性:如何根据文本方向选择合适的CSS属性?

    CSS 逻辑属性与旧版属性 CSS 中引入了逻辑属性和旧版属性的概念。这些属性负责控制页面元素的外观和布局。 逻辑属性 逻辑属性以逻辑方向命名,如左右、上下。它们根据元素在文档流中的位置来确定元素的外观。例如: 立即学习“前端免费学习笔记(深入)”; marginBlockStart:控制元素在垂直…

    2025年12月24日
    000
  • CSS 逻辑属性和旧版属性:如何选择?

    css逻辑属性与旧版属性 css中,逻辑属性和旧版属性用于控制元素的布局和外观。然而,两者在语法和使用方式上有所不同。 逻辑属性 逻辑属性是基于元素在现实世界中的预期行为来命名的。它使用诸如 “start”、”end” 和 “block&#…

    2025年12月24日
    400
  • 网站底部如何实现飘彩带效果?

    网站底部飘彩带效果的 js 库实现 许多网站都会在特殊节日或活动中添加一些趣味性的视觉效果,例如点击按钮后散发的五彩缤纷的彩带。对于一个特定的网站来说,其飘彩带效果的实现方式可能有以下几个方面: 以 https://dub.sh/ 网站为例,它底部按钮点击后的彩带效果是由 javascript 库实…

    2025年12月24日
    000

发表回复

登录后才能评论
关注微信