《Deeplearning with python》读书笔记-第二部分 深度学习实践——计算机视觉CV、特征提取、卷积网络可视化

本文介绍了卷积神经网络在计算机视觉中的应用,包括猫狗分类、特征提取和网络可视化。通过卷积层和MaxPooling2D层的组合,构建了一个简单的卷积神经网络,展示其在MNIST数据集上的优势。文章探讨了卷积的平移不变性和空间层次结构,以及最大池化的作用。此外,还提到了数据增强对防止过拟合的重要性,并讨论了预训练网络如VGG、ResNet等在特征提取和微调中的应用。最后,文章介绍了几种卷积神经网络的可视化方法,帮助理解模型的内部工作原理。
摘要由CSDN通过智能技术生成

深度学习用于计算机视觉

卷积神经网络

下列代码将会展示一个简单的卷积神经网络。它是 Conv2D 层和 MaxPooling2D 层的堆叠。

用model.summary()查看神经网络的结构

再添加分类器,展平用Flatten(),全连接层和一个激活函数为不变函数的输出层

最终的训练结果相比之前的密集连接网络精度更高了。

密集连接层和卷积层的根本区别在于,Dense 层从输入特征空间中学到的是全局模式(比如对于 MNIST 数字,全局模式就是涉及所有像素的模式),而卷积层学到的是局部模式(对于图像来说,学到的就是在输入图像的二维小窗口中发现的模式)

卷积的特性:

卷积神经网络学到的模式具有平移不变性(translation invariant)。卷积神经网络在图像 右下角学到某个模式之后,它可以在任何地方识别这个模式,比如左上角。对于密集连 接网络来说,如果模式出现在新的位置,它只能重新学习这个模式。这使得卷积神经网 络在处理图像时可以高效利用数据(因为视觉世界从根本上具有平移不变性),它只需 要更少的训练样本就可以学到具有泛化能力的数据表示。

卷积神经网络可以学到模式的空间层次结构(spatial hierarchies of patterns),见图5-2。 第一个卷积层将学习较小的局部模式(比如边缘),第二个卷积层将学习由第一层特征组成的更大的模式,以此类推。这使得卷积神经网络可以有效地学习越来越复杂、越来越抽象的视觉概念(因为视觉世界从根本上具有空间层次结构)。

在 MNIST 示例中,第一个卷积层接收一个大小为 (28, 28, 1) 的特征图,并输出一个大 小为 (26, 26, 32) 的特征图,即它在输入上计算 32 个过滤器。对于这 32 个输出通道,每个通道都包含一个 26×26 的数值网格,它是过滤器对输入的响应图(response map),表示这个过滤器模式在输入中不同位置的响应(见图5-3)。这也是特征图这一术语的含义:深度轴的每个维度都是一个特征(或过滤器),而2D 张量 output[:, :, n] 是这个过滤器在输入上的响应的二维空间图(map)。

卷积的工作原理:在 3D 输入特征图上滑动(slide)这些 3×3 或 5×5 的窗口,在每个可能的位置停止并提取周围特征的 3D 图块[形状为 (window_height, window_width, input_ depth)]。然后每个3D 图块与学到的同一个权重矩阵[叫作卷积核(convolution kernel)]做张量积,转换成形状为 (output_depth,) 的 1D 向量。然后对所有这些向量进行空间重组, 使其转换为形状为 (height, width, output_depth) 的 3D 输出特征图。输出特征图中的每个空间位置都对应于输入特征图中的相同位置(比如输出的右下角包含了输入右下角的信息)。举个例子,利用3×3 的窗口,向量 output[i, j, :] 来自3D 图块 input[i-1:i+1, j-1:j+1, :]。

对于 Conv2D 层,可以通过 padding 参数来设置填充,这个参数有两个取值:"valid" 表 示不使用填充(只使用有效的窗口位置);"same" 表示“填充后输出的宽度和高度与输入相同”。 padding 参数的默认值为 "valid"。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值