学习分享:CNN(持续更新)

1 卷积神经网络

1.1 概念

处理,网格结构数据,的神经网络
在网络某一层,用卷积操作代替矩阵乘法

1.2 基本CNN架构

输入层—》
Conv0(ReLU)—Conv1—Pool1—Conv2—Pool2—FC1—FC2
—》输出层
在这里插入图片描述

Conv层的激活函数都是:ReLU

1.3 典型网络

LeNet-5
重复2{卷积+平均池化} ——2层FC

AlexNet
卷积+最大池化——same——最大池化——same——same——same——最大池化——3层FC

VGG-16
重复2{卷积2次+池化1次} ——重复3{卷积3次+池化1次}

1.4 NN的问题

参数数量=图像尺寸(100010003)*神经元个数(100)=3亿

网络参数爆炸,需要简化网络结构。

如何简化网络结构?
法一:局部识别——卷积
法二:图像压缩——池化

2 关键技术

2.1 卷积(conv)

2.1.1 what卷积?

(1)信号中的卷积:
在这里插入图片描述
在这里插入图片描述
离散形式:
在这里插入图片描述

(2)CNN中的卷积:图像局部操作,提取基本模式
对二维图像I的卷积,如下:
在这里插入图片描述

基本模式(pattern):边缘、颜色、形状、纹理

2.1.2 why卷积?

(1) 稀疏交互(稀疏连接/稀疏权重)
实现:核大小,远小于,输入大小
作用:提取局部特征,减少网络参数,降低计算量,提高效率

m个输入,n个输出
矩阵乘法(跟所有人连),需要mxn个参数
在这里插入图片描述
卷积(只跟自己的k个邻居连),只需要kxn个参数
在这里插入图片描述
稀疏交互合理吗,NN的表达能力会不会下降?
处在NN深层的单元可能与绝大部分输入是间接交互的,这允许NN可以只通过稀疏交互来高效描述多变量复杂交互。
在这里插入图片描述

(2) 参数共享(参数绑定)
实现:相同的核
作用:降低了存储需求(k个参数),训练难度
在这里插入图片描述

(3) 等变表示
得益于:参数共享

其他卷积功能:平滑,模糊,去燥,锐化,边缘提取

2.1.3 how卷积?

在这里插入图片描述
原始尺寸:n * n = 7 * 7
卷积核尺寸:k * k = 3 * 3
卷积后的尺寸:(n-k+1) * (n-k+1)= 5 * 5

2.1.3 卷积核

卷积核大小为奇数:关于中间像素点中心对称
卷积核元素和为1:图像能量(亮度)守恒

元素和大于1,卷积后比原图更亮;小于1,更暗

卷积后出现0或255:取绝对值或截断

2.1.4 特征图(feature map)

特征图是卷积完,输出的矩阵

特征图非常稀疏的原因:核大小远小于输入图像大小

2.2 池化(pooling)

2.2.1 what池化?

子采样

2.2.2 why池化?

(1)降维:保留关键信息,减少参数,防止过拟合
(2)特征不变性(平移,旋转,尺度):增强位移鲁棒性,提高精度
(3)增大核的感受野
将低层特征组合成高层特征

2.2.3 how池化?

(1)最大池化
滤波器范围内,取最大值
在这里插入图片描述
(2)平均池化
滤波器范围内,取平均值
在这里插入图片描述

2.3 边界填充(padding)

2.3.1 what边界填充?

在输入矩阵边缘进行填充,扩大图像尺寸

2.3.2 why边界填充?

为了让卷积前后,图像尺寸一致

卷积核3 * 3
原图7 * 7,卷积后5 * 5
卷积前后,图像尺寸不同?
原图7 * 7,边界补充后9 * 9,卷积后7 * 7

2.3.3 how边界填充?

(1)补零填充
在这里插入图片描述
(2)边界复制填充
在这里插入图片描述
(3)镜像填充
在这里插入图片描述
(4)块填充
在这里插入图片描述

2.4 全连接层(FC)

2.4.1 what全连接层

在卷积层,池化层后面,接的1层/多层平铺结构,完成最终的分类任务
在这里插入图片描述

