比较语义分割的几种结构:FCN,UNET,SegNet,PSPNet和Deeplab
简介
语义分割:给图像的每个像素点标注类别。通常认为这个类别与邻近像素类别有关,同时也和这个像素点归属的整体类别有关。利用图像分类的网络结构,可以利用不同层次的特征向量来满足判定需求。现有算法的主要区别是如何提高这些向量的分辨率,以及如何组合这些向量。
几种结构
- 全卷积网络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) |
---|---|---|---|---|
5 | 8 | 82 | 90 | 1.1 |
4 | 8 | 86 | 93 | 1.0 |
3 | 6 | 80 | 90 | 1.0 |
1*1卷积+上采样(2倍)+标签收缩
网络层 | 单epoch时间(s) | mIOU(%) | pixel-acc(%) | GPU(G) |
---|---|---|---|---|
5->4 | 8 | 72 | 85 | 1.1 |
4->3 | 6 | 80 | 90 | 1.0 |
3->2 | 5 | 78 | 88 | 1.0 |
1*1卷积+转置卷积(2倍)+标签收缩
网络层 | 单epoch时间(s) | mIOU(%) | pixel-acc(%) | GPU(G) |
---|---|---|---|---|
5->4 | 8 | 79 | 89 | 1.1 |
4->3 | 6 | 84 | 92 | 1.0 |
3->2 | 5 | 80 | 90 | 1.0 |
反池化(2倍)+1*1卷积+标签收缩
网络层 | 单epoch时间(s) | mIOU(%) | pixel-acc(%) | GPU(G) |
---|---|---|---|---|
5->4 | 8 | 84 | 92 | 1.1 |
4->3 | 7 | 87 | 94 | 1.1 |
3->2 | 5 | 84 | 91 | 1.0 |
池化(stride=1)+2*2卷积(stride=1,padding=1)+标签收缩
网络层 | 单epoch时间(s) | mIOU(%) | pixel-acc(%) | GPU(G) |
---|---|---|---|---|
5->4 | 8 | 84 | 92 | 1.1 |
4->3 | 7 | 89 | 95 | 1.0 |
3->2 | 7 | 80 | 90 | 1.1 |
多层特征向量组合
- 理论上,求和是拼接+1*1卷积的一个特例。
上采样(逐层,直到原始尺寸)+1*1卷积+求和(FCN)
网络层 | 单epoch时间(s) | mIOU(%) | pixel-acc(%) | GPU(G) |
---|---|---|---|---|
5 | 8 | 82 | 91 | 1.2 |
5+4 | 8 | 88 | 94 | 1.2 |
5+4+3 | 9 | 88 | 94 | 1.2 |
上采样(逐层,直到原始尺寸)+1*1卷积+拼接(UNET')
网络层 | 单epoch时间(s) | mIOU(%) | pixel-acc(%) | GPU(G) |
---|---|---|---|---|
5 | 8 | 82 | 91 | 1.2 |
5+4 | 9 | 87 | 93 | 1.2 |
5+4+3 | 9 | 89 | 94 | 1.1 |
上采样(直接达到原始尺寸)+1*1卷积+拼接(PSPNET')
网络层 | 单epoch时间(s) | mIOU(%) | pixel-acc(%) | GPU(G) |
---|---|---|---|---|
5 | 8 | 84 | 92 | 1.2 |
5+4 | 9 | 87 | 93 | 1.2 |
5+4+3 | 8 | 88 | 94 | 1.2 |
反池化(逐层)+1*1卷积+上采样(SegNet')
网络层 | 单epoch时间(s) | mIOU(%) | pixel-acc(%) | GPU(G) |
---|---|---|---|---|
5 | 8 | 82 | 91 | 1.1 |
5->4 | 8 | 88 | 94 | 1.1 |
5->4->3 | 9 | 89 | 95 | 1.1 |
附加实验
epochs=100,lr=3e-3
网络 | 单epoch时间(s) | mIOU(%) | pixel-acc(%) | GPU(G) |
---|---|---|---|---|
PSPNET(反池化) | 8 | 91 | 96 | 1.1 |
PSPNET(池化,stride=1) | 9 | 91 | 96 | 1.2 |
引用
- https://github.com/bat67/pytorch-FCN-easiest-demo
- https://github.com/pochih/FCN-pytorch
- https://github.com/bodokaiser/piwise
- 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的更多相关文章
- 【Keras】基于SegNet和U-Net的遥感图像语义分割
上两个月参加了个比赛,做的是对遥感高清图像做语义分割,美其名曰"天空之眼".这两周数据挖掘课期末project我们组选的课题也是遥感图像的语义分割,所以刚好又把前段时间做的成果重新 ...
- 使用Keras基于RCNN类模型的卫星/遥感地图图像语义分割
遥感数据集 1. UC Merced Land-Use Data Set 图像像素大小为256*256,总包含21类场景图像,每一类有100张,共2100张. http://weegee.vision ...
- 笔记︱图像语义分割(FCN、CRF、MRF)、论文延伸(Pixel Objectness、)
图像语义分割的意思就是机器自动分割并识别出图像中的内容,我的理解是抠图- 之前在Faster R-CNN中借用了RPN(region proposal network)选择候选框,但是仅仅是候选框,那 ...
- 语义分割(semantic segmentation) 常用神经网络介绍对比-FCN SegNet U-net DeconvNet,语义分割,简单来说就是给定一张图片,对图片中的每一个像素点进行分类;目标检测只有两类,目标和非目标,就是在一张图片中找到并用box标注出所有的目标.
from:https://blog.csdn.net/u012931582/article/details/70314859 2017年04月21日 14:54:10 阅读数:4369 前言 在这里, ...
- 基于FCN的图像语义分割
语义图像分割的目标在于标记图片中每一个像素,并将每一个像素与其表示的类别对应起来.因为会预测图像中的每一个像素,所以一般将这样的任务称为密集预测.(相对地,实例分割模型是另一种不同的模型,该模型可以区 ...
- 语义分割--全卷积网络FCN详解
语义分割--全卷积网络FCN详解 1.FCN概述 CNN做图像分类甚至做目标检测的效果已经被证明并广泛应用,图像语义分割本质上也可以认为是稠密的目标识别(需要预测每个像素点的类别). 传统的基于C ...
- FCN与U-Net语义分割算法
FCN与U-Net语义分割算法 图像语义分割(Semantic Segmentation)是图像处理和是机器视觉技术中关于图像理解的重要一环,也是 AI 领域中一个重要的分支.语义分割即是对图像中每一 ...
- 全卷积网络(FCN)实战:使用FCN实现语义分割
摘要:FCN对图像进行像素级的分类,从而解决了语义级别的图像分割问题. 本文分享自华为云社区<全卷积网络(FCN)实战:使用FCN实现语义分割>,作者: AI浩. FCN对图像进行像素级的 ...
- 人工智能必须要知道的语义分割模型:DeepLabv3+
图像分割是计算机视觉中除了分类和检测外的另一项基本任务,它意味着要将图片根据内容分割成不同的块.相比图像分类和检测,分割是一项更精细的工作,因为需要对每个像素点分类,如下图的街景分割,由于对每个像素点 ...
随机推荐
- pm2踩过的坑
pm2实现一键部署,能将github上的代码拉到服务器,但是死活就是起不了服务. pm2部署命令: pm2 deploy ecosystem.json production setup pm2 dep ...
- 897. Increasing Order Search Tree
题目来源: https://leetcode.com/problems/increasing-order-search-tree/ 自我感觉难度/真实难度:medium/easy 题意: 分析: 自己 ...
- python3 unittest框架失败重跑加截图支持python2,python3
github源码地址下载:https://github.com/GoverSky/HTMLTestRunner_cn.git 解压文件后取出/HTMLTestRunner_cn.py文件丢进C:\Py ...
- Jmeter之断言
Jmeter中的断言类似于LR中的检查点,是在请求的返回层面上加的一个判断机制.因为请求成功了,不代表结果就一定是对的,还要看返回(LR中亦如此,脚本回放没报错,不代表你的业务成功了,需要自己去相应的 ...
- ZOJ 3981 && 2017CCPC秦皇岛 A:Balloon Robot(思维题)
A - Balloon Robot Time Limit:1000MS Memory Limit:65536KB 64bit IO Format:%lld & %llu Sub ...
- fio是如何运行的?
本文主要介绍fio是如何运行的,并且以单线程.单job为例 fio的入口在fio.c中的main函数,下面列出了main函数,此处只出示了一些调用的关键函数 int main(int argc, ch ...
- #leetcode刷题之路43-字符串相乘
给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式. 示例 1:输入: num1 = "2", num2 ...
- mysql远程连接权限设置
今儿有位同事提出,一套MySQL 5.6的环境,从数据库服务器本地登录,一切正常,可是若从远程服务器访问,就会报错, ERROR 1045 (28000): Access denied for use ...
- 基于Verilog的奇数偶数小数分频器设计
今天呢,由泡泡鱼工作室发布的微信公共号“硬件为王”(微信号:king_hardware)正式上线啦,关注有惊喜哦.在这个普天同庆的美好日子里,小编脑洞大开,决定写一首诗赞美一下我们背后伟大的团队,虽然 ...
- 【转载】COM 组件设计与应用(三)——数据类型
原文:http://vckbase.com/index.php/wv/1206.html COM 组件设计与应用 系列文章:http://vckbase.com/index.php/piwz?& ...