免费行情软件网站下载大全爱,百度小程序开发平台,seo月薪,登录注册网站怎么做文章目录1. 计算机视觉2. 边缘检测示例3. 更多边缘检测4. Padding5. 卷积步长6. 三维卷积7. 单层卷积网络8. 简单卷积网络示例9. 池化层10. 卷积神经网络示例11. 为什么使用卷积#xff1f;作业参考#xff1a; 吴恩达视频课 深度学习笔记
1. 计算机视觉
举例#xff1a;图…
文章目录1. 计算机视觉2. 边缘检测示例3. 更多边缘检测4. Padding5. 卷积步长6. 三维卷积7. 单层卷积网络8. 简单卷积网络示例9. 池化层10. 卷积神经网络示例11. 为什么使用卷积作业参考 吴恩达视频课 深度学习笔记
1. 计算机视觉
举例图片猫识别目标检测无人驾驶图像风格转换比如转成素描等等
面临的挑战
数据的输入可能会非常大一张1000×1000的图片特征向量的维度达到了1000×1000×3(RGB,3通道) 300万在第一隐藏层中你也许会有1000个隐藏单元使用标准的全连接网络这个矩阵的大小将会是1000×300万矩阵会有30亿个参数在参数如此大量的情况下难以获得足够的数据来防止神经网络发生过拟合处理30亿参数的神经网络巨大的内存需求也受不了
你希望模型也能处理大图。为此你需要进行卷积计算下节将用边缘检测的例子来说明卷积的含义
2. 边缘检测示例 例如 6x6 的单通道灰度图像检测垂直边缘构造一个矩阵[10−110−110−1]\left[\begin{array}{rrr}1 0 -1 \\ 1 0 -1 \\ 1 0 -1\end{array}\right]⎣⎡111000−1−1−1⎦⎤ 过滤器 / 核进行卷积运算*convolve import numpy as np
image np.array([[3,0,1,2,7,4],[1,5,8,9,3,1],[2,7,2,5,1,3],[0,1,3,1,7,8],[4,2,1,6,2,8],[2,4,5,2,3,9]])
print(image)
print(-------)
filter_ np.array([[1,0,-1],[1,0,-1],[1,0,-1]])
print(filter_)
print(-------)
from scipy import signal
convolution -signal.convolve2d(image, filter_, boundaryfill,modevalid)
print(convolution)[[3 0 1 2 7 4][1 5 8 9 3 1][2 7 2 5 1 3][0 1 3 1 7 8][4 2 1 6 2 8][2 4 5 2 3 9]]
-------
[[ 1 0 -1][ 1 0 -1][ 1 0 -1]]
-------
[[ -5 -4 0 8][-10 -2 2 3][ 0 -2 -4 -7][ -3 -2 -3 -16]]为什么可以检测边缘 image np.array([[10,10,10,0,0,0],[10,10,10,0,0,0],[10,10,10,0,0,0],[10,10,10,0,0,0],[10,10,10,0,0,0],[10,10,10,0,0,0]])
filter_ np.array([[1,0,-1],[1,0,-1],[1,0,-1]])
print(-signal.convolve2d(image, filter_, boundaryfill,modevalid))[[ 0 30 30 0][ 0 30 30 0][ 0 30 30 0][ 0 30 30 0]]3. 更多边缘检测
可以检测明暗变化方向 竖直水平的过滤器 把这9个数字当成参数通过反向传播学习边缘捕捉能力会大大增强可以检查任意角度
4. Padding
上面 6x6 的图片经过一次过滤以后就变成 4x4 的如果经过多层最后的图像会变得很小。
假设原始图片是 n×nn \times nn×n过滤器是 f×ff \times ff×f那么输出大小是 (n−f1)×(n−f1)(n-f1) \times(n-f1)(n−f1)×(n−f1)
缺点1图像每做一次卷积缩小一点最后变得很小缺点2在角落或边缘区域的像素点在输出中采用较少丢失了图像边缘位置的许多信息
解决上面的问题
进行卷积操作前沿图像边缘填充 p 层像素令 (n2∗p)−f1n⇒pf−12(n2*p)-f1 n \Rightarrow p \frac{f-1}{2}(n2∗p)−f1n⇒p2f−1 这样可以保持图像大小不变还使得边缘信息发挥作用较小的缺点被削弱
ppp 填充多少层怎么选
Valid 卷积p0p0p0和 Same 卷积pf−12p \frac{f-1}{2}p2f−1fff 通常是奇数对称填充有中心点
5. 卷积步长
每次过滤器在图片中移动 s 步长上面的 s 1
输出尺寸为 (n2p−fs1)×(n2p−fs1)(\frac{n2p-f}{s}1) \times (\frac{n2p-f}{s}1)(sn2p−f1)×(sn2p−f1)向下取整
数学中的卷积需要在操作之前对过滤器顺时针旋转90度 水平翻转深度学习里省略了该步骤但是不影响简化了代码
6. 三维卷积 输出是一个二维的每个格子里是对应着 27个元素求和
如果希望对不同的通道进行检测边缘对 filter 的相应层设置不同的参数就可以了
想要多个过滤器怎么办竖直的、水平的各种角度的
7. 单层卷积网络 参数的个数跟图片大小无关跟过滤器相关假如有10个过滤器上面每个过滤器有 27 个参数加上 偏置 b28个再乘以10共计280个参数
即使图片很大参数却很少这就是卷积神经网络的一个特征叫作“避免过拟合”。 8. 简单卷积网络示例 除了 卷积层convolution还有 池化层pooling全连接层fully connected
9. 池化层
除了卷积层卷积网络也经常使用池化层来缩减模型的大小提高计算速度同时提高所提取特征的鲁棒性 Max 运算的实际作用
如果在过滤器中提取到某个特征那么保留其最大值如果没有提取到这个特征可能在右上象限中不存在这个特征那么其中的最大值也还是很小
池化它有一组超参数 f,sf, sf,s但没有参数需要学习不需要梯度下降更新 最大池化比平均池化更常用
常用的参数值为 f2or 3,s2f2 \text{ or } 3, s 2f2 or 3,s2 最大池化时很少用到 paddingp0p0p0 输入输出通道数一样 最大池化只是计算神经网络某一层的静态属性没有需要学习的参数
10. 卷积神经网络示例 尽量不要自己设置超参数而是查看文献中别人采用了哪些超参数选一个在别人任务中效果很好的架构它也有可能适用于你的应用程序 11. 为什么使用卷积
和只用全连接层相比卷积层 的两个主要优势在于参数共享和稀疏连接
全连接层的参数巨大卷积层需要的参数较少
原因
参数共享特征检测如果适用于图片的某个区域那么它也可能适用于图片的其他区域使用稀疏连接一个输出仅依赖少部分的输入 神经网络可以通过这两种机制减少参数以便我们用更小的训练集来训练它从而预防过度拟合
作业
作业手动/TensorFlow 实现卷积神经网络 我的CSDN博客地址 https://michael.blog.csdn.net/
长按或扫码关注我的公众号Michael阿明一起加油、一起学习进步