Loading...
首页专栏正文

【深度学习】带有 CRF-RNN 层的 U-Net模型

 
1人已赏
Fizz 发布于 2021-06-09 17:28:59 浏览 2472 点赞 96 收藏 8

【深度学习】带有 CRF-RNN 层的 U-Net模型

文章目录
1 图像语义分割之FCN和CRF
2 CRF as RNN语义分割
3 全连接条件随机场与稀疏条件随机场的区别
4 CRF as RNN
5 带有 CRF-RNN 层的 U-Net
6 超参数和结果
7 Edge-aware Fully Convolutional Network

1 图像语义分割之FCN和CRF

介绍

图像语义分割,简单而言就是给定一张图片,对图片上的每一个像素点分类

从图像上来看,就是我们需要将实际的场景图分割成下面的分割图: 在这里插入图片描述 不同颜色代表不同类别。

经过我阅读"大量"论文(羞涩)和查看Pascal VOC 2012 Learderboard,我发现图像语义分割从深度学习引入这个任务(FCN)到现在而言,一个通用的框架已经大概确定了。即: 在这里插入图片描述 FCN-全卷积网络 CRF-条件随机场 MRF-马尔科夫随机场 前端使用FCN进行特征粗提取,后端使用CRF/MRF优化前端的输出,最后得到分割图。

接下来,我会从前端和后端两部分进行总结。

前端

为什么需要FCN

我们分类使用的网络通常会在最后连接几层全连接层,它会将原来二维的矩阵(图片)压扁成一维的,从而丢失了空间信息,最后训练输出一个标量,这就是我们的分类结果。

而图像语义分割的输出需要是个分割图,且不论尺寸大小,但是至少是二维的。所以,我们需要丢弃全连接层,换上全卷积层,而这就是全卷积网络了。具体定义请参看论文:Fully Convolutional Networks for Semantic Segmentation

前端结构

FCN

此处的FCN特指Fully Convolutional Networks for Semantic Segmentation论文中提出的结构,而非广义的全卷积网络。

作者的FCN主要使用了三种技术:

卷积化(Convolutional) 上采样(Upsample) 跳跃结构(Skip Layer) 卷积化

卷积化即是将普通的分类网络,比如VGG16,ResNet50/101等网络丢弃全连接层,换上对应的卷积层即可。如下图: 在这里插入图片描述

2 CRF as RNN语义分割

本篇博文主要讲解文献《Conditional Random Fields as Recurrent Neural Networks》,实现了图像语义分割的再次突破。首先我觉得这篇文献的题目应该翻译成:把CRF迭代推理过程看成是RNN;可能很多人看到文献题目就把它翻译成:CRF与RNN的结合,以至于后面看文献觉得迷迷糊糊不知所云,然而这篇文献实质上是FCN与CRF的端到端结合训练。

文献最大的意义在于把CRF的求解推理迭代过程看成了RNN的相关运算,嵌入CNN模型中,达到了真正的算法之间的融合。想要深入理解这篇文献,需要先学会文献《Efficient Inference in Fully Connected CRFs with Gaussian Edge Potentials》、《Fully Convolutional Networks for Semantic Segmentation》、《Semantic Image Segmentation with Deep Convolutional Nets and Fully Connected CRFs》。特别是需要深入理解稠密条件随机场,并且要理解其代码层面的实现,后面才能看懂文献是怎么把CRF看成是RNN的。

众所周知,近几年CNN在图片分类、物体检测取得了不俗的成绩,于是人们开始探索像素级的标注分类,也就是图片的语义分割,其中语义分割的开山之作当属FCN。然而FCN得到的结果很粗糙,比如物体分割的边缘还不够精确,比如下面: 在这里插入图片描述 根据上面FCN分割结果存在的不足是:感受野过大、边缘约束不够强。于是根据这两点不足,文献DeepLab:《Semantic Image Segmentation with Deep Convolutional Nets and Fully Connected CRFs》提出的算法是:先利用FCN做粗分割、然后再利用CRF进行精分割。具体FCN改进如下:

1、把第一层卷积层的卷积核大小由77改为33;(减小感受野)

2、减小下采样比例,本来我们FCN下采样比例是32,通过减小stride大小,下采用比例为8;(减小感受野)

3、采用全连接条件随机场,对FCN分割结果进行精细化分割(增强边缘约束)

