语义分割算法基础
任务:图像按照物体的类别分隔成不同区域,即将每个像素进行分类
应用:无人驾驶、医疗、人像、智能遥感
思路
基本思路:按照颜色区分 --> 逐像素分类(滑动窗口,用CNN分类,重复计算太多)
全连接层的卷计划:解决固定尺寸问题
每一个全连接层转为一个卷积核,通过卷积核得到每一个特征图,即一个类别的语义分割图
预测图的升采样:
1、双线性插值
2、转置卷积:可学习的升采样层
零插值 --> 可学习卷积核 --> 升采样的特征图
基于多层级特征的上采样
1、FCN
高层特征经过多次降采样,细节丢失严重,结合低层次和高层次特征图来解决
2、Unet
逐级融合高低层次特征
上下文信息
图像周围内容,帮助我们做出更准确的判断 – 而滑动窗口并没有上下文信息
解决:感受野要大,多尺度池化 PSPNet
空洞卷积与DeepLab系列
1、空洞卷积
在零插值的特征图中,(下采样 + 卷积) = 空洞卷积
2、条件随机场CRF
模型直接输出的分割图较为粗糙,尤其在物体边界处不能产生很好的分割效果,DeepLab v1&v2使用条件随机场作为后处理手段,结合原图颜色信息和神经网络预测的类别得到精细化分割结果。
能量函数:
E
(
x
)
=
∑
i
θ
i
(
x
i
)
+
∑
i
j
θ
i
j
(
x
i
,
x
j
)
E(\boldsymbol{x})=\sum_{i} \theta_{i}\left(x_{i}\right)+\sum_{i j} \theta_{i j}\left(x_{i}, x_{j}\right)
E(x)=i∑θi(xi)+ij∑θij(xi,xj)
第一项:
θ
i
(
x
i
)
=
−
log
P
(
x
i
)
\theta_{i}\left(x_{i}\right)=-\log P\left(x_{i}\right)
θi(xi)=−logP(xi)
第二项:
θ
i
j
(
x
i
,
x
j
)
=
μ
(
x
i
,
x
j
)
[
w
1
exp
(
−
∥
p
i
−
p
j
∥
2
2
σ
α
2
−
∥
I
i
−
I
j
∥
2
2
σ
β
2
)
+
w
2
exp
(
−
∥
p
i
−
p
j
∥
2
2
σ
γ
2
)
]
\theta_{i j}\left(x_{i}, x_{j}\right)=\mu\left(x_{i}, x_{j}\right)\left[w_{1} \exp \left(-\frac{\left\|p_{i}-p_{j}\right\|^{2}}{2 \sigma_{\alpha}^{2}}-\frac{\left\|I_{i}-I_{j}\right\|^{2}}{2 \sigma_{\beta}^{2}}\right)+w_{2} \exp \left(-\frac{\left\|p_{i}-p_{j}\right\|^{2}}{2 \sigma_{\gamma}^{2}}\right)\right]
θij(xi,xj)=μ(xi,xj)[w1exp(−2σα2∥pi−pj∥2−2σβ2∥Ii−Ij∥2)+w2exp(−2σγ2∥pi−pj∥2)]
3、空间金字塔池化 ASPP
参考PSPNet,DeepLab采用不同尺度的空洞卷积达到类似的效果
4、DeepLab v3+
5、语义分割算法总结
语义分割模型的评估
比较预测与真值