一、简介

  语义分割(Semantic Segmentation)是图像处理和机器视觉一个重要分支。与分类任务不同,语义分割需要判断图像每个像素点的类别,进行精确分割。语义分割目前在自动驾驶、自动抠图等领域有着比较广泛的应用。




UNet语义分割 unet语义分割原理_深度学习


分割网络现状:
  在ResNet以后使用深度学习进行分类任务的性能已经超过了人类,但是目标检测任务和分割任务的准确度却一直较低,其中分割任务的准确度是最低的。因为分割任务需要对每个像素点进行精确的分类,其难度最大。针对语义分割的需求,最早由Jonathan Long等人提出的Fully Convolutional Networks(FCN)成为了语义分割领域的基本框架之一,后续很多框架都多少参考了FCN的思想。但是FCN的准确度较低,不如U-net用的广泛。
  目前已经有不少其他好用的分割网络:

二、U-net典型应用

  我第一次使用Unet是在Kaggle挑战赛上,它是Kaggle的常客。因为它简单,高效,易懂,容易定制,可以从相对较小的训练集中学习。Unet的第一次提出是在2015年(论文),经过发展,目前有多个变形和应用。

  1. Kaggle-Airbus Ship Detection Challenge:
    在卫星图像中找到船,在公开的kernal中最受欢迎的是Unet,达到了84.7的精度。
  2. Kaggle-卫星图像分割与识别:
    需要在卫星图像中分割出:房屋、道路、铁路、树木、农作物、河流、积水区、大型车辆、小轿车。在Unet基础上微调,针对不同的分割对象,微调的地方不同,会产生不同的分割模型,最后融合
  3. Supervise.ly公司:
    在用Faster-RCNN(基于resnet)定位+Unet-like架构的分割,来做他们数据众包图像分割方向的主动学习,当时没有使用mask-rcnn,因为靠近物体边缘的分割质量很低(
  4. 广东政务数据创新大赛—智能算法赛 :
    国土监察业务中须监管地上建筑物的建、拆、改、扩,高分辨率图像和智能算法以自动化完成工作。并且:八通道U-Net:直接输出房屋变化,可应对高层建筑倾斜问题;数据增强:增加模型泛化性,简单有效;加权损失函数:增强对新增建筑的检测能力;模型融合:取长补短,结果更全。
  5. Kaggle车辆边界识别——TernausNet 由VGG初始化权重 + U-Net网络,Kaggle Carvana Image
    Masking Challenge
    第一名,使用的预训练权重改进U-Net,提升图像分割的效果。

三、 U-net详解



UNet语义分割 unet语义分割原理_UNet语义分割_02

  U-net的源码很容易从上面应用的连接中找到。

  U-net网络非常简单,前半部分作用是特征提取,后半部分是上采样。在一些文献中也把这样的结构叫做编码器-解码器结构。由于此网络整体结构类似于大写的英文字母U,故得名U-net。

U-net采用了完全不同的特征融合方式:拼接,U-net采用将特征在channel维度拼接在一起,形成更厚的特征。而FCN融合时使用的对应点相加,并不形成更厚的特征。

所以语义分割网络在特征融合时有两种办法:
1. FCN式的对应点相加,对应于TensorFlow中的tf.add()函数;
2. U-net式的channel维度拼接融合,对应于TensorFlow的tf.concat()函数,比较占显存。

除了上述新颖的特征融合方式,U-net还有以下几个优点:

  1. 5个pooling layer实现了网络对图像特征的多尺度特征识别。
  2. 上采样部分会融合特征提取部分的输出,这样做实际上是将多尺度特征融合在了一起,以最后一个上采样为例,它的特征既来自第一个卷积block的输出(同尺度特征),也来自上采样的输出(大尺度特征),这样的连接是贯穿整个网络的,你可以看到上图的网络中有四次融合过程,相对应的FCN网络只在最后一层进行融合。

参考文献:
4、https://zhuanlan.zhihu.com/p/26377387 5、http://www.sohu.com/a/169159196_465975