CVPR2022 Oral:GAN监督的密集视觉对齐

2023-10-21 23:59

本文主要是介绍CVPR2022 Oral:GAN监督的密集视觉对齐,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1 引言

该论文发表于CVPR2022,主要是关于GAN监督学习在密集视觉对齐中的应用,并且论文代码已经开源。在该论文中作者提出了一种用于端到端联合学习的GAN生成数据的框架。受到经典方法的启发,论文中作者联合训练一个空间变换器,将随机样本从基于未对齐数据训练的GAN映射到共同的、联合学习的目标模式。实验展示了8个数据集上的结果(如下图所示),可以直观的发现该论文的方法成功地对齐了复杂数据,并发现了图像中密集的对应关系。GANgealing的性能明显优于过去的自监督算法,在多个数据集上的性能与最先进的监督算法相当(有时甚至超过),另外作者也展示了论文中的算法在增强现实、图像编辑和图像数据集的自动预处理方面的应用。

论文链接: https://arxiv.org/abs/2112.05143
论文代码: https://www.github.com/wpeebles/gangealing
视频代码: https://www.youtube.com/watch?v=Qa1ASS_NuzE

2 GAN监督学习

在该论文中,作者提出了一种GAN监督学习的算法。在该算法框架下, ( x , y ) (\boldsymbol{x},\boldsymbol{y}) (x,y)对是从一个预训练的GAN中采样得来的,并用这些数据对训练一个神经网络 f θ : x → y f_\theta:\boldsymbol{x}\rightarrow \boldsymbol{y} fθ:xy,损失函数为
L ( f θ , y ) = ℓ ( f θ ( x ) , y ) \mathcal{L}(f_\theta,\boldsymbol{y})=\ell(f_\theta(\boldsymbol{x}),\boldsymbol{y}) L(fθ,y)=(fθ(x),y)其中 ℓ \ell 为重构损失,在最原始的监督学习中, f θ f_\theta fθ是在固定的数据对 ( x , y ) (\boldsymbol{x},\boldsymbol{y}) (x,y)中进行学习,但是在该论文中, f θ f_\theta fθ和目标 y \boldsymbol{y} y是联合端到端学习的,在测试时,评估神经网络 f θ f_\theta fθ是用真实的输入。随着 G G G训练成熟,作者从非对齐分布数据分布 x = G ( w ) x=G({\bf{w}}) x=G(w)中进行采样,其中 w ∼ W {\bf{w}}\sim \mathcal{W} wW W \mathcal{W} W表示的是隐空间分布。

2.1 密集可视化对齐

该论文的作者将他们的算法称之为GANgealing,算法的具体示意图如上所示。GANgealing首先在未对齐的输入数据集上训练生成模型 G G G,其中生成器 G G G的输入的隐向量为 w ∈ R 512 {\bf{w}}\in \mathbb{R}^{512} wR512。当 G G G训练时,可以从非对齐的分布中生成样本即 x = G ( w ) \boldsymbol{x}=G({\bf{w}}) x=G(w),其中 w ∼ W {\bf{w}}\sim \mathcal{W} wW W \mathcal{W} W表示的是隐向量空间分布。考虑一个固定的隐向量 c ∈ R 512 {\bf{c}}\in\mathbb{R}^{512} cR512,该向量对应一个固定的合成图片 G ( c ) G({\bf{c}}) G(c)。一个很简单的想法是去使用 G ( c ) G({\bf{c}}) G(c)当做目标模式 y \boldsymbol{y} y,即 y = G ( c ) \boldsymbol{y}=G({\bf{c}}) y=G(c),其中空间转换器 T T T需要利用非对齐样本进行训练。作者可以通过优化关于 T T T的参数和目标图片隐向量 c {\bf{c}} c的联合损失函数: L a l i g n ( T , c ) = ℓ ( T ( G ( w ) ) , G ( c ) ) \mathcal{L}_{\mathrm{align}}(T,{\bf{c}})=\ell(T(G({\bf{w}})),G({\bf{c}})) Lalign(T,c)=(T(G(w)),G(c))其中 ℓ \ell 表示的是两张图片之间的距离。通过最小化关于目标隐向量 c {\bf{c}} c的损失函数 L \mathcal{L} L,GANgealing可以鼓励 c {\bf{c}} c找到一个使得 T T T工作更容易的姿势。如果当前 c {\bf{c}} c的数值对应的姿态不能由大多数图片通过 T T T被预测出来,则需要通过梯度下降法调整隐向量 c {\bf{c}} c
提高生成器生成质量一个简单合理的方法是限制数据集的多样性,然而由于显著外观和姿态的变化的存在,这会导致期望每一个非对齐图片能够精确对齐目标图片是非常不合理的。因此,由下图可知,优化以上损失函数并不会有好的生成效果。可是对每一个随机采样图片 G ( w ) G({\bf{w}}) G(w)代替使用目标 G ( c ) G({\bf{c}}) G(c),此时如果能够构造一个在样本目标中保持外观,并且姿态和物体方向大体一致的图像的时候,则生成效果质量会高很多。

