首页 🌀深度学习

简单回顾一下我们在之前的课程中学到了什么知识。

第一课中系统学习了神经网络与深度学习,从逻辑回归到浅层神经网络,最后到深层神经网络。
第二课中系统学习了深层神经网络的改善策略(超参数调试、正则化、网络优化),第一次开始接触偏差/方差分析方法,多种正则化方法减小方差,Mini-batch,多种优化器,Batch Norm,Softmax回归...
第三课系统学习了机器学习策略在深度学习中的应用,深入理解评估指标和数据集划分,真正理解了训练集/开发集/测试集究竟是什么,分别应用于什么时候。从而也引入了人的行为表现以及贝叶斯最优误差率作为一个误差标准,以便作模型的误差分析。这一课的最后也学习了迁移学习和多任务学习,迁移学习的使用频率比多任务学习更高。
现在进入第四课,卷积神经网络CNN,详细内容请继续看作者的总结笔记。
说点儿题外话:在学习一二三课的过程中,很多人(包括我)其实都会有一种感觉,学习第二课和第三课好像不会直接给我们带来明显的提升,或者在想是不是应该把二三课放在第四课之后,毕竟二三课只是讲的深度学习的优化对吧,也很难上手实践。还有一些人会说自己跳过二三课也是不错的选择。但是当我系统学习了二三课后,我逐渐理解了这样设置课程的原因,神经网络的优化策略和机器学习策略是非常有力的优化工具,在学习优化的过程中,培养了我们不断让模型更完美的思考方式,对我们的学习产生潜移默化的正向影响,这是软实力。

一、计算机视觉Computer Version

CV的三种问题场景

  • 图像分类
  • 目标检测
  • 风格迁移
    在这里插入图片描述

为什么不用DNN而用CNN?
在这里插入图片描述
如果处理的图像非常大,用DNN网络时矩阵维度非常大!并且参数众多,巨大的内存需求让人不太能接受,所以这个时候继续使用深层神经网络不可取。

二、卷积运算及边缘检测

  • 垂直边缘检测
  • 水平边缘检测
    在这里插入图片描述

接下来用边缘检测这样一个例子,来讲解卷积运算原理

  • 灰度图像:灰度表示明暗程度(1白 0灰 -1黑)
    在这里插入图片描述
  • 过滤器/卷积核(filter)
    在这里插入图片描述
  • 卷积符号:$*$
  • 编程运算:Python(conv_forward) tensorflow(tf.nn.conv2d) keras(conv2D)

在这里插入图片描述
以4*4矩阵中的第一个元素为例,是怎样计算处理的?
首先在$6 \times 6$矩阵中画出$3\times3$的框(红色)
在这里插入图片描述

然后与$3 \times 3$过滤器逐个元素相乘求和:$3\times1+0\times 0+1\times(-1)+1\times 1+5\times 0+8\times(-1)+2\times1+7\times0+2\times(-1)=-5$

怎样计算$4 \times 4$矩阵中的第一行第二个元素?
只需要将红框向右平移一个单元(绿色),再与过滤器逐个元素相乘求和。
在这里插入图片描述
加一点难度,要计算$4 \times 4$矩阵中第三行第二个元素呢?从$6\times6$矩阵中画出怎样一个框?(橙色 )
在这里插入图片描述
动图演示
在这里插入图片描述

明白了卷积运算是怎么样工作的,此时不禁发问,为什么卷积运算可以做边缘检测?

  • 灰度图像
    在这里插入图片描述
  • 过滤器
    在这里插入图片描述
  • 卷积运算结果
    在这里插入图片描述

在这里插入图片描述

可以看到卷积运算实际上实现了 抽离(检测)出明暗边界(边缘)的过程。
这样看边界抽离出来太宽了对吧,因为这个例子中原图像的尺寸较小,当在一个大尺寸的图像中,检测出来的边缘更符合真实情况。

区分正负边(明暗过渡)

  • 正边界:从明到暗
  • 负边界:从暗到明
    在这里插入图片描述

在这里插入图片描述
垂直和水平边缘检测
在这里插入图片描述
在这里插入图片描述
Sobel Filter
在这里插入图片描述

  • 优点是增加了中间元素的权重值,结果具有更高的鲁棒性。

鲁棒是Robust的音译,也就是健壮和强壮的意思,它也是在异常和危险情况下系统生存的能力。

Scharr Filter
在这里插入图片描述

如果想检测出更复杂的边缘,比如边缘的倾斜角有35° 74°等等,需要将3 * 3过滤器中的数字参数化,通过反向传播学习到9个参数,神经网络可以学习类似边缘检测这样的低层次特征。这被认为是CV中非常有效的思想之一。
先不要着急,在之后的学习中会讲到反向传播学习这9个参数。



文章评论