Core:学习搭建卷积神经网络并将其应用于计算机视觉识别。
1.1 计算机视觉
产生了新的产品和应用。
不只能处理小图,而且能处理大图,为此需要进行卷积运算。
1.2 边缘检测示例
卷积运算是卷积神经网络最基本的组成部分。
如何在图像中检测这些边缘?
kernel = filter
vertical edge detection
数学中,*是卷积。但在编程语言中,用函数来表示卷积。如tf.nn.conv2d来实现卷积运算。
由于图片太小,所以检测到的高亮区比较宽。
1.3 更多边缘检测内容
区分正边和负边。即由亮到暗,由暗到亮。也就是边缘的过渡。
通过反向传播学习这9个w参数,可以得到不只可以检测水平和竖直方向的filter,检测的方向也就更加多元化,较手工设定的filter而言,检测边缘的效果也越好了。
通过使用不同的滤波器,可以找出水平和垂直的边缘。
sobel滤波器的优点:
增加了中间一行元素的权重,使结果的robust更好。
1.4 Padding
不用padding的缺点:
每次做卷积操作,图像会缩小。
落在边缘的像素在输出中采用较少,丢掉图像边缘的许多信息。
filter往往是奇数的原因:
若filter是偶数,则只能使用一些不对称填充,只有filter是奇数,same卷积才能有自然的填充。
filter是奇数的话,可以有一个中心点,便于指出过滤器的位置。
1.5 卷积步长
如果设置stride为1,前后两次卷积部分存在重叠。如果设置pad=(kernel_size-1)/2,则运算后,宽度和高度不变。
如果商不是一个整数怎么办?
答:向下取整。
互相关(cross-correlation)和卷积(convolution)的技术性建议:
根据教材的不同(数学和信号):
数学教科书中是这样的:
卷积的定义是做元素乘积求和之前,首先要做的是把filter沿水平和垂直轴翻转。然后使用这个翻转后的矩阵。
从技术上讲,前面视频中所做的操作有时被称为互相关而不是卷积。但在深度学习文献中,按照惯例,叫做卷积操作。
总结一下,按照机器学习的惯例,通常不进行翻转操作。从技术上来说,可能叫互相关更好,但是大部分文献都叫做卷积运算(不需要用这些翻转)。
以上所有的是关于矩阵(二维图像)的卷积。
1.6 卷积中“卷”的体现之处
如何对立体进行卷积?使卷积变得更加强大。在三维立体上做卷积。
图片和filter的维度相同(3维),但最终的得数不是三维的(4*4),而是二维输出。
检测垂直边界的过滤器,但只对红色通道有用。
检测任意颜色通道的边界
参数不同,可以得到不同的特征检测器。
为检测各种边缘,可同时用多个过滤器,把输出堆叠,可输出立方体。
深度=通道(chanel)
1.7 单层卷积网络
如何构建卷积神经网络的卷积层?某一卷积层的工作原理。
神经网络中的一层。
图中有两个滤波器,就是有两个特征。
参数与输入图像大小无关。280
偏差:
每个过滤器都有一个偏差参数,它是一个实数。偏差在代码中表示为一个1*1*1*nc[l]的四维向量或四维张量。
1.8 简单卷积网络示例
注意下图中卷积层的维度。为图片提取的特征在最后出现7*7*40=1960。可平滑或展开成1960个单元,平滑处理后,输出一个向量,后接logistic还是softmax回归单元,视任务而定。
卷积网络中层的类型。
1.9 池化层
作用:缩减模型大小,提高计算速度,同时提高所提取特征的鲁棒性。
max pooling
特点:有一组超级参数,但是并没有参数需要学习。
average pooling:平均池化,不太常用。但也有例外,深度神经网络深度很深时,可以用平均池化来分解规模为7*7*1000的网络的表示层。在整个空间内求平均值,得到1*1*1000.
f=2,s=2,相当于表示层的高度和宽度缩减一半,
当用max pooling时,很少会用到padding,但也有例外。
用pooling,输入信道与输出信道个数相同,因为对每个信道都做了池化。
需要注意的是,池化过程中没有要学习的参数。So,执行反向传播时,没有参数适用于池化。池化是一种静态属性,没有什么需要学习的。
1.10 卷积神经网络示例
哈哈,引入了FC层。
卷积层layer:带权重的层
尽量自己不要设置超参数,而是查看文献中别人采用了哪些超参数。选一个在别人任务中效果很好的架构,可能会适用于自己的程序。
随着网络的加深,激活值会变小,但是如果激活值下降太快,也会影响网络性能。
参数
1.11 为什么使用卷积?
和只用全连接层相比,卷积层的两个主要优势是:参数共享和稀疏连接。
稀疏连接,所得的值只与输入的部分有关,而与其他无关。