比较语义分割的几种结构:FCN,UNET,SegNet,PSPNet和Deeplab

摘要:
几种结构全卷积网络FCN:上采样提高分割精度,不同特征向量相加。[3]UNET:拼接特征向量;编码-解码结构;采用弹性形变的方式,进行数据增广;用边界加权的损失函数分离接触的细胞。[4]SegNet:记录池化的位置,反池化时恢复。[3]PSPNet:多尺度池化特征向量,上采样后拼接[3]Deeplab:池化跨度为1,然后接带孔卷积。实验设计测试平台采用[1]的代码,去掉one_hot,把损失函数改成交叉熵。

简介

语义分割:给图像的每个像素点标注类别。通常认为这个类别与邻近像素类别有关,同时也和这个像素点归属的整体类别有关。利用图像分类的网络结构,可以利用不同层次的特征向量来满足判定需求。现有算法的主要区别是如何提高这些向量的分辨率,以及如何组合这些向量。

几种结构

  • 全卷积网络FCN:上采样提高分割精度,不同特征向量相加。[3]
  • UNET:拼接特征向量;编码-解码结构;采用弹性形变的方式,进行数据增广;用边界加权的损失函数分离接触的细胞。[4]
  • SegNet:记录池化的位置,反池化时恢复。[3]
  • PSPNet:多尺度池化特征向量,上采样后拼接[3]
  • Deeplab:池化跨度为1,然后接带孔卷积。
  • ICNet:多分辨图像输入,综合不同网络生成结果。

实验设计

测试平台

  • 采用[1]的代码,去掉one_hot,把损失函数改成交叉熵。
  • 在验证过程引入pixel accuray和mIOU,代码见[2]
  • 用颜色代码替换标签的类别代码,这样visdom可以显示多类别标签

数据集

  • [1]自带数据集Bag,二分类,图像800800,代码中转换到160160。
    • 这个数据集很容易收敛,可以忽略优化器的影响,用来估计网络结构的性能上限。
  • CamVid,代码见[2],从视频中截取的,图像很相似。图像尺寸960*720。
  • PASCAL VOC 2007/2012,代码参照[3],图像差别大。

测试计划

  • 在github上收集能成功运行的模型
  • 在同等条件下比较技术细节:vgg16为基础结构
    • 比较单层特征向量进行转置卷积、上采样或者反池化后的效果
    • 比较特征向量的拼接和线性组合
    • 比较多尺度输入的网络组合

实验结果

超参数:epochs=50,lr=0.001,optim=SGD,momentum=0.7u
数据集:Bag,resize(160,160),batch_size=4
注意vgg16正确的层号,每层最后一个是池化。

feats = list(models.vgg16(pretrained=True).features.children())
self.feat1 = nn.Sequential(*feats[0:5])
self.feat2 = nn.Sequential(*feats[5:10])
self.feat3 = nn.Sequential(*feats[10:17])
self.feat4 = nn.Sequential(*feats[17:24])
self.feat5 = nn.Sequential(*feats[24:31])

单层特征向量

1*1卷积+标签收缩(到对应层尺寸)

网络层单epoch时间(s)mIOU(%)pixel-acc(%)GPU(G)
5882901.1
4886931.0
3680901.0

1*1卷积+上采样(2倍)+标签收缩

网络层单epoch时间(s)mIOU(%)pixel-acc(%)GPU(G)
5->4872851.1
4->3680901.0
3->2578881.0

1*1卷积+转置卷积(2倍)+标签收缩

网络层单epoch时间(s)mIOU(%)pixel-acc(%)GPU(G)
5->4879891.1
4->3684921.0
3->2580901.0

反池化(2倍)+1*1卷积+标签收缩

网络层单epoch时间(s)mIOU(%)pixel-acc(%)GPU(G)
5->4884921.1
4->3787941.1
3->2584911.0

池化(stride=1)+2*2卷积(stride=1,padding=1)+标签收缩

网络层单epoch时间(s)mIOU(%)pixel-acc(%)GPU(G)
5->4884921.1
4->3789951.0
3->2780901.1

多层特征向量组合

  • 理论上,求和是拼接+1*1卷积的一个特例。

上采样(逐层,直到原始尺寸)+1*1卷积+求和(FCN)

网络层单epoch时间(s)mIOU(%)pixel-acc(%)GPU(G)
5882911.2
5+4888941.2
5+4+3988941.2

