FCN与U-Net语义分割算法

图像语义分割(Semantic Segmentation)是图像处理和是机器视觉技术中关于图像理解的重要一环,也是 AI 领域中一个重要的分支。语义分割即是对图像中每一个像素点进行分类,确定每个点的类别(如属于背景、人或车等),从而进行区域划分。目前,语义分割已经被广泛应用于自动驾驶、无人机落点判定等场景中。

图1 自动驾驶中的图像语义分割

而截止目前,CNN已经在图像分类分方面取得了巨大的成就,涌现出如VGG和Resnet等网络结构,并在ImageNet中取得了好成绩。CNN的强大之处在于它的多层结构能自动学习特征,并且可以学习到多个层次的特征:

  1. 较浅的卷积层感知域较小,学习到一些局部区域的特征;

  2. 较深的卷积层具有较大的感知域,能够学习到更加抽象一些的特征。

这些抽象特征对物体的大小、位置和方向等敏感性更低,从而有助于分类性能的提高。这些抽象的特征对分类很有帮助,可以很好地判断出一幅图像中包含什么类别的物体。图像分类是图像级别的!

与分类不同的是,语义分割需要判断图像每个像素点的类别,进行精确分割。图像语义分割是像素级别的!但是由于CNN在进行convolution和pooling过程中丢失了图像细节,即feature map size逐渐变小,所以不能很好地指出物体的具体轮廓、指出每个像素具体属于哪个物体,无法做到精确的分割。

针对这个问题,Jonathan Long等人提出了Fully
Convolutional Networks(FCN)用于图像语义分割。自从提出后,FCN已经成为语义分割的基本框架,后续算法其实都是在这个框架中改进而来。

一. FCN

Fully Convolutional Networks for Semantic Segmentation

论文链接:https://arxiv.org/abs/1411.4038

摘要

卷积网络是一种强大的视觉模型,可以产生特征的层次结构。结果表明,经过训练的端到端、像素到像素的卷积网络在语义分割方面超过了目前的水平。的关键见解是建立“完全卷积”网络,它接受任意大小的输入,并通过有效的推理和学习产生相应大小的输出。定义并详细描述了全卷积网络的空间,解释了它们在空间密集预测任务中的应用,并绘制了与先前模型的连接。将当代的分类网络(AlexNet、VGG网和GoogLeNet)转化为完全卷积的网络,并通过对分割任务的微调来传递它们所学习的表示。然后,定义了一个新的架构,它将来自深层、粗糙层的语义信息与来自浅层、精细层的外观信息结合起来,以产生准确和详细的分段。的全卷积网络实现了PASCAL VOC(2012年平均IU为62.2%,相对提高20%)NYUDv2和SIFT流的最新分割,而对于典型图像,推理需要三分之一秒。

FCN改变了什么?

对于一般的分类CNN网络,如VGG和Resnet,都会在网络的最后加入一些全连接层,经过softmax后就可以获得类别概率信息。但是这个概率信息是1维的,即只能标识整个图片的类别,不能标识每个像素点的类别,所以这种全连接方法不适用于图像分割。

图3 全连接层

而FCN提出可以把后面几个全连接都换成卷积,这样就可以获得一张2维的feature map,后接softmax获得每个像素点的分类信息,从而解决了分割问题,如图4。

图4

2 FCN结构

整个FCN网络基本原理如图5(只是原理示意图):

  1. image经过多个conv和+一个max pooling变为pool1 feature,宽高变为1/2

  2. pool1 feature再经过多个conv+一个max
    pooling变为pool2 feature,宽高变为1/4

  3. pool2 feature再经过多个conv+一个max
    pooling变为pool3 feature,宽高变为1/8

  1. 直到pool5 feature,宽高变为1/32。

图5 FCN网络结构示意图