2.4.2 why全连接层

(1)特征组合:将特征图展开,对局部特征进行组合
(2)作分类器:将隐空间中的特征,映射到标签空间,进行分类任务

2.4.3 how全连接层

一般在卷积,池化完成后,接1 ~ 3层FC,0 ~ 2层做特征组合,1层做分类
在这里插入图片描述

3 计算

3.1 基本信息

输入图尺寸: n * n * c(c是输出特征图通道数)

滤波器/卷积核尺寸: k * k * c’(c’是输出特征图通道数/卷积核个数)

填充padding大小: p

步长stride大小: s

3.2 一次卷积后特征图大小

  • 先把图n填充p,图尺寸变为:
    (n+2p)*(n+2p)

  • 把卷积核k放入图n+2p上,还剩:
    (n+2p)- k格

  • 每步s,需要走:
    (n+2p-k)/s步

  • 刚开始算1个值,每走一步算1次,总共算:
    (n+2p-k)/s+1次

  • 1次卷积,最终输出特征图尺寸为:
    n’ * n’ * c’(c’是输出特征图通道数/卷积核个数)
    其中,n’ = (n+2p-k)/s+1 都是向下取整

n’ * n’ 特征图是t个通道卷积相加的结果
有池化层pooling和卷积一样算
(n-f)/s +1

3.3 感受野RF

特征图上一个像素点对应输入图上的尺寸
已知k=3,p=0,s=1,卷积两次

  • 首先假设卷积后,特征图尺寸为:
    1*1

  • 反向计算,设原感受野尺寸为:
    n*n

  • 1次卷积后,特征图尺寸为:
    (n-k+1) * (n-k+1)

  • 2次卷积后,特征图尺寸为:
    {(n-k+1)-k+1} * {(n-k+1)-k+1}

  • 最后:
    n-2k+2=1
    解得:
    n=5

  • 原感受野大小是:
    5*5

有池化层pooling和卷积一样算,只是没有padding而已

3.4 参数数量

w个数:k * k * c * c’

k:卷积核大小
c:输入特征图通道数
c’:输出特征图通道数/卷积核个数

b个数:c’(c’是输出特征图通道数/卷积核个数)

3.5 计算量/操作的FLOPs

FLOPs:floating point operations,计算量,衡量模型复杂度
FLOPS:floating point operations per second,计算速度,衡量硬件性能

卷积涉及的运算:wx+b

  • wx的计算量:
    (1)对于输出特征图的1个单元,有,
    k * k * c次乘法,k * k * c - 1次加法
    在这里插入图片描述
    (2)若输出特征图大小为n’ * n’ * c’,有,
    (k * k * c ) (n’ * n’ * c’)次乘法,(k * k * c - 1) * (n’ * n’ * c’)次加法*

  • b的计算量:
    (1)对于输出特征图的1个单元,有,
    1次加法
    (2)若输出特征图大小为n’ * n’ * c’,有,
    (k * k * c - 1) * (n’ * n’ * c’)次加法

总乘法次数=(k * k * c )* (n’ * n’ * c’)
总加法次数 =(k * k * c - 1)* (n’ * n’ * c’)+(n’ * n’ * c’) = (k * k * c )* (n’ * n’ * c’)

k:卷积核尺寸
n:输入特征图尺寸
n‘:输出特征图尺寸
c:输入特征图通道数
c’:输出特征图通道数

4 技巧

4.1 如何增大感受野?

(1)将原始图像的尺寸resize得更大
(2)增大网络层数
(3)池化
缺点:下采样,信息损失,降低准确性
(4)增大卷积核尺寸
缺点:增多参数
(5)增加卷积核个数
缺点:梯度消失问题
(6)增大步幅
(7)空洞(dilated)卷积
滤波器膨胀

参考

https://blog.csdn.net/chaipp0607/article/details/72236892?locationNum=9&fps=1
https://blog.csdn.net/a529975125/article/details/80888463
https://zhuanlan.zhihu.com/p/137719986
https://blog.csdn.net/qq_39521554/article/details/81385159
花书deep learning

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值