图像分割基础
1.图像分割
语义分割:为每个像素都打上标签,只区分类别,但不区分类别中的具体单位。
实例分割:不光要区别类别,还要区分类别中的每一个个体。
2.Focal loss
focal loss从样本难易分类角度出发,解决样本非平衡带来的模型训练问题。
focal loss的具体形式:
注:
1.$\large\gamma$通常设置为2,$\large(1-y_{pred})^{\gamma}$相当于样本的难易度权值,$\large\alpha$为正负样本的比例
2.为了防止难易样本的频繁变化,应当选取小的学习率。防止学习率过大,造成w变化较大从而引起 $\large y_{pred}$的巨大变化,造成难易样本的改变。
3.转置卷积
转置卷积:用来增大输入的高宽
3.1 转置卷积的计算方式
计算方式一:
计算方式二(填充为0,步幅为1):
一般情况:
基本的转置卷积运算:
1 | def trans_conv(X, K): |
高级API:
1 | X = torch.tensor([[0.0, 1.0], [2.0, 3.0]]) |
填充:
1 | tconv = nn.ConvTranspose2d(1, 1, kernel_size=2, padding=1, bias=False)#padding=1将输出的行列减小1 |
步幅:
1 | tconv = nn.ConvTranspose2d(1, 1, kernel_size=2, stride=2, bias=False)#增大stride会将输出变大 |
多通道:
1 | X = torch.rand(size=(1, 10, 16, 16)) |
3.2 转置卷积的棋盘效应
棋盘效应:在转置卷积操作中,生成的输出特征图中出现的不规则、重叠和错位的图案,类似于棋盘格子
棋盘效应的主要原因:kernel size不能够被stride整除(不均匀重叠)
解决方法:
方法一:使kernel size能够被stride整除(无法完全避免该问题)
方法二:插值法+卷积
4.双线性插值
双线性插值:通过待求像素点在源图像中4个最近邻像素值的加权和计算得到
优势:没有灰度不连续的缺点,结果基本令人满意
劣势:双线性内插法的计算比最邻近点法复杂,计算量较大。它具有低通滤波性质,使高频分量受损,图像轮廓可能会有一点模糊。
5.Batch Normalization
优点:
1.可以用更大学习率,加速模型收敛
2.可以不用精心设计权值初始化
3.可以不用dropout或较小的dropout
4.可以不用L2或者较小的weight decay
5.可以不用LRN(local response normalization)
注:
1.由于归一化后的xi基本会被限制在正态分布下,使得网络的表达能力下降。为解决该问题,我们引入两个新的参数:γ,β。 γ和β是在训练时网络自己学习得到的。
2.Batch Normalization将数据移到激活函数中心区域,对于大多数的激活函数而言,这个区域的梯度都是最大的或者是有梯度的,因而这种方法是一种对抗梯度消失的有效手段。