那么:

  1. 对于FCN-32s,直接对pool5 feature进行32倍上采样获得32x upsampled feature,再对32x upsampled
    feature每个点做softmax prediction获得32x
    upsampled feature prediction(即分割图)。

  2. 对于FCN-16s,首先对pool5 feature进行2倍上采样获得2x upsampled feature,再把pool4 feature和2x upsampled feature逐点相加,然后对相加的feature进行16倍上采样,并softmax prediction,获得16x upsampled feature prediction。

  3. 对于FCN-8s,首先进行pool4+2x upsampled feature逐点相加,然后又进行pool3+2x
    upsampled逐点相加,即进行更多次特征融合。具体过程与16s类似,不再赘述。

作者在原文种给出3种网络结果对比,明显可以看出效果:FCN-32s < FCN-16s < FCN-8s,即使用多层feature融合有利于提高分割准确性。

图6

二.U-Net

U-Net: Convolutional Networks for Biomedical Image Segmentation

论文链接:https://arxiv.org/abs/1505.04597

人们普遍认为,成功的深层网络训练需要数千个带注释的训练样本。本文提出了一种网络和训练策略,该策略依赖于数据增强的强大使用,以更有效地使用可用的注释样本。该体系结构由捕获上下文的收缩路径和支持精确定位的对称扩展路径组成。这种网络可以从很少的图像中端到端地训练,并且在电子显微镜堆栈中神经元结构分割的ISBI挑战上优于先前的最佳方法(滑动窗口卷积网络)。使用同样的传输光学显微镜图像(相位对比度和DIC)训练网络,在2015年的ISBI细胞跟踪挑战赛中以较大的优势赢得了这些类别的比赛。而且,网络速度很快。在最近的GPU上,512x512图像的分割不到一秒钟。

图像语义分割(Semantic Segmentation)是图像处理和是机器视觉技术中关于图像理解的重要一环,也是 AI 领域中一个重要的分支。语义分割即是对图像中每一个像素点进行分类,确定每个点的类别(如属于背景、人或车等),从而进行区域划分。目前,语义分割已经被广泛应用于自动驾驶、无人机落点判定等场景中。

U-Net是原作者参加ISBI Challenge提出的一种分割网络,能够适应很小的训练集(大约30张图)。U-Net与FCN都是很小的分割网络,既没有使用空洞卷积,也没有后接CRF,结构简单。

整个U-Net网络结构如图,类似于一个大大的U字母:首先进行Conv+Pooling下采样;然后Deconv反卷积进行上采样,crop之前的低层feature map,进行融合;然后再次上采样。重复这个过程,直到获得输出388x388x2的feature map,最后经过softmax获得output segment map。总体来说与FCN思路非常类似。

为何要提起U-Net?是因为U-Net采用了与FCN完全不同的特征融合方式:拼接!



语义分割网络在特征融合时也有2种办法:

FCN式的逐点相加,对应caffe的EltwiseLayer层,对应tensorflow的tf.add()

U-Net式的channel维度拼接融合,对应caffe的ConcatLayer层,对应tensorflow的tf.concat()

相比其他大型网络,FCN/U-Net还是蛮简单的,就不多废话了。

总结一下,CNN图像语义分割也就基本上是这个套路:

下采样+上采样:Convlution+ Deconvlution/Resize

多尺度特征融合:特征逐点相加/特征channel维度拼接

获得像素级别的segement map:对每一个像素点进行判断类别看,即使是更复杂的DeepLabv3+依然也是这个基本套路。

