【吴恩达】神经网络&深度学习-学习笔记【四】

神经网络&深度学习 - 吴恩达 - 第四课

一、基础知识

1.1 卷积神经网络

举一个例子(垂直边缘检测器):

第一步:

image-20220425115418395

第二步:

image-20220425115530957

以此类推

6X6图像矩阵,通过3X3卷积核,得到4X4的矩阵

为什么可以通过这个进行垂直边缘监测?

image-20220425120006061

垂直边缘检测器和水平边缘检测器:

image-20220425120232963

不同种类的边缘检测器:

image-20220425120517340

通过神经网络反向传播算法,使机器自己学习卷积核(学习这9个参数):

image-20220425120555965

1.2 pading

上面常规的卷积方法,会丢失边缘信息,并且使输出矩阵缩小。

image-20220425120938143

解决方法:在卷积前,对图像进行填充:

6X6 -> 8X8

image-20220425121038963

一般都是填充0

Valid卷积/Same卷积:

Valid:边缘不填充卷积

Same:边缘填充p个像素点

image-20220425121458503

1.3 卷积步长

改变之前移动的步长

image-20220425122331361

image-20220425122257408

传统的卷积(数学上)需要在相乘前对卷积核上下左右翻转(互相关)

image-20220425122618995

在机器学习中,一般不进行翻转

1.4 三维卷积

用三维的滤波器,和三维的图像运算,一个结果中包含27个元素:

image-20220425154806872

和上面的一维一样处理:

image-20220425154844683

  • 为什么要用三维卷积?

​ 可以在图像中指定不同颜色的通道进行边界检测

  • 如何同时进行水平和竖直边界检测?

​ 单独用两个滤波器,然后结果叠加成一个三维矩阵

image-20220425155601876

1.5 单层/多层卷积网络

  • 单层卷积网络例子:

image-20220425172754171

把卷积核中的参数当成w

如果有10个卷积核,有多少参数?

每个 3X3X3 卷积核,有27个参数w,加上一个b,有28个参数,10个卷积核合起来就是280个。

  • 多层卷积网络?

image-20220425174006421

设计一个多层卷积网络:

image-20220425174846940

设计多层卷积网络的重点是其中超参数的选择。

分类:Conv(卷积层)/Pooling(池化层)/Fully connected(全连接层)

1.6 池化层

  • 最大池化:按照分区选出中间的最大值(主要作用就是降维)

image-20220425175544074

池化层的参数都是固定的,无需学习。

池化层的计算公式和卷积层一样。

f-池化尺寸

s-池化步长

image-20220425175810894

  • 平均池化:平均值得到输出值

image-20220425175939503

​ 在图像处理中不常用

1.7 全连接层 & 示例

image-20220425185538268

​ 一般把一个卷积层+池化层组成的结构称为一层,通过全连接层通过分类器在最后对结果进行分类。

​ 在网络过程中,单通道的高度和宽度会不断较少,但是通道数会逐渐增多

​ 一般的整体卷积神经网络包括:卷积层+池化层+全连接层

  • 使用卷积的好处?

    参数共享:可以减少参数数量

    稀疏连接:输出中的每个点只和输入的局部数据有影响

image-20220425191318663

二、深度卷积网络实例

2.1 经典网络

  • LeNet-5

image-20220425193712163

  • AlexNet

image-20220425194107590

  • VGG-16

image-20220425194614799

2.2 残差网络

image-20220425195053938

通过将前级的a引入后级(远跳连接),可以使深度网络训练更深(解决梯度消失和梯度爆炸的问题)。

image-20220425195346078

为什么残差网络可以发挥作用?

​ 实际上就是实现了恒等式的效果,如果神经网络在这一层将w,b都学习成0,那么这一层实际上就是上面几层的恒等映射,就不会在增加网络深度的同时损失梯度。

image-20220425200414723

2.3 1X1网络

在单层中,没啥用处,就是全部放大缩小

在多层中,可以等效成一个全连接的神经网络

image-20220425200842165

又称为Network in Network

image-20220425201206486

通过1X1X192的卷积核,32个,可以将原来的192通道压缩到32通道

2.4 Inception网络

作用:可以不确定卷积核大小f

image-20220428094858405

对比两种方法:

image-20220428095409182

image-20220428095725341

可以发现使用1X1形成瓶颈层后,可以大大降低计算量(Inception的主要思想)

通过1X1卷积核可以大大降低计算量(维度)

单个Inception单元:

image-20220428112628781

image-20220428112711984

2.5 transfer学习

对于常规的开发,可以采用如下方式:

从网上clone其他人的框架,然后使用人家训练好的权重。

可以冻结部分层参数,提高训练速度(样本数量少时候冻结的层数多)。

拓充数据集:1.改变图片方向/大小/局部 2.改变RG

三、目标检测

3.1 目标定位/特征点检测

指定标签集:

  • 标定目标位置(方框):

image-20220428215303022

  • 标定特征点(通过许多点间测关系):

image-20220428215743377

3.2 目标检测(滑动窗口)

通过固定的窗口以固定的步长滑动遍历整个窗口

image-20220428220437601

滑动窗口的卷积应用:

image-20220428220858599

通过将整个图片(大于窗口区域)直接送入CNN,通过和窗口一样的算法可以直接得到最终的结果(就不需要进行重叠部分的重新计算)

image-20220428222004773

在实际的应用中:

image-20220428222033083

3.3 Bounding Box预测

YOLO算法:

将图片等间距分割,然后在每个方格内标定标签集,标签大小格式和之前的一样。

分割的关键是对象的中点,有部分落在方框外的不管。

由最终的y样本反向和X映射对应上:

image-20220428223405907

在Yolo中如何指定标定框?

image-20220428223758009

通过坐标指定

image-20220428224514520

  • 交并比 (IOU):

image-20220428224854539

用来衡量重叠度

  • 非极大值抑制

去掉其他IOU数值很大的矩形框,防止重复检测

image-20220428225442235

作用:提高识别精度。

  • Anchor Box

同时识别多类物体时,选择框重叠的情况。

通过将选择框和实际物体人工指定的Anchor Box进行比对,选择形状更类似的。

image-20220428230816023

3.4 R-CNN候选区域

通过不同的色块(算法得出),在局部使用CNN算法

image-20220428232027927

四、特殊应用

4.1 人脸识别

image-20220428234230638

学习d,可以得到两个人脸比对的相似度。

  • Siamese网络:

image-20220428234628934

image-20220428234658913

  • Triplet损失:

三元组损失函数,通过正面样本和反面样本进行训练(A,P,N)

Anchor-Positive-Negative

aplha-检测参数,增加偏移量

因此这个系统需要同一个人的多张照片。

image-20220428235448733

image-20220428235507884

需要尽可能的输入难训练的训练集。

4.2 面部验证/二分类

将前面的问题转化为sigmod的二分类问题

image-20220429000328076

神经风格迁移

posted @   伦敦烟云  阅读(89)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示