基础图像变换操作
1 空间域
-
Gamma Correction 伽马校正
第一:图像像素值代表着亮度(Brightness)
第二: 的时候,高亮度区域的变化即细节增加,低亮度细节减少。 -
sober算子
边缘检测
具体可以搜索百度百科
2 频域
傅里叶变化
高频为细节,为轮廓。
低通滤波可以过滤细节。
图像特征提取
- SIFT:scale-invariant feature Transform
- 首先计算 金字塔表示(Pyramid Representation)
高斯滤波 + 下采样 - 找到图像金字塔中的特征点:
拉普拉斯滤波器
通过之前的高斯滤波和拉普拉斯整合可以成为, LoG高斯拉普拉斯滤波器。
LoG 计算代价高,用DoG近似。
- 首先计算 金字塔表示(Pyramid Representation)
卷积层
- 卷积
- 转置卷积,反卷积
【如果想了解怎么卷积?怎么反卷积?如何形成卷积矩阵和数据列向量的乘积???请看Im2Col GEMM】
我就搬运图,过程如下:
### 转置卷积
二维卷积下,默认的pytorch输入张量为 N,C,H,W
dilation 扩张卷积,增加感受野
transposed 控制是否进行转置卷积,也就是反卷积
归一化层(Normalization Layer)
归一化都采取以下公式:
批次归一化:Batch Normalization Layer
BatchNorm1d BatchNorm2d BatchNorm3d
class troch.nn.BactchNorm2d(num_features, eps=1e-5, momentum=0.1, affine =True, track_running_states = True)
-
nums_features: 输入通道数目C
-
eps: 防止父母为0
-
momentum 控制指数移动平均计算
是基于当前 和 计算所得,相对于批次维度的!!
-
affine: 是否应用 和 形成仿射变换
-
缓存值:track_running_stats
- running_mean 缓存均值张量
- running_var 缓存方差张量
- num_batches_tracked 当前迷你批次的数目
-
迷你批次不能太小,不然均值和方差波动大,减少稳定性
-
批归一化层一般在激活函数前,因此卷积中的bias可以设置为false,因为会在减平均中被消去
组归一化:group normalization
组归一化,减少了对批次大小的统计依赖。
class torch.nn.GroupNorm(num_groups, num_channels, eps=1e-05, affine= True)
- 输入张量通道数 分成 num_groups组
- 每组分别归一化.
- 注意由于代码没有指数移动平均,因此就没有缓存张量
实例归一化: instance normalization
由于之前批次归一化都是参考了其他图片的信息,也就是一个批次中很多图片进行去均值除标准拆,而对于风格迁移或者对抗网络来说,不需要参考同一批次中的图像,所以可以用实例归一化。
class torch.nn.InstanceNorm2d(num_features, eps=1e-05, momentum = 0.1. affine =False, track_running_state = False)
层归一化: layer normalization
适用于 循环神经网络RNN
求除了迷你批次维度(N)以外的所有维度的平均值和方差
class torch.nn.LayerNorm(normalized_shape, eps=1e-05, elementwise_affine=False)
$$x_{t} = (1-\alpha)x_{t-1} + \alpha \hat{x_t}$$
$$E(\bold{x} )= \frac{1}{C \times H \times W}\sum_{C,H,W}\bold{x}$$
$$Var(x) = \frac{1}{C \times H \times W}\sum_{C,H,W}\bold{(\bold{x} - E(x))^2}$$