卷积和转置卷积

  • 基础图像变换操作
  • 图像特征提取
  • 卷积层
  • 转置卷积
  • 归一化层(Normalization Layer)
  • 批次归一化:Batch Normalization Layer
  • 组归一化:group normalization
  • 实例归一化: instance normalization
  • 层归一化: layer normalization
  • 局部响应归一化: Local Response Normalization
  • 附录
  • 未完待续。。。。


基础图像变换操作

1 空间域

  1. Gamma Correction 伽马校正
    python 傅里叶变换dft pytorch傅里叶变换_深度学习第一:图像像素值(v)代表着亮度(Brightness)
    第二:python 傅里叶变换dft pytorch傅里叶变换_卷积神经网络_02的时候,高亮度区域的变化大即细节增加,低亮度细节减少。
  2. sober算子
    边缘检测
    具体可以搜索百度百科

2 频域
傅里叶变化
高频为细节,为轮廓。
低通滤波可以过滤细节。

图像特征提取

  1. SIFT:scale-invariant feature Transform
  1. 首先计算 金字塔表示(Pyramid Representation)
    高斯滤波 + 下采样
  2. 找到图像金字塔中的特征点:
    拉普拉斯滤波器
    通过之前的高斯滤波和拉普拉斯整合可以成为, LoG高斯拉普拉斯滤波器。
    LoG 计算代价高,用DoG近似。

卷积层

  1. 卷积
  2. 转置卷积,反卷积
    我就搬运图,过程如下:

python 傅里叶变换dft pytorch傅里叶变换_计算机视觉_03


python 傅里叶变换dft pytorch傅里叶变换_计算机视觉_04


python 傅里叶变换dft pytorch傅里叶变换_计算机视觉_05


python 傅里叶变换dft pytorch傅里叶变换_深度学习_06


python 傅里叶变换dft pytorch傅里叶变换_深度学习_07

转置卷积

python 傅里叶变换dft pytorch傅里叶变换_机器学习_08


二维卷积下,默认的pytorch输入张量为 N,C,H,Wdilation 扩张卷积,增加感受野transposed 控制是否进行转置卷积,也就是反卷积

python 傅里叶变换dft pytorch傅里叶变换_计算机视觉_09


归一化层(Normalization Layer)

归一化都采取以下公式:
python 傅里叶变换dft pytorch傅里叶变换_计算机视觉_10


批次归一化:Batch Normalization Layer

对于全连接层:

进入神经元前的输入,进行批归一化。

因此你针对的是每个神经元!,每个神经元的输入进行多数据平均。

图中python 傅里叶变换dft pytorch傅里叶变换_python 傅里叶变换dft_11表示的就是输入到第一个神经元的输出,python 傅里叶变换dft pytorch傅里叶变换_卷积神经网络_12就是批次里第一个数据。

python 傅里叶变换dft pytorch傅里叶变换_python 傅里叶变换dft_13

python 傅里叶变换dft pytorch傅里叶变换_卷积神经网络_14

python 傅里叶变换dft pytorch傅里叶变换_计算机视觉_15

  • BatchNorm1d | BatchNorm2d | BatchNorm3d |
class troch.nn.BactchNorm2d(num_features, eps=1e-5, momentum=0.1, affine =True, track_running_states = True)
  1. nums_features: 输入通道数目C
  2. eps: 防止分母为0
  3. momentum 控制指数移动平均计算python 傅里叶变换dft pytorch傅里叶变换_计算机视觉_16, 如果不用,则track_running_stats=False,就用如下更新:
    python 傅里叶变换dft pytorch傅里叶变换_卷积神经网络_17
    python 傅里叶变换dft pytorch傅里叶变换_python 傅里叶变换dft_18
    python 傅里叶变换dft pytorch傅里叶变换_python 傅里叶变换dft_19
    python 傅里叶变换dft pytorch傅里叶变换_卷积神经网络_20 是基于当前python 傅里叶变换dft pytorch傅里叶变换_机器学习_21python 傅里叶变换dft pytorch傅里叶变换_计算机视觉_22计算所得,相对于批次维度的!!
  4. affine: 是否应用python 傅里叶变换dft pytorch傅里叶变换_深度学习_23python 傅里叶变换dft pytorch傅里叶变换_机器学习_24形成仿射变换
  5. 缓存值:track_running_stats
  1. running_mean 缓存均值张量
  2. running_var 缓存方差张量
  3. num_batches_tracked 当前迷你批次的数目
  1. 迷你批次不能太小,不然均值和方差波动大,减少稳定性
  2. 批归一化层一般在激活函数,因此卷积中的bias可以设置为false,因为会在减平均中被消去

组归一化:group normalization

组归一化,减少了对批次大小的统计依赖

如果num_of_goups=1那就是层归一化layer norm.

python 傅里叶变换dft pytorch傅里叶变换_计算机视觉_25

class torch.nn.GroupNorm(num_groups, num_channels, eps=1e-05, affine= True)
  1. 输入张量通道数 分成 num_groups组,python 傅里叶变换dft pytorch傅里叶变换_深度学习_26
  2. 每组分别归一化
  3. 注意由于代码没有指数移动平均,因此就没有缓存张量
    python 傅里叶变换dft pytorch傅里叶变换_计算机视觉_27
    python 傅里叶变换dft pytorch傅里叶变换_机器学习_28

实例归一化: instance normalization

python 傅里叶变换dft pytorch傅里叶变换_计算机视觉_29

简易记忆:实例实例,就是具体某个例子,聚焦在图片,甚至关注到某个图片某个通道。

python 傅里叶变换dft pytorch傅里叶变换_python 傅里叶变换dft_30

由于之前批次归一化都是参考了其他图片的信息,也就是一个批次中很多图片进行去均值除标准拆,而对于风格迁移或者对抗网络来说,不需要参考同一批次中的图像,所以可以用实例归一化。

class torch.nn.InstanceNorm2d(num_features, eps=1e-05, momentum = 0.1. affine =False, track_running_state = False)

python 傅里叶变换dft pytorch傅里叶变换_python 傅里叶变换dft_31
python 傅里叶变换dft pytorch傅里叶变换_计算机视觉_32


层归一化: layer normalization

python 傅里叶变换dft pytorch傅里叶变换_深度学习_33

python 傅里叶变换dft pytorch傅里叶变换_机器学习_34

适用于 循环神经网络RNN
求==除了迷你批次维度(N)==以外的所有维度的平均值和方差

class torch.nn.LayerNorm(normalized_shape, eps=1e-05, elementwise_affine=False)

python 傅里叶变换dft pytorch傅里叶变换_python 傅里叶变换dft_35
python 傅里叶变换dft pytorch傅里叶变换_机器学习_36
python 傅里叶变换dft pytorch傅里叶变换_计算机视觉_37

局部响应归一化: Local Response Normalization

python 傅里叶变换dft pytorch傅里叶变换_机器学习_38

附录

python 傅里叶变换dft pytorch傅里叶变换_python 傅里叶变换dft_39


python 傅里叶变换dft pytorch傅里叶变换_计算机视觉_40

python 傅里叶变换dft pytorch傅里叶变换_机器学习_41

python 傅里叶变换dft pytorch傅里叶变换_卷积神经网络_42

未完待续。。。。