给定 G ( w ) G({\bf{w}}) G(w),作者通过设定 w {\bf{w}} w向量的一部分生成相应的目标。令混合向量 ( c , w ) ∈ R 512 ({\bf{c}},{\bf{w}})\in \mathbb{R}^{512} (c,w)R512是隐向量,通过采样新的 w {\bf{w}} w向量,可以产生一个无限的数据对池,其中输入是非对齐图像 x = G ( w ) \boldsymbol{x}=G({\bf{w}}) x=G(w),目标 y = G ( m i x ( c , w ) ) {\boldsymbol{y}}=G(\mathrm{mix}({\bf{c}},{\bf{w}})) y=G(mix(c,w))有外观 G ( w ) G({\bf{w}}) G(w)的信息,但是姿态是固定的。此时损失函数可以表示为 L a l i g n ( T , c ) = ℓ ( T ( G ( w ) ) , G ( m i x ( c , w ) ) ) \mathcal{L}_{\mathrm{align}}(T,{\bf{c}})=\ell(T(G({\bf{w}})),G(\mathrm{mix}({\bf{c}},{\bf{w}}))) Lalign(T,c)=(T(G(w)),G(mix(c,w)))其中 ℓ \ell 表示的是感知损失函数。在该论文中,作者生成器 G G G选择的是StyleGAN2,其它的生成器结构也可以在该框架中使用,StyleGAN2的优势在于它有高质量强大的风格混合生成能力,作者可以通过使用风格混合来构造每一个样本目标 G ( m i x ( c , w ) ) G(\mathrm{mix}({\bf{c}},{\bf{w}})) G(mix(c,w)),其中 c {\bf{c}} c主要用于粗略的控制物体的姿态, w {\bf{w}} w主要用于控制物体的纹理轮廓,具体的定性结果由上图像可知。为了更好的提高生成质量,作者使用空间转换器 T T T去实现相似性变换,这其中就包含旋转,归一化,水平和垂直移动等。当时用空间转换 T T T时,增加一个 L T V \mathcal{L}_{\mathrm{TV}} LTV损失函数可以使得训练过程中更加平滑,具体的损失函数为 L T V ( T ) = L H u b e r ( Δ x g ) + L H u b e r ( Δ y g ) \mathcal{L}_{\mathrm{TV}}(T)=\mathcal{L}_{\mathrm{Huber}}(\Delta_x {\bf{g}})+\mathcal{L}_{\mathrm{Huber}}(\Delta_y{\bf{g}}) LTV(T)=LHuber(Δxg)+LHuber(Δyg)其中 L H u b e r \mathcal{L}_{\mathrm{Huber}} LHuber表示Huber损失函数, Δ x \Delta_x Δx Δ y \Delta_y Δy分别表示关于 x x x y y y的偏导数。另外作者还是用了损失函数 L 1 ( T ) = ∥ g ∥ 2 2 \mathcal{L}_1(T)=\|{\bf{g}}\|^2_2 L1(T)=g22作为正则化项。

