【吴恩达】神经网络&深度学习-学习笔记【四】
神经网络&深度学习 - 吴恩达 - 第四课
一、基础知识
1.1 卷积神经网络
举一个例子(垂直边缘检测器):
第一步:
第二步:
以此类推
6X6图像矩阵,通过3X3卷积核,得到4X4的矩阵
为什么可以通过这个进行垂直边缘监测?
垂直边缘检测器和水平边缘检测器:
不同种类的边缘检测器:
通过神经网络反向传播算法,使机器自己学习卷积核(学习这9个参数):
1.2 pading
上面常规的卷积方法,会丢失边缘信息,并且使输出矩阵缩小。
解决方法:在卷积前,对图像进行填充:
6X6 -> 8X8
一般都是填充0
Valid卷积/Same卷积:
Valid:边缘不填充卷积
Same:边缘填充p个像素点
1.3 卷积步长
改变之前移动的步长
传统的卷积(数学上)需要在相乘前对卷积核上下左右翻转(互相关)
在机器学习中,一般不进行翻转
1.4 三维卷积
用三维的滤波器,和三维的图像运算,一个结果中包含27个元素:
和上面的一维一样处理:
- 为什么要用三维卷积?
可以在图像中指定不同颜色的通道进行边界检测
- 如何同时进行水平和竖直边界检测?
单独用两个滤波器,然后结果叠加成一个三维矩阵
1.5 单层/多层卷积网络
- 单层卷积网络例子:
把卷积核中的参数当成w
如果有10个卷积核,有多少参数?
每个 3X3X3 卷积核,有27个参数w,加上一个b,有28个参数,10个卷积核合起来就是280个。
- 多层卷积网络?
设计一个多层卷积网络:
设计多层卷积网络的重点是其中超参数的选择。
分类:Conv(卷积层)/Pooling(池化层)/Fully connected(全连接层)
1.6 池化层
- 最大池化:按照分区选出中间的最大值(主要作用就是降维)
池化层的参数都是固定的,无需学习。
池化层的计算公式和卷积层一样。
f-池化尺寸
s-池化步长
- 平均池化:平均值得到输出值
在图像处理中不常用
1.7 全连接层 & 示例
一般把一个卷积层+池化层组成的结构称为一层,通过全连接层通过分类器在最后对结果进行分类。
在网络过程中,单通道的高度和宽度会不断较少,但是通道数会逐渐增多
一般的整体卷积神经网络包括:卷积层+池化层+全连接层
-
使用卷积的好处?
参数共享:可以减少参数数量
稀疏连接:输出中的每个点只和输入的局部数据有影响
二、深度卷积网络实例
2.1 经典网络
- LeNet-5
- AlexNet
- VGG-16
2.2 残差网络
通过将前级的a引入后级(远跳连接),可以使深度网络训练更深(解决梯度消失和梯度爆炸的问题)。
为什么残差网络可以发挥作用?
实际上就是实现了恒等式的效果,如果神经网络在这一层将w,b都学习成0,那么这一层实际上就是上面几层的恒等映射,就不会在增加网络深度的同时损失梯度。
2.3 1X1网络
在单层中,没啥用处,就是全部放大缩小
在多层中,可以等效成一个全连接的神经网络
又称为Network in Network
通过1X1X192的卷积核,32个,可以将原来的192通道压缩到32通道
2.4 Inception网络
作用:可以不确定卷积核大小f
对比两种方法:
可以发现使用1X1形成瓶颈层后,可以大大降低计算量(Inception的主要思想)
通过1X1卷积核可以大大降低计算量(维度)
单个Inception单元:
2.5 transfer学习
对于常规的开发,可以采用如下方式:
从网上clone其他人的框架,然后使用人家训练好的权重。
可以冻结部分层参数,提高训练速度(样本数量少时候冻结的层数多)。
拓充数据集:1.改变图片方向/大小/局部 2.改变RG
三、目标检测
3.1 目标定位/特征点检测
指定标签集:
- 标定目标位置(方框):
- 标定特征点(通过许多点间测关系):
3.2 目标检测(滑动窗口)
通过固定的窗口以固定的步长滑动遍历整个窗口
滑动窗口的卷积应用:
通过将整个图片(大于窗口区域)直接送入CNN,通过和窗口一样的算法可以直接得到最终的结果(就不需要进行重叠部分的重新计算)
在实际的应用中:
3.3 Bounding Box预测
YOLO算法:
将图片等间距分割,然后在每个方格内标定标签集,标签大小格式和之前的一样。
分割的关键是对象的中点,有部分落在方框外的不管。
由最终的y样本反向和X映射对应上:
在Yolo中如何指定标定框?
通过坐标指定
- 交并比 (IOU):
用来衡量重叠度
- 非极大值抑制
去掉其他IOU数值很大的矩形框,防止重复检测
作用:提高识别精度。
- Anchor Box
同时识别多类物体时,选择框重叠的情况。
通过将选择框和实际物体人工指定的Anchor Box进行比对,选择形状更类似的。
3.4 R-CNN候选区域
通过不同的色块(算法得出),在局部使用CNN算法
四、特殊应用
4.1 人脸识别
学习d,可以得到两个人脸比对的相似度。
- Siamese网络:
- Triplet损失:
三元组损失函数,通过正面样本和反面样本进行训练(A,P,N)
Anchor-Positive-Negative
aplha-检测参数,增加偏移量
因此这个系统需要同一个人的多张照片。
需要尽可能的输入难训练的训练集。
4.2 面部验证/二分类
将前面的问题转化为sigmod的二分类问题
神经风格迁移
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通