胶囊网络到底是什么东东?

简介: 胶囊网络是如何克服卷积神经网络的一些缺点,包括需要更少的训练数据,保存图像细节,处理模糊性的呢?看完本文你就知道了!

胶囊网络(CapsNets)是一种可能会对深度学习产生深远影响的热门新型神经网络结构,特别是在计算机视觉领域。那么问题来了:计算机视觉相关问题不是已经解决了吗?我们不是都已经见过卷积神经网络(CNNs)在各种计算机视觉任务(如分类、定位、目标检测、语义分割或实例分割)中达到超人水平的例子吗?(如图1)

e8711336409a0a8dc052f6b116355c27017d971b

1:为一些主要的计算机视觉任务。如今,这些任务都需要一个非常不同的卷积神经网络(CNN)架构,例如用于分类的残差网络(ResNet)、用于目标检测的目标检测系统(YOLO)、用于实例分割的Mask R-CNN等等。

我们已经了解了卷积神经网络,但是:卷积神经网络要在大量的图像上进行训练(或者它们重复使用了神经网络的一部分),而胶囊网络可以很好地推广使用更少的训练数据。

卷积神经网络不能很好地处理模糊性,胶囊网络却可以,甚至可以在拥挤的场景中处理的很好。

卷积神经网络在池化层中丢失了大量信息,降低了空间分辨率(参见图2),因此当输入发生微小的变化,输出基本不变,这是一个在整个网络中必须保留详细信息的问题,例如在语义分割中。如今,这个问题通过围绕CNNs构建复杂的体系结构来解决,来恢复一些丢失的信息。通过胶囊网络,详细的姿态信息(如精确的目标位置、旋转、厚度、倾斜、大小等)将在整个网络中被保存,而不是丢失了之后再恢复,输入的小变化导致输出的小变化——信息被保存,这就是所谓的等变化(equivariance)”。因此,胶囊网络可以在不同的视觉任务中使用相同简单一致的架构。

最后,卷积神经网络需要额外的组件来自动识别部件属于哪个目标(例如,这条腿属于这只羊),而胶囊网络为你免费提供部件层次。

a20da8adfe78a074d1085ee88989ed53f6ecf89d

2Liang-Chieh Chen等人提出的关于图像分割的DeepLab2管道,CNN(右上角)的输出非常粗糙,需要添加额外的步骤来恢复一些丢失的细节。

2011年,Geoffrey Hinton等人在一篇名为《变换自动编码器》的论文中首次引入胶囊网络。在几个月前,201711,Sara SabourNicholas FrosstGeoffrey Hinton发表了一篇名为《胶囊间的动态路由》的论文,该论文介绍了一个在MNIST(著名的手写数字图像数据集)上达到最先进性能的胶囊网络架构,并且在MultiMNIST(一种不同数字重叠对的变体)上得到了比卷积神经网络更好的结果,如参见图3

4c9fb895daa05c350a63ea2385bb24ef6bb32db8

3MultiMNIST图像集(白色)和由胶囊网络的重建(红色+绿色)“R”为重建;“L”为标签。例如,第一个示例(左上角)的预测是正确的,重构也是正确的,但在第五个例子中,预测是错误的:(5,7)而不是(5,0),因此,5是正确的重构,0不是。

虽然胶囊网络有这些优点,但离完美还有很大的距离。首先,就目前而言,它们在大型图像(CIFAR10ImageNet)上的性能不如卷积神经网络。此外,它们的计算量非常大,而且当两个检测目标离得很近的时候,胶囊网络无法检测到同一类型的两个物体(这被称为拥挤问题,而且已经证明人类也存在这种问题)。但是关键的想法是非常好的,胶囊网络只需要做一些调整就能充分发挥它们的潜力。毕竟,现在的卷积神经网络是在1998年被发明出来的,但它们经过几次调整之后才在2012年的ImageNet上,超越了目前的技术水平。

那么,胶囊网络到底是什么?

简而言之,胶囊网络是由胶囊组成的,而不是神经元。胶囊是一组神经元,它会学习检测给定区域(例如一个矩形)图像的特定目标,它输出一个向量(例如一个八维向量),向量的长度代表目标存在的概率估计[1],而且它对姿态参数(例如精确的位置,旋转,等等)定向编码(例如8D空间)。如果对象有轻微的变化(例如移位、旋转、改变大小等),那么胶囊将输出相同长度但方向略有不同的向量,因此,胶囊是等变化的。

就像常规的神经网络,胶囊网络在多个层中构建(见图4)。胶囊在最低层被称为基本胶囊:每个胶囊把接收的一个小区域的图像作为输入(称为感受野),它试图检测一个特定部分的姿势和存在,例如一个矩形。更高层的胶囊被称为路由胶囊,能检测到更大更复杂的物体,如船只。

cb39d7d7fdff346d5f9a9f5094c3d93e2be7635e

4:一个两层的胶囊网络。在这个例子中,基本胶囊层有两个5×5胶囊的映射,而第二胶囊层有两个3×3胶囊的映射。每个胶囊输出一个向量。每个箭头表示不同胶囊的输出。蓝色箭头表示胶囊检测三角形的输出,黑色箭头表示检测矩形的输出,以此类推。

基本胶囊层使用一些常规的卷积层实现。例如,在本文中,它们使用两个输出256个包含标量的6x6特征映射的卷积层。它们重塑这个输出,得到32包含8维向量的6x6映射。最后,使用一个新的压缩函数来确保这些向量的长度在01之间(表示概率),得到基本胶囊的输出。