更新参数 c {\bf{c}} c的时候,作者并不是利用反向传播直接到 c {\bf{c}} c,而是利用了将 c {\bf{c}} c表示为 W \mathcal{W} W空间中的 N N N个主要方向的线性组合,具体公式如下所示 c = w ˉ + ∑ i = 1 N α i d i {\bf{c}}=\bar{{\bf{w}}}+\sum\limits_{i=1}^N\alpha_i {\bf{d}}_i c=wˉ+i=1Nαidi其中 w ˉ \bar{\bf{w}} wˉ表示的是 w {\bf{w}} w的实际平均向量, d i {\bf{d}}_i di表示的是第 i i i个主成分方向, α i \alpha_i αi表示对应的系数。代替直接优化 L \mathcal{L} L中的向量 c {\bf{c}} c,作者优化的参数是 { α i } i = 1 N \{\alpha_i\}_{i=1}^N {αi}i=1N。最终GANgealing的损失函数如下所示 L ( T , c ) = E w ∼ W [ L a l i g n ( T , c ) + λ T V L T V ( T ) + λ I L I ( T ) ] \mathcal{L}(T,{\bf{c}})=\mathbb{E}_{{\bf{w}}\sim\mathcal{W}}[\mathcal{L}_{\mathrm{align}}(T,{\bf{c}})+\lambda_{\mathrm{TV}}\mathcal{L}_{\mathrm{TV}}(T)+\lambda_I\mathcal{L}_I(T)] L(T,c)=EwW[Lalign(T,c)+λTVLTV(T)+λILI(T)]其中作者在论文中会将 λ T V \lambda_{\mathrm{TV}} λTV的数值会设置为 1000 1000 1000或者是 2500 2500 2500,损失权重 λ I \lambda_I λI会设置为 1 1 1

3 联合对齐和聚类

GANgealing可以处理多模式的数据,并且GANgealing可以通过简单地学习多个目标隐向量 c {\bf{c}} c来适应聚类算法。令 K K K表示希望学习的聚类的数量。由于每个 c {\bf{c}} c捕获数据中的特定模式,多个 { c k } k = 1 K \{{\bf{c}}_k\}^K_{k=1} {ck}k=1K即为多个模式。每个 c k {\bf{c}}_k ck将学习自己对应的 α \alpha α系数集。类似地,现在有 K K K个空间变换器,每个模式对应一个。GANgealing的这种变体相当于同时对数据进行聚类,并学习每个聚类中所有图像之间的对应关系,具体的公式如下所示 L a l i g n K ( T , c ) = min ⁡ k L a l i g n ( T k , c k ) \mathcal{L}_{\mathrm{align}}^K(T,{\bf{c}})=\min\limits_{k}\mathcal{L}_{\mathrm{align}}(T_k,{\bf{c}}_k) LalignK(T,c)=kminLalign(Tk,ck)
在该论文中,作者训练使用标准交叉熵函数在数据对 ( G ( w ) , k ∗ ) (G({\bf{w}}),k^{*}) (G(w),k)上训练分类器。作者用 T T T上的权重初始化分类器,代替随机初始化。虽然训练成本会比较高,但是空间转换器 T T T和分类器的泛化效果很好。

4 实验结果

如果下图所示是一个非常有趣的小应用为使用GANgealing进行图像编辑的效果图。通过在每个类别中只注释一幅图像,用户可以将其编辑传播到同一类别中的任何图像或视频,本文的链接视频里有使用GANgealing图像编辑更生动的展示。

如下表所示为定量的结果,作者使用标准 α b b o x = 0.1 \alpha_{\mathrm{bbox}}=0.1 αbbox=0.1阈值,在下表中显示了论文的方法在具有在挑战性的SPair-71K数据集上与几种自监督和最先进的监督方法进行比较结果。可以发现GANgealing在几个类别上显著优于先验自监督方法,GANgealing在多个类别上的表现与最先进的监督方法不相上下,甚至优于这些方法。

下图显示了不同簇的密集对应结果。对于每个簇顶行显示该簇的未对齐真实图像;中间一行显示了GANgealing学习的输入图像转换。最下面一行显示了图像之间的密集对应关系。可以发现GANgealing进行密集视觉对齐的效果很,能够准确的将目标图像定位并进行标注。

这篇关于CVPR2022 Oral:GAN监督的密集视觉对齐的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/257789

相关文章

计算机视觉工程师所需的基本技能

一、编程技能 熟练掌握编程语言 Python:在计算机视觉领域广泛应用,有丰富的库如 OpenCV、TensorFlow、PyTorch 等,方便进行算法实现和模型开发。 C++:运行效率高,适用于对性能要求严格的计算机视觉应用。 数据结构与算法 掌握常见的数据结构(如数组、链表、栈、队列、树、图等)和算法(如排序、搜索、动态规划等),能够优化代码性能,提高算法效率。 二、数学基础

机器学习之监督学习(三)神经网络

