图像分割网络之FCN(全卷积网络)
一. 背景
1. 从图像分类到图像分割:
传统的图像分割算法N-cut,与grabcut,需要人机交互,对于批量化处理图像的应用场景无法接受。
CNN网络在深度学习历史上具有非常重要的历史地位,正是因为CNN网络在2012的imagenet的精彩表现,标志着深度学习开始兴起。
CNN的强大之处在于它的多层结构能自动学习特征,并且可以学习到多个层次的特征:较浅的卷积层感知域较小,学习到一些局部区域的特征;较深的卷积层具有较大的感知域,能够学习到更加抽象一些的特征。
这些抽象特征对物体的大小、位置和方向等敏感性更低,而物体的大小,位置和方向是传统图像算法进行图像分类最大的障碍,从而有助于识别性能的提高。
然而,CNN也有明显的弊端,即经过多层卷积,虽然可以提取更加抽象的特征,同时也意味着物体细节信息的丢失,轮廓变得模糊,不能精确提取物体的边缘。
2. 传统CNN用于图像分割的方法
为了对一个像素分类,使用该像素周围的一个图像块作为CNN的输入用于训练和预测。
这种方法有几个缺点:一是存储开销很大。例如对每个像素使用的图像块的大小为15x15,则所需的存储空间为原来图像的225倍。
二是计算效率低下。相邻的像素块基本上是重复的,针对每个像素块逐个计算卷积,这种计算也有很大程度上的重复。
三是像素块大小的限制了感知区域的大小。通常像素块的大小比整幅图像的大小小很多,只能提取一些局部的特征,从而导致分类的性能受到限制。
3. FCN(全卷积网络的提出):
针对CNN用于图像分割的弊端,提出了FCN网络。可以从图像分类转到图像像素级别的分割。
总而言之,CNN可以很好地进行图像分类,但是如果用CNN来做图像分割,即像素级别的图像分类,则会导致占用更多的存储资源,运算效率低,分割效果不理想等问题,而FCN网络可以很好地解决这些问题。
二. FCN定义
FCN将传统CNN中的全连接层转化成一个个的卷积层。
如下图所示,在传统的CNN结构中,前5层是卷积层,第6层和第7层分别是一个长度为4096的一维向量,第8层是长度为1000的一维向量,分别对应1000个类别的概率。FCN将这3层表示为卷积层,卷积核的大小(通道数,宽,高)分别为(4096,1,1)、(4096,1,1)、(1000,1,1)。所有的层都是卷积层,故称为全卷积网络。
三. FCN和pspnet的关系
pspnet继承了FCN全卷积网络的思想,然后又引入了空洞卷积的方法,构建了金字塔多尺度模型,可以综合像素的局部特征和场景特征,添加了相邻像素标签之间逻辑关系的判断,这样可以提高图像的分割效果,尤其是对于在FCN网络中池化丢失的细节。
四. FCN和CNN的关系
FCN继承了CNN前面五层网络的卷积池化层,但是将后面三层的全连接层全部改为了卷积层。
五. FCN的优点和不足
**优点:**相对于CNN而言,避免了像素块的重复存储,以及每个像素块计算卷积的低效问题。
缺点:
(1)分割的结果不够精细。过于模糊或平滑。(2)像素分割的时候,没有考虑像素之间的逻辑关系,即空间一致性。
六. FCN的扩展
1. 使用空洞卷积。可以增加物体的细节信息,同时没有增加计算量。
2. 引入CRF。CRF的能量函数中包括数据项和平滑项两部分,数据项与各个像素属于各类别的概率有关,平滑项控制像素与像素间类别的一致性。传统的CRF的平滑项只考虑相邻像素类别的关联性,而Fully Connected CRF将图像中任意两个像素之间的类别关联性都考虑进来。
链接1:https://blog.****.net/taigw/article/details/51401448 (
全卷积网络(FCN)与图像分割)
链接2:https://blog.****.net/DL_CreepingBird/article/details/78574059
(FCN)
链接3:https://blog.****.net/qq_36269513/article/details/80420363
(FCN的实现)