FCN与U-Net语义分割算法相关推荐

  1. 道路场景语义分割算法

    道路场景语义分割算法 输入输出接口 Input: (1)左右两个摄像头采集的实时图像视频分辨率(整型int) (2)左右两个摄像头采集的实时图像视频格式 (RGB,YUV,MP4等) (3)摄像头标定 ...

  2. DL之SegNet:SegNet图像分割/语义分割算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略

    DL之SegNet:SegNet图像分割/语义分割算法的简介(论文介绍).架构详解.案例应用等配图集合之详细攻略 导读 基于CNN的神经网络SegNet算法可进行高精度地识别行驶环境. 目录 SegN ...

  3. 实时语义分割算法大盘点

    本文转载自计算机视觉工坊 语义分割论文 语义图像分割是计算机视觉中发展最快的领域之一,有着广泛的应用.在许多领域,如机器人和自动驾驶汽车,语义图像分割是至关重要的,因为它提供了必要的上下文,以采取行动 ...

  4. 语义分割算法性能比较_语义分割江湖那些事儿

    今天的分享者是旷视余昌黔,来自旷视研究院 Detection 组,他将向我们分享旷视研究院 Detection 组近两年持续在做的 Semantic Segmentation 相关工作,代表性成果主要 ...

  5. 汇总|实时性语义分割算法(全)

    我们在上篇--汇总|实时性语义分割算法(上篇)中,已经总结了[1]~[12],这里我们继续. [13]用于实时语义分割的双向分割网络 <BiSeNet: Bilateral Segmentati ...

  6. CV之IS:计算机视觉之图像分割(Image Segmentation)/语义分割算法的简介、使用方法、案例应用之详细攻略

    CV之IS:计算机视觉之图像分割(Image Segmentation)/语义分割算法的简介.使用方法.案例应用之详细攻略 目录 图像分割算法的简介 1.常用的数据集 2.图像分割的评价指标

  7. 新开源!实时语义分割算法Light-Weight RefineNet

    点击我爱计算机视觉标星,更快获取CVML新技术 前几日52CV君分享了论文<Real-Time Joint Semantic Segmentation and Depth Estimation ...

  8. 语义分割算法总结(一)

    注: 在本文中经常会提到输出数据的维度,为了防止读者产生错误的理解,在本文的开头做一下说明. 如上图,原始图像大小为5*5,经过一次卷积后,图像变为3*3.那就是5*5的输入,经过一个卷积层后,输出的 ...

  9. 基于迁移学习的语义分割算法分享与代码复现

    摘要:语义分割的数据集是比较大的,因此训练的时候需要非常强大的硬件支持. 本文分享自华为云社区<[云驻共创]基于迁移学习的语义分割算法分享>,原文作者:启明. 此篇文章是分享两篇基于迁移学 ...

最新文章

  1. 有三AI高质量内容推荐(广告)须知
  2. centos6 利用外部的smpt服务器计划任务发送邮件
  3. Mybatis CRUD注解Annotation的使用
  4. python打包的exe开机自动启动(windows)
  5. linux捕获其他进程信号,linux进程如何捕获信号
  6. InfluxDB学习之InfluxDB数据保留策略(Retention Policies)
  7. 如何简单区分web前后端与MVC框架
  8. 公司安排员工扫地,引发员工不满,程序员:保洁阿姨都请不起?
  9. 【雷达通信】基于matlab粒子群算法优化综合微带天线阵列方向图【含Matlab源码 1967期】
  10. Mac 自带 输入法 无法打出 一些汉字 生僻字 的问题,解决办法。
  11. linux重装系统驱动,linux系统下安装驱动方法
  12. Win11玩红警2突然就卡住不动?
  13. 学一点django基础
  14. 什么是数据库“存算分离”架构?
  15. AD9361 介绍 (下)
  16. 【Linux】软件包管理器yum和编辑器vim(内附动图)
  17. 切换Git(Gitee)账号
  18. UVA 1589 象棋
  19. 网易易盾滑块逆向分析 js 滑动轨迹生成_1
  20. 攻防世界 web高手进阶区 9分题 bilibili

热门文章

  1. Docker入门六部曲——Stack
  2. 2022-2028年中国在线旅行预订市场投资分析及前景预测报告
  3. 2022-2028年中国硅质原料行业全景调研及投资前景展望报告
  4. do还是doing imagine加to_中学必背英语短语集合:54个doing动名词的固定搭配
  5. 【Sql Server】Database-存储过程
  6. Python 属性__getattribute__
  7. tf.cast()数据类型转换
  8. MySql数据库Update批量更新与批量更新多条记录的不同值实现方法
  9. centos7 下搭建git服务器
  10. Redeclared ‘list_b‘ defined above without usage