机器学习之监督学习(三)神经网络基础 0. 文章传送1. 深度学习 Deep Learning深度学习的关键特点深度学习VS传统机器学习 2. 生物神经网络 Biological Neural Network3. 神经网络模型基本结构模块一:TensorFlow搭建神经网络 4. 反向传播梯度下降 Back Propagation Gradient Descent模块二:激活函数 activ

《计算机视觉工程师养成计划》 ·数字图像处理·数字图像处理特征·概述~

1 定义         从哲学角度看:特征是从事物当中抽象出来用于区别其他类别事物的属性集合,图像特征则是从图像中抽取出来用于区别其他类别图像的属性集合。         从获取方式看:图像特征是通过对图像进行测量或借助算法计算得到的一组表达特性集合的向量。 2 认识         有些特征是视觉直观感受到的自然特征,例如亮度、边缘轮廓、纹理、色彩等。         有些特征需要通

【python计算机视觉编程——7.图像搜索】

python计算机视觉编程——7.图像搜索 7.图像搜索7.1 基于内容的图像检索(CBIR)从文本挖掘中获取灵感——矢量空间模型(BOW表示模型)7.2 视觉单词**思想****特征提取**: 创建词汇7.3 图像索引7.3.1 建立数据库7.3.2 添加图像 7.4 在数据库中搜索图像7.4.1 利用索引获取获选图像7.4.2 用一幅图像进行查询7.4.3 确定对比基准并绘制结果 7.

参会邀请 | 第二届机器视觉、图像处理与影像技术国际会议(MVIPIT 2024)

第二届机器视觉、图像处理与影像技术国际会议(MVIPIT 2024)将于2024年9月13日-15日在中国张家口召开。 MVIPIT 2024聚焦机器视觉、图像处理与影像技术,旨在为专家、学者和研究人员提供一个国际平台,分享研究成果,讨论问题和挑战,探索前沿技术。诚邀高校、科研院所、企业等有关方面的专家学者参加会议。 9月13日(周五):签到日 9月14日(周六):会议日 9月15日(周日

【python计算机视觉编程——8.图像内容分类】

python计算机视觉编程——8.图像内容分类 8.图像内容分类8.1 K邻近分类法(KNN)8.1.1 一个简单的二维示例8.1.2 用稠密SIFT作为图像特征8.1.3 图像分类:手势识别 8.2贝叶斯分类器用PCA降维 8.3 支持向量机8.3.2 再论手势识别 8.4 光学字符识别8.4.2 选取特征8.4.3 多类支持向量机8.4.4 提取单元格并识别字符8.4.5 图像校正

Python计算机视觉编程 第十章

目录 一、OpenCv基础知识 1.读取和写入图像 2.颜色空间 3.显示图像和结果 二、处理视频 1.输入视频 2.将视频读取到NumPy数组中 三、跟踪 1.光流 2.Lucas-Kanade算法 一、OpenCv基础知识 OpenCV 自带读取、写入图像函数以及矩阵操作和数学库。 1.读取和写入图像 import cv2# 读取图像im = c

自定义结构体的对齐问题

一、跨平台通用数据类型 之前的一篇博客Linux数据类型(通用移植),已经自定义尝试解决了数据通用类型问题。 这里通过源码进行分析,利用源码进行解决问题。在<stdint.h>中我们发现: typedef signed char int8_t;typedef unsigned char uint8_t;typedef short int16_t;typedef unsigned s

生成对抗网络(GAN网络)

Generative Adversarial Nets 生成对抗网络GAN交互式可视化网站 1、GAN 基本结构 GAN 模型其实是两个网络的组合: 生成器(Generator) 负责生成模拟数据; 判别器(Discriminator) 负责判断输入的数据是真实的还是生成的。 生成器要不断优化自己生成的数据让判别网络判断不出来,判别器也要优化自己让自己判断得更准确。 二者关系形成

机器视觉硬件选型根据某项目相机镜头

一 项目总需求 1、大视野检测需求: (1)大视野: ①产品尺寸15.6寸屏幕,产品大小:350mm x 225mm; ②产品料盘尺寸大小:565mm x 425mm; ③工作距离:880mm;检测精度:500μm; 1、大视野检测需求: (1)大视野: ①产品尺寸15.6寸屏幕,产品大小:350mm x 225mm; ②产品料盘尺寸大小:565mm x 425mm; 工作距离: