4.11 一维到三维推广-深度学习第四课《卷积神经网络》-Stanford吴恩达教授
一维到三维推广 (1D and 3D Generalizations of Models)
你已经学习了许多关于卷积神经网络(ConvNets)的知识,从卷积神经网络框架,到如何使用它进行图像识别、对象检测、人脸识别与神经网络转换。即使我们大部分讨论的图像数据,某种意义上而言都是2D数据,考虑到图像如此普遍,许多你所掌握的思想不仅局限于2D图像,甚至可以延伸至1D,乃至3D数据。
让我们回头看看在第一周课程中你所学习关于2D卷积,你可能会输入一个14×14的图像,并使用一个5×5的过滤器进行卷积,接下来你看到了14×14图像是如何与5×5的过滤器进行卷积的,通过这个操作你会得到10×10的输出。
如果你使用了多通道,比如14×14×3,那么相匹配的过滤器可能是5×5×3,如果你使用了多重过滤,比如16,最终你得到的是10×10×16。
事实证明早期想法也同样可以用于1维数据,举个例子,左边是一个EKG信号,或者说是心电图,当你在你的胸部放置一个电极,电极透过胸部测量心跳带来的微弱电流,正因为心脏跳动,产生的微弱电波能被一组电极测量,这就是人心跳产生的EKG,每一个峰值都对应着一次心跳。
如果你想使用EKG信号,比如医学诊断,那么你将处理1维数据,因为EKG数据是由时间序列对应的每个瞬间的电压组成,这次不是一个14×14的尺寸输入,你可能只有一个14尺寸输入,在这种情况下你可能需要使用一个1维过滤进行卷积,你只需要一个1×5的过滤器,而不是一个5×5的。
二维数据的卷积是将同一个5×5特征检测器应用于图像中不同的位置(编号1所示),你最后会得到10×10的输出结果。1维过滤器可以取代你的5维过滤器(编号2所示),可在不同的位置中应用类似的方法(编号3,4,5所示)。
当你对这个1维信号使用卷积,你将发现一个14维的数据与5维数据进行卷积,并产生一个10维输出。
再一次如果你使用多通道,在这种场景下可能会获得一个14×1的通道。如果你使用一个EKG,就是5×1的,如果你有16个过滤器,可能你最后会获得一个10×16的数据,这可能会是你卷积网络中的某一层。
对于卷积网络的下一层,如果输入一个10×16数据,你也可以使用一个5维过滤器进行卷积,这需要16个通道进行匹配,如果你有32个过滤器,另一层的输出结果就是6×32,如果你使用了32个过滤器的话。
对于2D数据而言,当你处理10×10×16的数据时也是类似的,你可以使用5×5×16进行卷积,其中两个通道数16要相匹配,你将得到一个6×6的输出,如果你用的是32过滤器,输出结果就是6×6×32,这也是32的来源。
所有这些方法也可以应用于1维数据,你可以在不同的位置使用相同的特征检测器,比如说,为了区分EKG信号中的心跳的差异,你可以在不同的时间轴位置使用同样的特征来检测心跳。
所以卷积网络同样可以被用于1D数据,对于许多1维数据应用,你实际上会使用递归神经网络进行处理,这个网络你会在下一个课程中学到,但是有些人依旧愿意尝试使用卷积网络解决这些问题。
下一门课将讨论序列模型,包括递归神经网络、LCM与其他类似模型。我们将探讨使用1D卷积网络的优缺点,对比于其它专门为序列数据而精心设计的模型。
这也是2D向1D的进化,对于3D数据来说如何呢?什么是3D数据?与1D数列或数字矩阵不同,你现在有了一个3D块,一个3D输入数据。以你做CT扫描为例,这是一种使用X光照射,然后输出身体的3D模型,CT扫描实现的是它可以获取你身体不同片段(图片信息)。
当你进行CT扫描时,与我现在做的事情一样,你可以看到人体躯干的不同切片(整理者注:图中所示为人体躯干中不同层的切片,附CT扫描示意图,图片源于互联网),本质上这个数据是3维的。
一种对这份数据的理解方式是,假设你的数据现在具备一定长度、宽度与高度,其中每一个切片都与躯干的切片对应。
如果你想要在3D扫描或CT扫描中应用卷积网络进行特征识别,你也可以从第一张幻灯片(Convolutions in 2D and 1D)里得到想法,并将其应用到3D卷积中。为了简单起见,如果你有一个3D对象,比如说是14×14×14,这也是输入CT扫描的宽度与深度(后两个14)。再次提醒,正如图像不是必须以矩形呈现,3D对象也不是一定是一个完美立方体,所以长和宽可以不一样,同样CT扫描结果的长宽高也可以是不一致的。为了简化讨论,我仅使用14×14×14为例。
如果你现在使用5×5×5过滤器进行卷积,你的过滤器现在也是3D的,这将会给你一个10×10×10的结果输出,技术上来说你也可以再×1(编号1所示),如果这有一个1的通道。这仅仅是一个3D模块,但是你的数据可以有不同数目的通道,那种情况下也是乘1(编号2所示),因为通道的数目必须与过滤器匹配。如果你使用16过滤器处理5×5×5×1,接下来的输出将是10×10×10×16,这将成为你3D数据卷积网络上的一层。
如果下一层卷积使用5×5×5×16维度的过滤器再次卷积,通道数目也与往常一样匹配,如果你有32个过滤器,操作也与之前相同,最终你得到一个6×6×6×32的输出。
某种程度上3D数据也可以使用3D卷积网络学习,这些过滤器实现的功能正是通过你的3D数据进行特征检测。CT医疗扫描是3D数据的一个实例,另一个数据处理的例子是你可以将电影中随时间变化的不同视频切片看作是3D数据,你可以将这个技术用于检测动作及人物行为。
总而言之这就是1D、2D及3D数据处理,图像数据无处不在,以至于大多数卷积网络都是基于图像上的2D数据,但我希望其他模型同样会对你有帮助。
这是本周最后一次视频,也是最后一次关于卷积神经网络的课程,你已经学习了许多关于卷积网络的知识,我希望你能够在未来工作中发现许多思想对你有所裨益,祝贺你完成了这些视频学习,我希望你能喜欢这周的课后练习,接下来关于顺序模型的课程我们不见不散。
参考文献:
-
Florian Schroff, Dmitry Kalenichenko, James Philbin (2015). FaceNet: A Unified Embedding for Face Recognition and Clustering
-
Yaniv Taigman, Ming Yang, Marc’Aurelio Ranzato, Lior Wolf (2014). DeepFace: Closing the gap to human-level performance in face verification
-
The pretrained model we use is inspired by Victor Sy Wang’s implementation and was loaded using his code: https://github.com/iwantooxxoox/Keras-OpenFace
. -
Our implementation also took a lot of inspiration from the official FaceNet github repository: https://github.com/davidsandberg/facenet
-
Leon A. Gatys, Alexander S. Ecker, Matthias Bethge, (2015). A Neural Algorithm of Artistic Style (https://arxiv.org/abs/1508.06576
) -
Harish Narayanan, Convolutional neural networks for artistic style transfer. https://harishnarayanan.org/writing/artistic-style-transfer/
-
Log0, TensorFlow Implementation of “A Neural Algorithm of Artistic Style”. http://www.chioka.in/tensorflow-implementation-neural-algorithm-of-artistic-style
-
Karen Simonyan and Andrew Zisserman (2015). Very deep convolutional networks for large-scale image recognition (https://arxiv.org/pdf/1409.1556.pdf
) -
MatConvNet. http://www.vlfeat.org/matconvnet/pretrained/