内容简介:Uber在很多可能涉及坐标变换的领域使用了卷积神经网络,从设计自动驾驶汽车到自动化路牌检测,再到构建地图,以及最大化Uber Marketplace的空间运动效率。在深度学习中,很少有想法会产生与卷积一样大的影响。机器视觉中几乎所有最先进的成果都使用堆叠的卷积层作为基本构建块。由于这种架构很普遍,我们应该期望它们能够完成简单的任务,例如在一个小图像中绘制单个像素,对吗?然而,事实证明,卷积通常难以完成看似微不足道的任务。在我们的论文“卷积神经网络的有趣失效和CoordConv解决方案”(
Uber在很多可能涉及坐标变换的领域使用了卷积神经网络,从设计自动驾驶汽车到自动化路牌检测,再到构建地图,以及最大化Uber Marketplace的空间运动效率。
在深度学习中,很少有想法会产生与卷积一样大的影响。机器视觉中几乎所有最先进的成果都使用堆叠的卷积层作为基本构建块。由于这种架构很普遍,我们应该期望它们能够完成简单的任务,例如在一个小图像中绘制单个像素,对吗?
然而,事实证明,卷积通常难以完成看似微不足道的任务。在我们的论文“卷积神经网络的有趣失效和CoordConv解决方案”( https://arxiv.org/abs/1807.03247 )中,我们演示并分析了卷积神经网络(CNN)在两种不同类型之间进行空间表示转换的糟糕表现:(i,j)笛卡尔空间坐标和one-hot像素空间坐标。我们感到很震惊,因为任务看起来如此简单,但它可能又很重要,因为这样的坐标变换似乎是解决很多常见任务所必需的,例如检测图像中的物体,训练图像的生成模型,以及从像素中训练强化学习(RL)代理。事实证明,这些任务可能已经受到这种卷积失效的影响,我们使用了一个名为CoordConv的层在多个领域对性能进行改进。
我们在这个视频中对研究结果进行了总结:
https://v.qq.com/x/page/o07246d3tll.html
第一个发现:监督渲染对CNN来说很难
假设我们要进行一个简单的监督渲染,我们给定一个(i,j)位置作为网络的输入,并要求它生成一个64×64的图像,该图像包含了一个以该位置为中心的正方形,如图1a所示。你将使用什么类型的网络来完成这个任务?
我们可以使用与其他很多研究工作中所采用的相同方法,生成图像并用一叠反卷积(转置卷积)层绘制正方形。为了测试这个想法,我们创建了一个数据集,这个数据集由在一个64×64的画布上随机放置的9×9正方形组成,如图1b所示。枚举所有可能完全可见的正方形将产生一个包含3,136个样本的数据集。为了评估模型的泛化性,我们定义了两个训练/测试分割:一个是均匀分割,将所有可能的正方形随机分为80%/20%的训练/测试集;一个是象限分割,画布被分为四个象限:中心位置在前三个象限中的正方形被放入训练集,最后一个象限中的正方形被放入测试集。这两种数据集分割的分布情况如图1c所示:
图1.(a)监督渲染任务要求网络在给定(i,j)位置的情况下绘制正方形。(b)样本数据点和(c)用于均匀分割和象限分割的训练与测试集的可视化。
我们假设CNN可以轻松地解决这个任务,因为任务非常简单(只需要两行 Python 代码就可以生成整个数据集),而且数据集非常小,我们可以很容易地过度参数化模型。但事实证明, CNN的表现非常糟糕 。即使使用了1M参数且训练时间超过90分钟的模型(图2b)也无法在均匀分割上获得超过0.83的测试IOU,以及在象限分割上超过0.36测试IOU(图2a)。
图2.(a)均匀分割和象限分割上的监督渲染任务的训练与测试IOU。没有模型达到1.0的IOU。(b)训练其中一个更好的模型需要90分钟才能达到0.8的IOU。
简化的任务和第二个发现:有监督的坐标分类对CNN来说很难
那么为什么监督渲染这么难?这值得我们深入挖掘以便更全面地了解其中的原委。如果直接监督训练的渲染如此困难,那么当改用无监督学习时,应该变得更具挑战性,例如在同样的数据集上训练生成对抗网络(GAN),并由学习的鉴别器提供损失。
让我们缩小问题的范围,把困难的部分独立出来。我们现在要求网络简单地绘制一个像素(而不是9×9的正方形)。我们认为,基于这个单像素任务的解决方案,反卷积网络可以很容易地将这样的像素扩展成更大的正方形,这是我们从实验验证中获得的直觉。因此,我们得出了监督坐标分类任务(图3a),数据集由成对的(i,j)坐标和图像组成,其中图像激活了单个相应的像素,如下图3b所示:
图3.(a)监督坐标分类任务要求网络在给定(i,j)位置的情况下绘制单个像素。(b)样本数据点和(c)训练与测试分割的可视化。
我们再次尝试了很多具有不同超参数的网络,并观察到,即使某些网络可以记住训练集,但它们都没有超过86%的测试准确率(图4a)。这个训练超过一个小时。
图4.(a)均匀分割和象限分割上的监督坐标分类任务的训练与测试精度。虽然有些模型记住了训练集,但是在测试集上没有一个达到高于86%的准确率。这意味着卷积甚至无法泛化一个像素。(b)这个86%准确率的训练需要一个多小时。
卷积没有像我们所期望的那样奏效。为什么会这样?为了弄清楚网络实际在做什么,我们选择了最好的训练过的网络,并检查它的预测结果。
我们要求网络绘制一个只有一个像素的图像(在one-hot表示中值为1)。为了观察到底发生了什么事情,我们将目标像素周围的小区域放大。在图5中,目标像素以红色突出显示,图中显示了模型的softmax预测以及分对数。第一个像素(顶行)包含在训练集中,模型让它处在预期的位置上,尽管存在一些泄露到目标像素之外的概率。下一个像素(中间行)包含在测试集中,模型很少是正确的,捕获相邻像素的概率几乎一样大。再看最后一个像素(底行),这个模型完全是错误的。这令人感到很震惊,因为作为80/20分割的结果,几乎所有测试像素都被训练像素包围。
图5.几个相邻像素的模型预测。网络过拟合——当测试集是86%时训练准确率才是完美的——令人感到惊讶,因为大多数测试像素几乎完全被训练像素包围。此外,网络甚至难以适应训练集,有很大概率会泄露到目标像素之外。
逆向和第三个发现:监督回归对CNN来说也很难
那么为什么在给定位置突出显示一个像素对于网络来说如此困难呢?是因为将信息从小空间扩展到大空间很困难吗?如果反过来会更容易吗?如果我们训练一个卷积网络将图像信息折叠成标量坐标,类似于普通的图像分类又会怎样呢?
事实证明,这种监督回归任务的效果一样很糟糕。在图10中,左侧的点显示的是正确的像素坐标,中间的点显示的是模型的预测。这个模型在测试集上表现不佳,并且很明显难以对训练集进行预测。
简而言之,方向并不重要。
这个看似简单的坐标变换任务会导致两个方向的卷积问题:从笛卡儿(i,j)空间到one-hot像素空间,以及相反的方向。即使是在监督训练的情况下,如果仅绘制一个像素,并且训练样本都在周围时,卷积仍然无法学习笛卡尔空间和像素空间之间的平滑函数。另外,表现最佳的卷积模型通常是很大的,而且很少能够达到最佳的效果,需要很长的训练时间。
解决方案:CoordConv
事实证明,要解决这个问题,只需要一个简单的解决方案。
卷积是等变的,这意味着在将过滤器应用于输入并生成输出时,它不知道每个过滤器的位置,但我们可以让过滤器知道卷积的位置。我们向输入中添加两个通道来实现此目的——一个带有i坐标,一个带有j坐标。我们把这个层叫作CoordConv,如图6所示:
图6.卷积层和CoordConv层的比较。CoordConv层将填充有坐标信息的附加通道作为输入,这里是i和j坐标。
CoordConv层是标准卷积层的简单扩展,其中卷积将坐标作为条件。允许卷积过滤器看到坐标破坏了平移同变性,这可能不是个好主意。平移同变性不是卷积的独特优势吗?
我们认为,卷积的成功取决于三个重要因素:它使用相对较少的学习参数,在现代GPU上具有很快的计算速度,并且它学习了一种功能,也就是平移同变性。
CoordConv层保留了这些属性中的前两个——较少的参数和高效的计算——以及同等程度的学习能力。如果来自坐标学习的权重为零,则CoordConv的行为与标准卷积类似。另外,如果平移依赖对于下游任务来说是有用的,那么它也能够学习它们。但正如我们即将看到的,最终的证据在于卷积。
CoordConv与现有的一系列想法相关,如本地连接层、组合模式生成网络和语言建模中使用的位置嵌入。
CoordConv解决了之前的监督任务问题
首先,让我们重新回到之前的任务,看看CoordConv的表现如何。
如图7和图8所示,在训练集和测试集的分割上,CoordConv模型在监督坐标分类和监督渲染任务中都获得了完美的训练和测试性能。此外,CoordConv模型的参数减少了10-100倍,按照CNN最佳性能标准的要求,训练在几秒钟内完成,而不是一个多小时。
图7. CoordConv在监督坐标分类任务的两个分支上获得完美的性能。
图8.CoordConv模型在监督渲染任务的两个分割中获得完美的性能。
为了进行更仔细的检查,图9显示了绘制相邻像素时常规反卷积与CoordConv的区别:
图9.如前所述,反卷积难以处理监督坐标分类任务,而CoordConv获得100%的训练和测试准确率。该解决方案明显更简单。
在使用卷积绘制像素时,我们观察到伪影和过度拟合。而CoordConv在训练集和测试集上都表现出了完美的性能。反过来也是一样的。卷积很难回归坐标,而CoordConv能够很好地建模函数,如图10所示:
图10. 反卷积难以处理监督回归任务,而CoordConv可以很好地建模。
CoordConv可应用于更广泛的领域
到目前为止,我们已经展示了卷积在解决一些简单问题上的糟糕表现,并提出了CoordConv层解决方案。我们不禁会想: 这个问题是不是这种简单任务所特有的?还是说我们发现了一个核心问题,这个问题一直隐藏在其他任务中,阻碍了内部的表现? 为了回答这个问题,我们在各种任务训练的网络中插入了CoordConv层。以下是我们发现的一些点。
物体检测
因为物体检测模型是在笛卡尔空间中查看像素空间并输出边界框,所以它们看起来很适合使用CoordConv。我们的直觉也得到了证实:在检测散布在画布上的MNIST数字时,我们发现,如果使用了CoordConv,Faster-RCNN网络的IOU提高了约24%。
图像分类
在所有的视觉任务中,当使用CoordConv代替卷积时,我们或许可以任务图像分类在性能变化上是最小的,因为分类更多地是关于图像中的内容而不是它的位置。实际上,当我们在ResNet-50的底部添加CoordConv层并在ImageNet上训练时,性能只有很小的改进。
生成模型
在GAN和变分自动编码器(VAE)这样的生成模型中,像素是基于潜伏绘制的,在理想的情况下,可以编码像位置这样的高级概念。直观地说,CoordConv可能在这方面有一定的作用。我们使用基于Sort-of-CLEVR的简单数据集来训练GAN和VAE,并显示潜伏之间的插值。
我们选择了一个生成彩色形状的简单任务。对于普通GAN(左)和CoordConv GAN(右),图11所示的动画展示了CoordConv如何改善生成模型的性能。
使用生成模型,我们使用潜伏空间中点之间的插值作为研究CoordConv影响的方法,这是是评估生成模型泛化性的常用方法。
图11.使用普通卷积GAN(左)和CoordConv GAN(右)在潜伏空间中移动。在普通的GAN中,我们观察到与画布相关的视觉伪像,以及淡入和淡出的物体。而在使用CoordConv GAN时,物体是凝聚的,而且运动更加平滑。
对于左侧的普通GAN,刚开始动画看起来很好。但当我们仔细观察动画时,我们会注意到并非所有的东西都在移动,伪影与画布粘在了一起,而且物体的一小部分时隐时现。当我们将CoordConv放入生成器和鉴别器时,物体的运动更加平滑。我们可以看到,物体保持凝聚,而且移动平稳。
在训练VAE时我们注意到了类似的模式。通过卷积,我们观察到图像中的部分物体会淡入和淡出,但是使用CoordConv,物体可以更平滑地移动。
图12.使用普通卷积VAE(左)和CoordConv VAE(右)在潜伏空间中的另一种移动。普通的VAE物体会淡入和淡出,而CoordConv VAE让它们可以顺畅地移动。
当使用较大的GAN绘制LSUN(大规模场景理解)卧室场景时,在使用卷积时我们再次看到淡入淡出的物体。而使用CoordConv,我们可以看到平滑的几何变换,包括平移和变形。
图13.在潜伏空间中的第三次移动,普通卷积GAN(左)和CoordConv GAN(右)基于LSUN卧室数据集训练得出。在使用卷积时我们再次看到淡入淡出的物体。而使用CoordConv,我们可以看到平滑的几何变换,包括平移和变形。
强化学习
CoordConv在RL领域可能也有一定的用处。我们训练了一些代理来玩Atari游戏,就像Pac-Man。我们认为,如果卷积过滤器可以同时识别Pac-Man并提取她在迷宫中的位置,就有助于学习更好的策略。
我们尝试将CoordConv添加到我们自己实现的分布式优先体验重放(Ape-X)中,但CoordConv在性能方面的优势并没有立即体现出来。我们还尝试了A2C,一种流行的策略梯度方法,这个时候CoordConv的用处开始体现出来。这可能反映了学习显性策略和学习Q函数之间的差异。在我们尝试的九场比赛中,有六场CoordConv训练得更快,或者比标准卷积有更好的最终得分。正如我们所预期的那样,Pac-Man得分得到了提升。在两场比赛中,CoordConv表现相似,而在一场比赛中表现稍差。总的来说,这些结果表明CoordConv在RL中可能会派上用场。
图14.使用A2C训练Atari游戏的结果。在9场比赛中,(a)有6场CoordConv的表现超过了卷积,(b)其中有2场中表现相似,而(c)有1场表现略差。
下一步
在本文中,我们已经证明了CNN在坐标转换任务方面的糟糕表现,并且引入了我们的CoordConv层解决方案。结果表明,包含这些层可以提高各种应用的性能。我们将在未来的工作中进一步评估 CoordConv在大规模数据集中的优势 ,并探索它在检测、语言任务、视频预测、空间变换器网络以及尖端生成模型中的影响。
英文原文: https://eng.uber.com/coordconv/
感谢陈利鑫对本文的审校。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
JavaScript RIA开发实战
(英)Dennis Odell / 张立浩 / 清华大学出版社 / 2010 / 48.00元
本书介绍如何采用最合理的方式为RIA编写可靠的、易于维护的HTML、CSS和JavaScript代码,以及如何使用Ajax技术在后台实现浏览器与Web服务器的动态通信。本书将介绍您在构建Web应用程序时可能遇到的性能限制,以及如何以最佳的方式克服这些限制。此外,本书提供的提示可以使用户界面响应更加灵敏。 本书也将介绍如何通过添加使用自定义字体的印刷标题、多媒体回放组件、自定义窗体控件和动态绘......一起来看看 《JavaScript RIA开发实战》 这本书的介绍吧!