【ai全栈】语义分割算法总结
1 语义分割综述
1.1 评价指标-miou/fwiou
基于混淆矩阵计算
1.2 模型原理
语义分割发展史:
- 深度学习方法碾压传统方法
- 在全卷机网络FCN之前,深度学习处理语义分割的思路是patch classification,即对图像切块来做像素分类
- FCN是具有里程碑意义,卷积后接反卷积(上采样)而不是全连接层来实现逐像素分类。上采样损失细节信息,可以通过跳跃连接来有效还原部分细节信息。
- 归属于encoder-decoder的unet是在fcn的思想上建立的网络;用于医学影像分割;特征提取用的不是vgg等预训练网络,而是自由扩展深度的cnn;unet还有一个特点是捷径连接。
- 空洞卷积取代pooling来扩大感受野且能够保持图像尺寸。
PSPNet:
- 场景分析
- 基于fcn的方法缺乏恰当的手段来利用全局场景类别线索。
- 空间金字塔池化对于捕捉全局信息效果很好,空间金字塔网络进一步加强了这一能力。
- 除了结合全局和局部的线索,该论文提出结合【深度监督损失】的优化策略。
deeplab v3+:
- modified xception
- xception骨干网络 input flow调用三次block函数
- 深度可分离卷积的实现用到了pytorch的pad函数
- 网络设计理念:模块化设计
- encoder-decoder 有助于提取锐利边缘?(deeplabv3+摘要中描述,理解有误)
- Unet和fcn都属于编码-解码结构
- pytorch实现:sequential 定义块
- pytorch forward 函数是模型定义的逻辑流
注意力语义分割(信息融合):
- nonlocal 保边滤波,保持类间方差的同时,减少类内方差的效果。
- PSANET 两路attention,相当于transformer中的两个head,两路分别起到collect和distribute的作用。
- Senet 通道信息融合
- Cbam 使用了压缩+激活的思想。同时使用通道+空间信息融合。
- danet是cbam和non-local的结合
- gcnet优化danet,优化no-local的时间复杂度
- Emanet是期望最大值的注意力机制
HRNET:
一个特征提取backbone,具有保持分辨率、频繁信息融合的特征
用作语义分割需要把特征集合起来连接分类器。
OCRNET:
注意不要和光学字符识别的OCR混淆!
相比特征金字塔网络和空洞卷积,一种新的扩大感受野设计,原理是利用baseline分割来准确勾绘对象。
2 优化算法
2.1 梯度下降
important kind of search in current AI
based on concepts from multivariable calculus
search in continuous state space
gradientDescent(L){ //损失函数输入
S = [s1, s2, ..., sn]; // 初始变量
repeat{
G = gradient(L,S); //求L在S处的梯度G
S = S - e*G; //更新S,速率是e
} until(termination condition)
return S;
}