SegNet
特点:将encoding的pooling的index传到了decoding层,在upsampling时有帮助。
采用的是same卷积,之后还出现了Bayesian SegNet。
Bayesian SegNet
Bayesian SegNet是通过后验概率,告诉我们图像语义分割结果的置信度是多少,**网络结构多了几个Dropout层,其余无异。**最右边的两个图Segmentation与Model Uncertainty,就是像素点语义分割输出与其不确定度(颜色越深代表不确定性越大,即置信度越低)。
在Bayesian SegNet中,SegNet作者把概率设置为0.5,就是每次有一半的神经元被关闭(激活值为0),由于每次只训练部分权值(更新),可以很清楚地知道,DropOut层会导致学习速度减慢。
蒙特卡洛抽样可以进行分布的拟合,有时候无法精确求解,就用这种方式去拟合预计的分布的参数,即从贝叶斯派到频率派从而得到简单的求解过程,例如:很容易可以在一堆不知道方差、均值的大量数据中得到近似的高斯分布模型。
更进一步
网络的模型训练方式一样。但是后处理部分,区别很大。正常的网络训练都是在训练的时候加入dropout,在测试的时候去掉dropout。但是Bayesian SegNet在训练和测试的时候都需要加dropout。训练的时候加很好理解,测试的时候加,是为了保证每次输入相同的图像,但是得到的分割结果却不一样,有种模型集成的思想在里面。
让同一张图片经过多次前向运算,就可以得到多个不同的分割结果输出。对这些结果求平均就是最终的分割结果(这里是指,对于每次的单个位置的预测向量进行叠加求平均,然后再选取最大的),对于每次预测的概率求解方差,然后画出灰度图(最后一行),就是模型预测的不确定性。
第1~4行分别为 原图、ground truth、预测图、不确定灰度图。
结论:
- 对于分类的边界位置,不确定性较大,即其置信度较低。
- 对于图像语义分割错误的地方,置信度也较低。
- 对于难以区分的类别,例如人与自行车,road与pavement,两者如果有相互重叠,不确定度会增加。