下一层的胶囊工作原理非常不同,它们使用了一种名为路由协议”(routing by agreement)的算法来试图检测物体及其姿态,这就是胶囊网络的神奇所在,举个例子。

假设有两种基本胶囊:一种是长方形胶囊,一种是三角形胶囊,假设它们都发现了要检索的东西,矩形和三角形都可以是房子或船的一部分(见图5)。给定矩形的姿态,它会稍微向右旋转,房子和船也会稍微向右旋转。考虑到三角形的位置,房子几乎是上下颠倒的,而船会稍微向右旋转。注意,形状和整个/部分关系都是在训练中学习的。矩形和三角形在船的姿势上是一致的,而在房子的姿势上是完全不同的。所以很可能矩形和三角形是同一条船的一部分,而不是房子。

862d3a4c08304304e53bd44b952d6f05d8c25ff4

5:根据路由协议,步骤1根据目标部件的存在和位置预测目标的存在和位置,然后查找预测之间的一致。

因为我们确信矩形和三角形是船的一部分,所以将输出的矩形和三角形胶囊发送给更多的船胶囊,船胶囊将获得更多有用的输入信号,房子胶囊将接收到很少的信号。对于每次连接,路由协议算法维护一个路由权值(参见图6),当结果一致时协议时路由权值增加,不一致时路由权值减少。

402096e2a9be6ef60d70b2da18c301672cb489e5

6:路由协议,步骤2更新路由权值。

路由协议算法涉及到协议检测+路由更新的几个迭代(注意,这种情况发生在每个预测中,而不仅仅是一次,也不仅仅是在训练时),在拥挤的场面特别适用:例如,在图7,现场是模糊的,因为你可以看到一个倒立的房子在中间,但如果这样,底部矩形和三角形就无法解释了,所以路由协议算法将最有可能收敛到一个更好的解释:一只船在底部,顶部是一栋房子。这种模糊性被称为被解释掉,较低的矩形最好的解释是船,这也解释了较低的三角形,一旦这两个部分被解释掉,剩下的部分很容易被解释为房子。

6319610c91041dfd21ec4ef8e81ab3e5eb05d399

7:路由协议可以解析拥挤的场景,比如这张模糊的图片,它可能被误解为倒立的房子加上一些无法解释的部分。相反,较低的矩形将被解释为船的一部分,这也将把较低的三角形和船联系上。一旦船被解释走了,就很容易将顶部理解为房子。

这就是网络胶囊的关键原理!如果您想了解更多的细节,请查看我的两个关于网络胶囊(一个关于架构,另一个关于实现)和我评论的TensorFlow实现(Jupyter Notebook)的视频。

联系我Twitter@aureliengeron。希望这篇文章对你有用!

bc39d33b39448e04dde48b04e6f51427bff7796b

Aurelien Geron是一名机器学习顾问,《用scikit - LearningTensorFlow实践机器学习》的作者。他曾是谷歌员工,2013年至2016年期间领导YouTube视频分类团队。

数十款阿里云产品限时折扣中,赶紧点击领劵开始云上实践吧!

以上为译文。

本文由阿里云云栖社区组织翻译。

文章原标题《introducing-capsule-networks》,

作者:AurélienGéron译者:乌拉乌拉,审校:。

文章为简译,更为详细的内容,请查看原文

相关文章
|
2月前
|
人工智能 自然语言处理 负载均衡
WideNet:让网络更宽而不是更深
WideNet:让网络更宽而不是更深
21 1
|
1月前
|
机器学习/深度学习 编解码
ESRGAN超分辨网络
ESRGAN超分辨网络
17 0
|
1月前
|
机器学习/深度学习 传感器 编解码
BSRGAN超分辨网络
BSRGAN超分辨网络
16 0
|
8月前
|
传感器
【湍流介质的三维传播模拟器】全衍射3-D传播模拟器,用于在具有随机和背景结构的介质中传播无线电和光传播(Matlab代码实现)
【湍流介质的三维传播模拟器】全衍射3-D传播模拟器,用于在具有随机和背景结构的介质中传播无线电和光传播(Matlab代码实现)
|
10月前
|
机器学习/深度学习 传感器 算法
穿墙雷达中基于快速墙体时延估计的点目标后投影算法附matlab代码
穿墙雷达中基于快速墙体时延估计的点目标后投影算法附matlab代码
|
机器学习/深度学习 算法 计算机视觉
基于多注意力融合的抗遮挡目标跟踪算法综述
基于多注意力融合的抗遮挡目标跟踪算法综述
533 0
基于多注意力融合的抗遮挡目标跟踪算法综述
|
11月前
SVPWM下PMSM(永磁同步电机)的矢量控制#建模与仿真
SVPWM下PMSM(永磁同步电机)的矢量控制#建模与仿真
75 0
|
传感器 机器学习/深度学习 编解码
单一传感器图像多光谱多分辨率研究附matlab代码
单一传感器图像多光谱多分辨率研究附matlab代码
|
传感器 机器学习/深度学习 安全
一种使用无线传感器网络预测圆形区域入侵检测的 k 屏障数量的深度学习方法附matlab代码
一种使用无线传感器网络预测圆形区域入侵检测的 k 屏障数量的深度学习方法附matlab代码
|
传感器 机器学习/深度学习 算法
【WSN布局】基于粒子群算法优化无线传感器网络 WSN 节点的位置附matlab代码
【WSN布局】基于粒子群算法优化无线传感器网络 WSN 节点的位置附matlab代码