Convolutional CRFs for Semantic Segmentation
这篇论文提出使用卷积版的Conditional Random Field(CRF)用于优化语义分割的结果。首先回顾(对写review的我此时是新学的) FullCRF的算法,然后提出了ConvCRF的算法以及implementation,作者代码已开源
FullCRF
CRF的原意在于让特征相似的点输出相似的值,最后转换为优化一下这个条件概率:
第一项为基础全语义分割网络输出的值,第二项体现图片中不同位置的相互影响。FullCRF中,第二项计算公式为 其中也就是图中每一个点(除了点i之外).常用的核函数有如以下的高斯函数
其中等是仅有的可学习参数,直觉而言,就是特征相似者相互影响大,距离近者相互影响大。
最终实现的迭代算法:
ConvCRF
ConvCRF先假设两个曼哈顿距离大于一定阈值的点相互独立,这个称为ConvCRF的filter size.这也就是ConvCRF对前文的预设方式
对于位于的点它对应的卷积核/CRF核为
其中为可学习的变量为特征向量,卷积范围内的每一个pair有一个对应的,结果Q,combined message则由此式子给出
作者提到,这个运算操作可以说类似于locally connected layers(every pixel has its own filter),区别在于每一个kernel在channel方向上是一个常数(只负责加权求和整个feature vector而不需要重整feature)。
(题外话,locally connected layer目前有keras implementation但是还没有officail pytorch implementation,参考)