语义分割神经网络
语义分割综述
参考链接 https://blog.****.net/bailing910/article/details/82625918#commentBox
概念
1,结果的度量标准:
Pixel Acc 为标记正确的像素占总像素的比例。
mIoU是两个集合的交集和并集之比,在语义分割中,这两个集合是真实值和预测值。在目标检测中,就是理想边框和预测的边框之间交集和并集的比例。
其他度量标准见https://blog.****.net/majinlei121/article/details/78965435
Dilated Convolution 空洞卷积/扩张卷积
https://www.zhihu.com/question/54149221
空洞卷积就是原本卷积核感受野是NN,加了空洞卷积之后就变成了(N+m)(N+m)了。下图的标准卷积中下面是卷积之前的特征图,上面是卷积之后的特征图。
这个是空洞卷积。
dconv 包含的特性如下(参考):
1,扩大感受野的同时不增加额外参数;
2,捕获多尺度上下文信息。
同样,dconv 存在以下几个缺点:
1,由于局部信息的丢失以及远距离获取的信息没有相关性导致的网格效应(参考);
2,损失了 pooling 的不变性(不变性对抗攻击十分重要,没有 pooling 的网络抗攻击效果很差,当然一般的任务不需要考虑抗攻击);
https://zhuanlan.zhihu.com/p/59575602
网格效应/棋盘效应:
https://zhuanlan.zhihu.com/p/53753393(从“空洞卷积的两种理解”开始看)
https://www.zhihu.com/question/328891283(看这个,有前向传播FP和反向传播BP,没看懂…kernerl即size,一般是奇数)
扩张率dilation rate
(a) 普通卷积,1-dilated convolution,卷积核的感受野为3×3=9
(b) 扩张卷积,2-dilated convolution,卷积核的感受野为7×7=49
© 扩张卷积,4-dilated convolution,卷积核的感受野为15×15=225
FCN网络
https://zhuanlan.zhihu.com/p/30195134
FCN对图像进行像素级的分类,从而解决了语义级别的图像分割(semantic segmentation)问题。与经典的CNN在卷积层之后使用全连接层得到固定长度的特征向量进行分类(全联接层+softmax输出)不同,FCN可以接受任意尺寸的输入图像,采用反卷积层对最后一个卷积层的feature map进行上采样, 使它恢复到输入图像相同的尺寸,从而可以对每个像素都产生了一个预测, 同时保留了原始输入图像中的空间信息, 最后在上采样的特征图上进行逐像素分类。
简单的来说,FCN与CNN的区域在把于CNN最后的全连接层换成反卷积层,输出的是一张已经Label好的图片。
最后逐个像素计算softmax分类的损失, 相当于每一个像素对应一个训练样本。
https://blog.****.net/qq_36269513/article/details/80420363(看这个)
文中提到的100011是对CNN进行改造,而CNN是输出这张图片属于哪个类,因此是11。但是FCN是1616*21,输出的是这张图片的哪个位置属于21类中的哪一类。这里有一个小trick,就是最后通过逐个像素地求其在21张图像该像素位置的最大数值描述(概率)作为该像素的分类。
直接把原来CNN最后两个全连接的参数丢弃不用,换为卷积层。
Eltwise层的操作有三个:product(点乘), sum(相加减) 和 max(取大值),其中sum是默认操作。
PSPNet网络 (PSP模块)
https://blog.****.net/u014380165/article/details/83869175
PSPNet网络是在FCN网络上进行改进的,结构如下图。提取了多种维度的特征,但没有用到注意力机制。
“首先输入图像经过一个特征提取网络提取特征,这部分作者采用的是添加了空洞卷积的ResNet网络,空洞卷积的作用前面也提到过了,主要是增大感受野,提取到的特征(具体而言stride=8)作为后面pyramid pooling模块的输入。在pyramid pooling模块中构建了深度为4的特征金字塔,不同深度的特征是基于输入特征通过不同尺度的池化操作得到的,池化的尺度是可以调整的,这篇文章中给出的池化后的特征尺寸分别是11、22、33和66。然后通过一个1*1卷积层将特征维度缩减为原来的1/4(四个1/4就是原来的厚度了),最后将这些金字塔特征直接上采样到与输入特征相同尺寸,然后和输入特征做合并,也就是concat操作得到最终输出的特征图。特征合并的过程其实就是融合目标的细节特征(浅层特征)和全局特征(深层特征,也就是上下文信息)的过程,这里因为特征提取网络最后输出的特征层感受野足够大,所以有足够的全局信息(虽然网络的深度不算深),个人认为如果这里能够融合更多的浅层特征(比如stride=4的那一层),也许分割结果在细节方面会更好一些。”
non-local比这个好,因为PSPNET的不同size的池化是固定的,是提前设置好的,但不同的pixel需要考虑的上下文信息是不同的,因此说这种方法是非自适应的。
denseCRF模型 斯坦福2011年NIPS
https://blog.****.net/Qer_computerscience/article/details/84844804
https://zhuanlan.zhihu.com/p/22464586
1)其实就CRF(条件随机场)用在图像语义分割上面,笔记参考“其他数学知识点”。笔记中用的词性标注的例子,词性就相当于像素类别,这里是考虑像素点的类别和周围像素点的类别有关。
2)至于笔记例子中用到的特征函数,应该就相当于第一个链接里面的k(m)函数。
3)还有一个问题就是,如果每个像素点都考虑和其他所有像素点的关系,计算量过于庞大,无法进行归一化。第一个链接中好像给出了高效算法。
4)所谓CRF一元势能应该就是指自己,二元势能是指自己和别人的关系。二元就是有两个变量的意思。