01FCN-01-语义分割简介
概念辨析
- 语义分割
- 实例分割
- 全景分割
研究现状
(1)传统方法:Normalized cut、Structured Random Forests、SVM
(2)深度学习卷积神经网络:FCN、SegNet、LinkNet
深度学习代表问题
- 解决不匹配关系的代表算法:SPP、ASPP、PSPNet、GCN、DFN等(使用局部学习和全局信息的融合)
- 解决不寻常类的代表算法:RedNet、RDFNet
01FCN-02常用数据集、指标、研究成果
FCN----单流网络
双流网络----RGBD
如何给单RGB图片添加深度信息----使用sobel算子计算物体轮廓梯度图,添加到数据集中一起训练
语义分割常用指标
PA、MPA、MIoU
研究成果
- 将分类网络改编为全卷积神经网络,具体包括全连接转化为卷积层以及通过反卷积进行上采用
- 使用迁移学习的方法进行微调
- 使用跳跃结构使得语义信息可以和表征信息相结合,产生准确而精细的分割
- FCN证明了端到端、像素到像素训练方式下的卷积神经网络超过了现有语义分割方向的最先进的技术
- FCN成为了PASCAL VOC最出色的分割方法
01FCN-03-论文摘要精读
01FCN-04-论文引言、全局信息及部分信息
全局信息----解决这个物体是什么的问题,深层网络中。
局部信息----解决这个物体在哪里的问题,浅层网络中。
一些传统的方法基于----patchwise,相比于pixwise级别的训练,训练学习不够细致。
预处理--目前常用来对数据进行处理;后处理--对于算法本身进行处理。
由于局部信息和全局信息之间的矛盾--设计一种跳跃结构实现特征融合。
01FCN-05-感受域平移不变性
感受域是一个相对的概念--本层网络与上一层之间的关系,因此,统一规定,感受域都是针对原图的可见区域大小;大的感受域的效果比小的感受域的效果更好,stride越大,感受域越大,但是过大的stride会减少feature map保留的信息;因此,如何增大感受域通是在减小stride是分割中的一大问题。
最终生成的全连接层的缺点:需要固定输出维度和丢弃空间坐标(生成一维向量,丢失信息)。
思路--将一个全连接节点映射成一个卷积核,进而输出整个预测图。
01FCN-06-经典算法本文算法、上采样
本文没有沿用以往的插值上采样,而是提出了新的上采样方法--反卷积,不能复原因卷积操作造成的值的损失。反卷积是需要使用线性插值进行初始化的。
01FCN-07-算法架构
使用的跳跃结构的优点--将一种线性的拓扑结构改为一个DAG的形式。
01FCN-08-训练技巧实际结果及分析
训练技巧
- 加载预训练模型
- 初始化反卷积参数--使用线性插值实现初始化卷积核
- 至少175个epoch后算法才会有不错的表现
- 学习率在100次后进行调整--越往后学习率应该越小
- pool3之前的特征图不需要融合
实际的划分数据不能按照惯例2:8或3:7的比例,一般按照实际的情况来划分,或者查看数据集的解释怎么划分数据集。
01FCN-09-讨论总结
类别平衡是否必须:一定要保证类别的平衡性。
数据预处理--随机镜像。
01FCN-10-代码实现
指标的计算
1.计算混淆矩阵
代码结构
- 数据处理
- 模型定义
- 数据读取
- 训练验证
- 结果测试
01FCN-11-数据预处理
01FCN-12-训练、验证预测函数搭建
训练
1.损失函数的搭建
2.指标的计算
NLLLoss和交叉熵怎么理解
sigmoid----激活函数
softmax----归一化函数
01FCN-15-指标计算
- 相关指标简介
- 混淆矩阵形成过程
- 指标计算过程
02UNET&FusionNet
- 处理对象:
- 应用方向:
- 应用场景:
- 应用思路:
一个重要的思想----使用镜像反转补充边界学习,padding参数作为补充的比例。
如果padding为0,则卷积会缩小图像的尺度。
另一种优化方法----针对重叠目标训练问题,添加重叠区域权重。
FusionNet----Unet和残差结构的结合。
实验尤为重要,细致,多数据集测试,具有代表性。
道路:Camvid
室内:SunRGBD
自然:Pascal-VOC
医学:
可以把复杂的逻辑,单独写成一个类;从而在大类中进行调用。
03 SegNet&DeconvNet
编码和解码可能不再对称。
编码器--普通卷积层和下采样层将特征图缩小,使其成为更低维的表征。
解码器--由普通卷积、上采样层和融合层组层。
dropout----当一个复杂的前馈神经网络被训练在小的数据集时,容易造成过拟合。
反池化----每一个最大池化层的索引都存储起来,用于之后在解码器中使用哪些存储的索引来对相对应特征图进行去池化操作。有助于保持高频信息的完整性,但当对低分辨率的特征图进行反池化时,它会忽略临近的信息。
研究成果和意义:
- 在内存(参数)和准确率之间找到了很好的平衡点
- 将编码解码结构普适化
- 在多个场景数据集中取得了很好的结果
FCN的一些缺陷:
-
感受野的固定----导致目标被切割或者错误的标定;小目标可能被忽略。---->一个解决方法,使用ASPP,大的物体特征对应大的感受野,小的物体特征对应小的感受野。
可以使用一些跳跃连接的方式解决了上述的问题,但是这不是根本解决这个问题的方式。
-
反卷积前特征图过于稀疏,且反卷积过程过于简单,导致一个对象的详细结构被平滑或丢失。
FCN具有134M大小的编码器的网络参数,但是解码器参数只有0.5M,因此编解码的能力是不对称的。
SegNet中反池化的优势----保存的特征的index相对来说比较小,是反卷积和特征融合所比拟不了的。
多尺度结构的几种新式:
- 将原始输入图像划分为不同的尺度,进行特征提取
- 将特征图划分为不同的尺度,进一步进行融合
针对decode方面的设计:
-
在uppooling之后一般要接卷积,因为上采样之后得到的特征图是稀疏的,需要通过卷积进行平滑。
-
DeconNet认为----在上采样之后接反卷积,文中认为反卷积比卷积在恢复特征图方面的能力更强。
但是实际来说,反卷积和卷积在上采样过程中,可能差异不是很大。
尝试使用预训练权重。
卷积和池化具有平移不变性;最大池化用来获得输入图像的小空间变化的平移不变性。
下采样可以获得一个特征图,且其中每个像素值可以获得更大的感受野空间尺度。
没有详细说明类平衡的方法。
04 DeepLab
version 2中的ASPP模块比较重点
引入了新的知识点----空洞卷积,针对多尺度操作,一般都会添加空洞卷积
论文中列出来的语义分割的主要挑战:
- 分辨率----连续的池化或下采样会导致图像的分辨率大幅度下降,从而损失了原始信息,且在上采样过程中难以恢复。尝试减少分辨率的损失--使用空洞卷积,或用步长为2的卷积操作替代池化。
研究成果与意义
- 参数减少,占内存减少
- ResNet的引入,越深层的网络准确率越高
- 引入空洞卷积
- ASPP
感受野与步长有很大的关系----正比关系;但是,步长与分辨率是反比关系。