优步在许多领域使用卷积神经网络,这些领域可能涉及坐标转换,从设计自动驾驶汽车到自动化街道标志检测,以构建地图,并最大限度地提高优步市场的空间运动效率。
在深度学习中,很少有想法能像卷积一样受到如此大的影响。几乎所有最先进的机器视觉结果都使用卷积层堆栈作为基本构建块。由于这样的架构很普遍,我们应该期望它们擅长于简单的任务,比如在一个小图像中绘制单个像素,对吧?
令人惊讶的是,卷积通常很难完成看似微不足道的任务。在我们的论文中,卷积神经网络的一个有趣的失败和CoordConv解,我们揭示并分析了卷积神经网络(cnn)在两种不同类型之间转换空间表示的通用无能:(i, j)中的坐标。笛卡儿空间和单热像素空间中的坐标。这很令人惊讶,因为任务看起来很简单,而且它可能很重要,因为这样的坐标变换似乎是解决许多常见任务所必需的,比如检测图像中的对象,训练图像的生成模型,以及从像素训练强化学习(RL)代理。事实证明,这些任务可能一直都微妙地受到这种卷积失败的影响,正如我们在使用我们提出的解决方案(称为CoordConv的层)时在多个领域演示的性能改进所表明的那样。
我们的研究结果总结在下面的视频中:
第一个发现:监督渲染对cnn来说很难
让我们考虑一个简单的任务监督呈现其中,我们将(i, j)位置作为网络的输入,并要求网络生成以该位置为中心绘制正方形的64×64图像,如图1a所示。你会使用什么类型的网络来解决这个任务?
我们可以采用许多人采用的方法雷竞技是骗人的作品那生成图片用一堆反褶积(转置卷积)层绘制正方形。为了测试这个想法,我们在64×64画布上创建了一个由随机放置的9×9正方形组成的数据集,如图1b所示。枚举所有可能的完全可见的正方形会得到一个总共有3136个示例的数据集。为了评估模型的泛化效果,我们定义了两个训练/测试分割:a统一的分割,其中所有可能的中心位置被随机分为80% / 20%的训练集和测试集象限分割,其中,画布被分为四个象限:以前三个象限为中心的正方形放在火车集中,最后一个象限的正方形放在测试集中。数据集的两个分割的分布如图1c所示:
我们假设cnn可以简单地解决这个任务,因为这个任务非常简单(整个数据集可能只需要两行Python代码就可以生成,如我们的论文),而且由于数据集太小,我们可以很容易地对模型进行过度参数化。但事实证明,cnn的表现出奇地差。即使模型的参数多达1M,训练时间超过90分钟(图2b),也无法在均匀分割上获得超过0.83的测试IOU,在象限分割上获得超过0.36的测试IOU(图2a)。
简化任务和二次发现:监督坐标分类对于cnn来说是困难的
那么为什么监督呈现如此之难呢?为了更全面地理解这一点,有必要再深入一些。毕竟,如果在直接监督下进行训练是如此困难,那么当我们切换到无监督学习时,它只会变得更具挑战性,例如,在由学习鉴别器提供的损失相同的数据上训练生成对抗网络(GAN)。
让我们把问题缩小范围,找出使问题具有挑战性的因素。现在我们要求网络只绘制一个像素(而不是9×9正方形)。可以想象,如果给出了这个单像素任务的解决方案,进一步的反卷积网络可以很容易地将这样的像素扩展成一个更大的正方形,这是我们通过实验验证的直觉。我们由此得出监督坐标分类任务(图3a),其中数据集由(i, j)对坐标和单个对应像素激活的图像组成,如下图3b所示:
我们再次尝试了许多具有不同超参数的网络,并观察到尽管一些网络可以记住训练集,但没有一个网络超过86%的测试准确率(图4a)。这还需要一个多小时的训练。
我们期望卷积能完美地工作,但它不是。为什么不呢?为了弄清楚网络实际上在做什么,我们选择训练过的最好的网络并检查它的预测。
我们要求网络绘制一张只有一个像素的图像(在one-hot表示中值为1)。要查看发生了什么,让我们放大目标像素周围的小区域。在图5中,目标像素以红色高亮显示,我们显示了模型的softmax预测以及logits。第一个像素(最上面一行)在训练集中,所以正如预期的那样,模型得到了正确的结果,尽管一些概率泄漏到了目标像素之外。右边的下一个像素(中间行)在测试集中,并且模型几乎是正确的,而邻近的像素捕获了几乎同样多的概率。再看右边的像素(底部一行),可以看出模型是完全错误的。这是令人惊讶的,因为作为80/20分割的结果,几乎所有的测试像素都被训练像素包围。
反转方向和第三个发现:监督回归对cnn来说也很难
那么,对于网络来说,为什么在给定位置的情况下突出显示一个像素如此困难呢?是因为将信息从小空间扩展到大空间非常困难吗?相反的方向会更容易吗?如果我们训练一个卷积网络,将图像信息分解成标量坐标,更类似于普通的图像分类呢?
事实证明,这个有监督的回归任务的效果同样很差。在图10中,左边的圆点表示正确的像素坐标,中间的圆点表示模型的预测。忽略一些细节,该模型在测试集上表现不佳,并且明显难以预测训练集。
简而言之,方向并不重要。
这个看似简单的坐标变换任务导致了两个方向的卷积问题:从笛卡尔(i, j)空间到单热像素空间,或者从笛卡尔(i, j)空间到单热像素空间。即使在监督下训练,当只有一个像素被绘制,当周围都是训练示例时,卷积仍然无法学习笛卡尔空间和像素空间之间的平滑函数。此外,性能最好的卷积模型非常庞大,充其量只能勉强工作,并且需要很长时间来训练。
解决方案:CoordConv
事实证明,有一个简单的解决办法。
卷积是等变的,这意味着当每个滤波器应用于输入以生成输出时,它不知道每个滤波器在哪里。我们可以通过让滤波器知道它们的位置来帮助卷积。我们通过向输入添加两个通道来实现这一点——一个是i坐标,另一个是j坐标。我们将结果层称为CoordConv,如下图6所示:
提出的CoordConv层是对标准卷积层的简单扩展,其中卷积以坐标为条件。允许卷积滤波器查看坐标破坏了翻译等效方差,这似乎是一个坏主意。平移等价难道不是卷积的显著优势吗?
我们认为卷积的成功得益于三个重要因素:它使用相对较少的学习参数,在现代gpu上计算速度很快,并且它学习的函数是平移等变的。
CoordConv层保留了前两个属性——少参数和高效计算——以及它的等变程度。如果坐标的权重学会变为零,CoordConv的行为就像标准卷积。另一方面,如果翻译依赖对下游任务有用,那么它也有能力学习翻译依赖。但我们会看到,最终证明是在卷积中。
CoordConv与一系列现有的想法有关,比如局部连接层,组合模式生成网络,嵌入的位置用于语言建模。(查看我们的论文更多关于这个概念的讨论)。
CoordConv解决了以前的监督任务
首先,让我们回顾一下前面的任务,看看CoordConv的表现如何。
如图7和图8所示,CoordConv模型在有监督坐标分类和有监督渲染任务中,在训练集和测试集的分割上都获得了完美的训练和测试性能。此外,CoordConv模型的参数少了10-100倍,训练只需几秒钟,而不是表现最好的标准cnn所需的一个多小时(快150倍)。
为了更仔细地检查,下面的图9显示了绘制相邻像素时常规反褶积与CoordConv的比较:
当使用卷积绘制像素时,我们观察到伪影和过拟合。使用CoordConv,性能对于我们的训练集和测试集都是完美的。反之亦然。尽管卷积在回归坐标时遇到了麻烦,但CoordConv对函数进行了很好的建模,如下图10所示:
CoordConv在很多领域都有帮助
在这一点上,我们已经展示了卷积解决一个玩具问题的失败,并且我们提出了CoordConv层的形式的修复。我们很自然地想知道:这个问题只是玩具问题的特有问题,还是我们发现了一个潜伏在其他任务中的核心问题,从内部阻碍了表现?为了回答这个问题,我们将CoordConv层插入到接受各种任务训练的网络中。下面是我们发现的一个总结,我们的论文中有进一步的细节。
对象检测
因为对象检测模型在笛卡尔空间中查看像素空间和输出边界框,所以它们似乎很适合CoordConv。我们发现我们的直觉得到了证实:在一个简单的问题上,检测分散在画布上的MNIST数字,我们发现了a的借据Faster-RCNN使用CoordConv时,网络性能提高了约24%。
图像分类
在所有视觉任务中,当使用CoordConv而不是卷积时,我们可能期望图像分类显示出最小的性能变化,因为分类更多地是关于什么是在像比吗在哪里它是。事实上,当我们在ResNet-50的底部添加一个CoordConv层并在ImageNet上训练时,我们只发现了微小的改进。
生成模型
在像GANs和变分自动编码器(vae)这样的生成式模型中,像素是由潜能绘制的,在理想的情况下,这可能会编码高级概念,如位置。直观地说,CoordConv在这里可能会有所帮助。使用一个简单的形状数据集Sort-of-CLEVR,我们训练GANs和vae,并显示在潜伏期之间的插值。
以生成彩色形状为例。图11所示的插补视频展示了CoordConv如何提高生成模型的性能,插补内容包括普通GAN(左)和CoordConv GAN(右)。
对于生成模型,我们使用潜在空间中点之间的插值来研究CoordConv的影响,这是一种用于评估生成模型泛化效果的常用方法。
对于左边的普通GAN,动画一开始看起来很好。但当我们仔细观察动画时,我们注意到并不是所有东西都在移动;视觉工件被绑定到画布上,实际上一些物体只是简单地出现和消失。当我们将CoordConv同时放入生成器和鉴别器时,运动更加流畅。我们看到物体保持一致,平稳移动,而不是瞬间移动。
我们在训练vae时注意到类似的模式。使用卷积,我们可以观察到图像中部分物体的渐入渐出,但使用CoordConv,物体的移动更加平滑。
当使用更大的GANs绘制大尺度场景理解(LSUN)卧室场景时,通过卷积,我们再次观察到冻结的物体逐渐消失。使用CoordConv,我们可以看到平滑的几何变换,包括平移和变形。
强化学习
RL是一个有趣的领域,CoordConv可能会有所帮助。我们训练了一些特工玩雅达利游戏,比如吃豆人游戏.我们认为,如果卷积滤波器可以同时识别吃豆人女士并提取她在迷宫中的位置,那么它可能有助于学习更好的政策。
我们尝试将CoordConv添加到我们自己的实现分布式优先体验重玩(Ape-X),但CoordConv并没有立即提高性能。我们也尝试过A2C这是一种流行的策略梯度方法,而CoordConv通常是有用的。这可能反映了学习显式策略和学习Q函数之间的差异。在我们尝试的9个游戏中,有6个使用CoordConv的A2C比标准卷积训练得更快或最终得分更好。不出所料,我们注意到吃豆人女士的分数有所提高。在两款游戏中,CoordConv表现相似,在其中一款游戏中表现略差。总的来说,这些结果表明CoordConv可能在RL中有用。
下一个步骤
在这件艺术品中在ccle中,我们已经演示了cnn在建模坐标转换任务时的奇怪无能,并且我们引入了CoordConv层形式的简单修复。我们的研究结果建议包含这些层可以在广泛的应用程序中提高性能。未来的工作将进一步评估CoordConv在大规模数据集中的优势,探索其在检测、语言任务、视频预测和应用中的影响空间变压器网络,以及先进的生成模型。
我们很好奇你是否觉得我们的研究对你的工作有用。雷竞技是骗人的如果你想试试的话,看看我们的论文并使用CoordConv层(参见第S8节的示例代码)作为卷积的替代品。让我们知道你的发现!
订阅我们的通讯以跟上优步工程公司的最新创新。