上采样(逐层,直到原始尺寸)+1*1卷积+拼接(UNET')

网络层单epoch时间(s)mIOU(%)pixel-acc(%)GPU(G)
5882911.2
5+4987931.2
5+4+3989941.1

上采样(直接达到原始尺寸)+1*1卷积+拼接(PSPNET')

网络层单epoch时间(s)mIOU(%)pixel-acc(%)GPU(G)
5884921.2
5+4987931.2
5+4+3888941.2

反池化(逐层)+1*1卷积+上采样(SegNet')

网络层单epoch时间(s)mIOU(%)pixel-acc(%)GPU(G)
5882911.1
5->4888941.1
5->4->3989951.1

附加实验

epochs=100,lr=3e-3

网络单epoch时间(s)mIOU(%)pixel-acc(%)GPU(G)
PSPNET(反池化)891961.1
PSPNET(池化,stride=1)991961.2

引用

  1. https://github.com/bat67/pytorch-FCN-easiest-demo
  2. https://github.com/pochih/FCN-pytorch
  3. https://github.com/bodokaiser/piwise
  4. https://github.com/jaxony/unet-pytorch/

参考文献

  • Long J , Shelhamer E , Darrell T . Fully Convolutional Networks for Semantic Segmentation[J]. IEEE Transactions on Pattern Analysis & Machine Intelligence, 2014, 39(4):640-651.
  • Ronneberger O, Fischer P, Brox T. U-Net: Convolutional Networks for Biomedical Image Segmentation[C]// International Conference on Medical Image Computing & Computer-assisted Intervention. 2015.
  • Zhao H , Shi J , Qi X , et al. Pyramid Scene Parsing Network[J]. 2016.
  • Chen L C , Papandreou G , Schroff F , et al. Rethinking Atrous Convolution for Semantic Image Segmentation[J]. 2017.
  • Zhao H, Qi X, Shen X, et al. ICNet for Real-Time Semantic Segmentation on High-Resolution Images[J]. 2017.

免责声明:文章转载自《比较语义分割的几种结构:FCN,UNET,SegNet,PSPNet和Deeplab》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇shell脚本操作C#中图片.BYTE[]和base64string的转换下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Python 网络通信协议(互联网协议)

一. 操作系统基础 操作系统(Operatin System,简称OS)是管理和控制计算机硬件与软件资源的计算机程序,是直接运行在"裸机"上的最基本的系统软件,任何其他软件都必须在操作系统的支持下才能运行. 计算机组成: 硬件-->操作系统(OS)-->应用软件 二. 网络通信原理(参考文档) 2.1 互联网的本质就是一系列网络协议(1)概述当...

Text-CNN 文本分类

1.简介 TextCNN 是利用卷积神经网络对文本进行分类的算法,由 Yoon Kim 在 “Convolutional Neural Networks for Sentence Classification” 一文 (见参考[1]) 中提出. 是2014年的算法. 图1-1 参考[1] 中的论文配图 图1-2 网络盗图 合理性: 深度学习模型在计算机视觉...

Faster R-CNN论文详解

废话不多说,上车吧,少年 paper链接:Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks &创新点 设计Region Proposal Networks【RPN】,利用CNN卷积操作后的特征图生成region proposals,代替了...

图像处理之卷积---任意卷积核的快速实现

卷积其实是图像处理中最基本的操作,我们常见的一些算法比如:均值模糊、高斯模糊、锐化、Sobel、拉普拉斯、prewitt边缘检测等等一些和领域相关的算法,都可以通过卷积算法实现。只不过由于这些算法的卷积矩阵的特殊性,一般不会直接实现它,而是通过一些优化的手段让计算量变小。但是有些情况下卷积矩阵的元素值无甚规律或者有特殊要求,无法通过常规手段优化,这个时候只...

特征分解 奇异值分解

特征分解:将矩阵分 解成一组特征向量和特征值。 方阵 A 的 特征向量(eigenvector)是指与 A 相乘后相当于对该向量进行缩放 的非零向量 v 标量 λ 被称为这个特征向量对应的 特征值(eigenvalue)。(类似地,我们也可以 定义 左特征向量(left eigenvector)v⊤A = λv⊤,但...

手把手教你搭建卷积神经网络(CNN)

本文是基于吴恩达老师的《深度学习》第四课第一周习题所做,如果本文在某些知识点上描述得不够透彻的可以参见相关章节的具体讲解,同时极力推荐各位有志从事计算机视觉的朋友观看一下吴恩达老师的《深度学习》课程。1.卷积神经网络构成总的来说,卷积神经网络与神经网络的区别是增加了若干个卷积层,而卷积层又可细分为卷积(CONV)和池化(POOL)两部分操作(这两个重要概念...