我们需要清楚的是这篇文献的算法,粗分割和精分割是完全分开的,并不是一个端到端的训练模型,算法有点low。也就是FCN和CRF扯不上关系,只不过CRF利用了FCN的结果作为一元势函数。

所以如果我们能够把CRF和FCN把这两个强大的招式融汇贯通,搞出一个端到端的训练模型,那么精度必然可以进一步提升,这也正是《CRF as RNN》这篇文献的思想,这篇文献把CRF的学习、推理过程看成是RNN,然后嵌入CNN模型中,搞出了一个新的招式,完成了端到端的训练、预测。

3 全连接条件随机场与稀疏条件随机场的区别

(2)全连接条件随机场与稀疏条件随机场的最大差别在于:每个像素点都与所有的像素点相连接构成连接边。这就恐怖了,如果一张图像是100100,那么就相当于有10000个像素点,因此如果采用全连接条件随机场的话,那么就会构造出约1000010000条边。如果图像大小再大一些,那么就会变得非常恐怖,普通条件随机场推理算法,根本行不通。好在文献《Efficient Inference in Fully Connected CRFs with Gaussian Edge Potentials》给出了快速推理算法。接着我们就简单讲解具体的求解算法。 在这里插入图片描述

4 CRF as RNN

OK,言归正传,我们接着就来讲讲怎么把CRF的推理过程看成是、卷积层、SoftMax层等神经网络层的组合,同时又和RNN有什么样的渊源。下面公式中的下标i表示第i张特征图。

在这里插入图片描述 Zi是归一化因子。其实这个计算公式就是softmax函数,所以这一步的计算我们可以把它看成是神经网络的softmax层,所以我们用神经网络的softmax层替代这个步骤。

5 带有 CRF-RNN 层的 U-Net

该项目旨在改进用于医学图像分割的 U-Net。我们的模型是使用 Tensorflow 和 Keras 实现的。

在这里插入图片描述

6 超参数和结果

在这里插入图片描述 倒数第二列可以理解为普通的条件随机场。、

7 Edge-aware Fully Convolutional Network

语义边缘精化方法_PointRend: Image Segmentation as Rendering 语义分割在最后上采样的时候,一般存在一个直接的多倍上采样,以如下PSPNET为例,最后预测时8倍的上采样层,对于物体边缘的预测十分不利。

在这里插入图片描述 从采样的角度来看,图片存在高频区域(物体边缘,变化剧烈)和低频区域(相对平滑,颜色变化小),而低频区域大概率是属于某一类别,不需要过多的点,而在高频区域采样点稀疏将导致分割出的物体边界过于平滑,应在高频区域(物体边缘,变化剧烈)多采样,低频区域(相对平滑,颜色变化小)少采样。

基于此思路,作者提出基于点的渲染模块(PointRend),输入可为一个或多个定义在常规格网上的CNN网络特征图,并在更高分辨率的格网中输出。先通过合理的点选择方式选择采样点,计算出采样点的分割效果,并对其进行优化。

二、点的渲染模块(PointRend)

主要有以下三部分构成:

1、点选择:为避免在高分辨率的输出中过量的计算所有的像素,对分割结果(步上一回合骤3预测结果)进行2倍双线性插值上采样得到coarse prediction feature,只选择少数的困难点,这些点的选择采取分割结果(上一回合步骤3小型网络预测)概率值最低的一些 ;

2、point-wise特征表示,包括两个部分,第一是提取出选出的困难点的特征,由步骤1得到,第二是低层特征(fine-grained features),类似于ROI;

3、point head:小型网络,可使用简单的多层感知机, 对上采样出的特征图进行预测,更新coarse prediction feature。

以上过程一直重复直到上采样到需要的大小。

前端架构师,精通前端技术栈,混迹云原生开源社区。

*本文仅代表作者观点,不代表易百纳技术社区立场。系作者授权易百纳技术社区发表,未经许可不得转载。

精彩评论

内容存在敏感词
打赏
打赏作者
Fizz
您的支持将鼓励我继续创作!
金额:
¥1 ¥5 ¥10 ¥50 ¥100
支付方式:
微信支付
支付宝支付
微信支付
打赏成功!

感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~

易百纳技术社区
确定要删除此文章、专栏、评论吗?
确定
取消
易百纳技术社区