PSPNet | 语义分割及场景分析

2023-05-16

点击上方“小白学视觉”,选择加"星标"或“置顶

重磅干货,第一时间送达

本次, 由香港中文大学(CUHK)和商汤科技(SenseTime)提出的金字塔场景解析网络(Pyramid Scene Parsing Network, PSPNet)已经过审阅。

  • 语义分割的目标仅仅是获知已知对象的每个像素的类别标签。

  • 场景解析是基于语义分割的,它的目标是获知图像内所有像素的类别标签。

bbd01ba1e27eb6b7790327eb2ecf0777.jpeg

场景解析

通过使用金字塔池化模块(Pyramid Pooling Module),在整合基于不同区域的上下文后,PSPNet在效果上超过了FCN、DeepLab和DilatedNet等时下最佳的方法。PSPNet最终:

  • 获得2016年ImageNet场景解析挑战的冠军

  • 在PASCAL VOC 2012和Cityscapes数据集上取得当时的最佳效果

工作已发表于2017年CVPR,被引量超过600次。(SH Tsang @ Medium )

  本文提纲

1. 对全局信息的需要

2.金字塔池化模块

3. 一些细节

4. 模型简化研究

5. 与时下最佳方法的比较

  1. 对全局信息的需要

6cd3fc2fd6b506e85d44531cbece4ecc.jpeg

(c) 原有的未经上下文整合的FCN,(d) 经上下文整合的PSPNet

  • 关系错误匹配:FCN基于外观将黄色框内的船预测为“汽车”。但根据常识,汽车很少会出现在河面上。

  • 类别混淆:FCN将框内的对象一部分预测为“摩天楼”,一部分预测为“建筑物”。这些结果应当被排除,这样对象整体就会被分在“摩天楼”或“建筑物”其中一类中,而不会分属于两类。

  • 细小对象的类别:枕头与床单的外观相似。忽略全局场景类别可能对导致解析“枕头”一类失败。

因此,我们需要图像的一些全局特征。 

  2.金字塔池化模块

d7a6de35bf85d0ccb1ac91ec55a7a1ae.jpeg

特征提取后的金字塔池模块(颜色在本图中很重要!)

(ab

(a)为我们的一个输入图像。(b)采用扩展网络策略(DeepLab / DilatedNet)提取特征。在DeepLab后面加上扩张卷积。特征map的大小是这里输入图像的1/8。 

(C).1

在(c)处,对每个特征map执行子区域平均池化。

  • 红色:这是在每个特征map上执行全局平均池的最粗略层次,用于生成单个bin输出。 

  • 橙色:这是第二层,将特征map划分为2×2个子区域,然后对每个子区域进行平均池化。 

  • 蓝色:这是第三层,将特征 map划分为3×3个子区域,然后对每个子区域进行平均池化。 

  • 绿色:这是将特征map划分为6×6个子区域的最细层次,然后对每个子区域执行池化。 

(c).2. 1×1 卷积用于降维

然后对每个得到的特征map进行1×1卷积,如果金字塔的层次大小为N,则将上下文表示减少到原始的1/N(黑色)。

在本例中,N=4,因为总共有4个级别(红色、橙色、蓝色和绿色)。

如果输入特征map的数量为2048,则输出特征map为(1/4)×2048 = 512,即输出特征map的数量为512。  

(c).3. 双线性插值用于上采样

采用双线性插值对每个低维特征map进行上采样,使其具有与原始特征map相同的大小(黑色)。

(c).4. 连接上下文聚合特征

所有不同级别的上采样特征map都与原始特征map(黑色)连接在一起。这些特征映射融合为全局先验。这就是金字塔池模块(c)的终止。

(d)

最后,通过卷积层生成最终预测的分割图(d)。 

子区域平均池的概念实际上与SPPNet中的空间金字塔池化非常相似。先采用1×1卷积然后串联,与Xception或MobileNetV1使用的深度可分离卷积中的深度卷积非常相似,除了只是使用双线性插值使所有特征map的大小相等。

  3.一些训练细节

e31d6e3a2b12e416714b3167a992cd80.png

中间的辅助损失项

· 辅助损失项用于训练过程中。辅助损失项有0.4的权重,以用来平衡最终损失和辅助损失。在测试时,则会放弃辅助损失。这是一种针对深度网络训练的深度监督训练策略。这个想法类似于GoogLeNet / Inception-v1中的辅助分类器(https://medium.com/coinmonks/paper-review-of-googlenet-inception-v1-winner-of-ilsvlc-2014-image-classification-c2b3565a64e7)。  

· “多元”学习代替了“单元”学习。  

  4. 模型简化测试

ADE2K 数据集是ImageNet场景解析挑战赛2016中的数据集。它是一个更具挑战性的数据集,包含多达150个类和1,038个图像级标签。有20K/2K/3K图像用于训练/验证/测试。

验证集用于模型简化测试。

4.1. 最大值池化vs 平均池化,以及降维(DR)  

651cdec2505cfd5632f765e51c00b192.png

不同算法在ADE2K验证集上的结果 

  • ResNet50-Baseline: 基于ResNet50的扩张FCN。 

  • ‘B1’和‘B1236’: bin大小分别为{1×1}和{1×1,2×2,3×3,6×6}的池化特征map。 

  • ‘MAX’和‘AVE’: 最大池操作和平均池操作 

  • ‘DR’: 降维.

平均池始终有更好的结果。使用降维比不使用降维要好。  

4.2 辅助损失

62592d729011ed8d6bfa271c176de9fc.png

辅助损失项的不同权重在ADE2K验证集上的结果

α= 0.4得到最好的性能。因此,使用权重α= 0.4。  

4.3. 不同网络层数和不同尺度(MS)的测试 

13e135b3fdd295e1dbda5aa3e30c0010.png

不同层数以及不同尺度的网络在ADE2K验证集上的结果  

如我们知道的一样,更深的模型有更好的结果。多尺度测试有助于提高测试结果。

4.4. 数据增强 (DA)以及与其他算法的对比

41d4c9a61521bc23dd4958f90cec0ac2.png

在ADE2K验证集上与最新的方法的比较结果(除最后一行外,所有方法都是单尺度的)。  

ResNet269+DA+AL+PSP: 对于单一尺度的测试,所有的技巧结合在一起的话,这种算法比最先进的方法有很大的优势。 

ResNet269+DA+AL+PSP+MS: 同时进行了多尺度测试,取得了较好的效果。 

下面是一些例子:  

123f9c2eba28093cc8f77bcf751ecefb.jpeg

ADE2K中的样例

  5. 与最先进方法的比较 

5.1. ADE2K - ImageNet场景解析挑战赛2016

cf584008790d6ff48fc370033ba3791c.png

ADE2K测试集结果

PSPNet赢得了2016年ImageNet场景解析挑战赛冠军。

5.2. PASCAL VOC 2012

在使用数据增强的情况下,有10582/1449/1456张图像用于训练/验证/测试。

f74df4f36030fdc19f226d74a7fdf541.jpeg

PASCAL VOC 2012测试集结果 

“+”表示模型经过MS COCO数据预训练。  

同样,PSPNet优于所有最先进的方法,如FCN、DeconvNet、DeepLab和Dilation8。  

下面是一些例子:

384da1df48f6ea2da47fa9a1468975e3.jpeg

PASCAL VOC 2012样例 

5.3. Cityscapes

这个数据集包含了来自50个不同季节的城市的5000张高质量的像素级精细注释图像。分别有2975/500/1525张图像用于训练/验证/测试。它定义了包含材料和物品的19个类别。此外,我们亦为两种设定提供了20000张粗略注释的图像作比较,即,只使用精细数据以及同时使用精细和粗略标注数据进行训练。两者的训练都用“++”标记。 

c61be3788b83f25186cf9ae9f46056cb.png

Cityscapes测试集结果

采用精细标注数据训练,或采用精细数据与粗略标注数据同时训练,PSPNet都取得了较好的效果。  

下面是一些例子:

f8f97a0dbb1ad3d62eb3b5ba85306215.jpeg

Cityscapes样例

794901ca21a9fecd453aa8ea3a499cc3.gif

作者还上传了Cityscapes数据集的视频,令人印象非常深刻:

另外两个视频例子:

https://www.youtube.com/watch?v=gdAVqJn_J2M

https://www.youtube.com/watch?v=HYghTzmbv6Q

采用金字塔池化模块,获得了图像的全局信息,提升了结果。


  

好消息!

小白学视觉知识星球

开始面向外开放啦👇👇👇


  

64379bb90410789488781f7a48d57374.jpeg

下载1:OpenCV-Contrib扩展模块中文版教程

在「小白学视觉」公众号后台回复:扩展模块中文教程,即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。


下载2:Python视觉实战项目52讲
在「小白学视觉」公众号后台回复:Python视觉实战项目,即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。


下载3:OpenCV实战项目20讲
在「小白学视觉」公众号后台回复:OpenCV实战项目20讲,即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。


交流群

欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PSPNet | 语义分割及场景分析 的相关文章

  • OpenCV实现击中击不中变换和形态学细化

    1 击中击不中变换 1 1 HMT概述 形态学Hit or Miss是形状检测基本工具 xff0c 只要结构元设置得当 xff0c 就可以检测一些基本的形状图案 xff0c HMT变换只能作用于二值图像 xff0c 结构元 xff08 核
  • OpenCV综合练习1——水瓶水位线合格检测

    数字图像处理综合练习 水瓶水位线合格检测 马上就要转到学习深度学习的主干线了 xff0c 这也是大势所趋 xff0c 但不能忘本 xff0c 传统图像处理的知识也是非常重要的 xff0c 特此记录一下之前学习时做过的小练习 整个项目的资源放
  • 目标检测学习1——iou计算与非极大值抑制NMS

    刚开始学习目标检测 xff0c 都是在学习一些经典的目标检测框架 xff0c 个人认为在大量阅读和理解别人现成的代码时 xff0c 也要懂得去动手模仿 xff0c 尝试着去修改别人的代码 xff0c 即使是自己抄一遍别人的代码 xff0c
  • OpenCV实现按指定间隔抽取视频中的图像帧

    习惯了C 43 43 语言的OpenCV突然用Python语言OpenCV还是感觉有点不适应 xff0c 但是慢慢在写的过程中 xff0c 觉得Python语言的风格也挺美的 但自己的写的还是很丑 xff0c 晚上回宿舍的剩余时间 xff0
  • 深度估计berHu损失函数和语义分割带权值交叉熵损失函数

    深度估计berHu损失函数和语义分割带权值交叉熵损失函数 最近在做联合深度估计和语义分割的深度学习算法 xff0c 深度估计默认使用的是L1 loss xff0c 语义分割使用的是普通的交叉熵损失函数 xff0c 继续改进模型对于指标的提升
  • 游览器是如何工作的

    游览器是如何工作的 浏览器的主要功能浏览器的主要构成一次网络请求浏览器发生了什么 xff1a 如果请求使用了HTTPS那么流程会有什么不同 xff1f 总结 浏览器的主要功能 浏览器的主要功能是将用户选择得web资源呈现出来 xff0c 它
  • OSG QT 完整附加依赖项(.lib)

    OSG QT 完整附加依赖项 lib 可在VS等需要添加附加依赖项的环境使用 注 xff1a OSG版本 xff1a 3 6 4 xff1b QT版本 xff1a 5 9 8 带d的为debug xff0c 不带d的release省掉了Qt
  • Ubuntu登陆账户后自动运行VNCserver

    问题 xff1a 远程桌面时 xff0c 如果重启远程Ubuntu xff0c 则VNC会话失效 解决 xff1a 一个解决的方法就是用putty将重启的Ubuntu登陆入账户后 xff0c 再开启VNC会话 为了方便 xff0c 可以设置
  • RAP与RARP原理

    ARP与RARP都属于网络层协议 xff0c 但是他们是为了解决链路层的帧转发问题 xff0c ARP的功能是将IP解析成MAC地址 xff0c 而RARP则相反 ARP 地址解析协议 xff08 Address Resolution Pr
  • eyeshot官方样例说明

    Eyeshot 12 例子 1 wings拖动按钮改变机翼的尺寸参数 xff0c 并导出到step文件 2 snaptogrid鼠标画平面 xff0c 类似于CATIA的多段线功能 3 sceneeditor控制灯光点和变换位置 xff0c
  • Python爬虫实现获取股票信息并保存到文件(亲测可运行)

    主要参考了北京理工大学嵩天老师的视频 xff0c 因老师所讲的网址已做更改 xff0c 将获取股票列表信息和股票价格的网站做了更改 xff0c 用到了beautiful soup库 xff0c re库 xff0c requests库 xff
  • 为什么要内存对齐?

    CPU访问非对齐的内存时为何需要多次读取再拼接 xff1f 首先简单说一下何为内存对齐 例如 xff0c 当cpu需要取4个连续的字节时 xff0c 若内存起始位置的地址可以被4整除 xff0c 那么我们称其对齐访问 反之 xff0c 则为
  • 读AQS源码-关于shouldParkAfterFailedAcquire函数的返回值

    先上源码 final boolean acquireQueued final Node node int arg boolean failed 61 true try boolean interrupted 61 false for fin
  • 读AQS源码-关于同步队列与锁的公平性

    先上部分源码 xff1a public final void acquire span class token punctuation span int arg span class token punctuation span span
  • FreeRTOS 正点原子教程学习笔记

    正点原子视频教程 FreeRTOS 教程非常详细 xff09 小知识 如果创建了任务却完全空着 xff0c 没有while xff08 1 xff09 延时 的话 xff0c 整个程序会卡住 xff0c 其他正常的任务无法运行 如果任务里单

随机推荐

  • 数据分析之Matplotlib(一)简介

    Matplotlib简介 Matplotlib是一个Python 2D绘图库 xff0c 可以生成各种硬拷贝格式和跨平台的交互式环境的出版物质量数据 Matplotlib可用于Python脚本 xff0c Python和IPython sh
  • 【2018-AAAI】Spatial As Deep: Spatial CNN for Traffic Scene Understanding

    概述 提出了SCNN语义分割网络 xff0c 将传统的深度逐层卷积推广到特征图中的逐片卷积 xff0c 在同一特征图的行和列上做信息传递 xff0c 可有效识别强先验结构的目标 此外论文还发布了一个大型的车道线检测数据集CULane Dat
  • 安装Code Blocks时出现can‘t find compiler的解决方法

    安装Code Blocks时出现can t find compiler的解决方法 1 首先我们要下载Code Blocks xff0c 我们可以去官方网站下载https www codeblocks org xff0c 或者直接点击该链接跳
  • OSPF网路拓扑结构(rfc2328)

    OSPF网路拓扑结构 xff08 rfc2328 xff09 OSPF rfc文档 xff08 rfc2328 xff09 中的拓扑结构对理解OSPF分区 区域内路由 区域边界路由 自治系统边界路由等基本概念很有帮助 并且整个文档打大部分内
  • Win10下使用WinSCP+PuTTY实现远程文件操作和终端访问

    Win10下使用WinSCP 43 PuTTY实现远程文件操作和终端访问 0 软件安装 安装WinSCP xff0c 参考官网安装PuTTY xff0c 从这个页面下载 1 WinSCP使用技巧 1 1 连接到远程主机 如下图所示 xff0
  • KVM创建的虚拟机创建快照、查看以及恢复

    KVM虚拟机要使用快照功能 xff0c 磁盘格式必须为qcw2如果不满足qcw2 xff0c 可以参考下面的链接进行修改 xff1a https www jianshu com p f6cc295a2108 创建快照方法 xff1a 创建快
  • KTT条件

    以下都是个人理解 xff0c 刚刚有点理解 xff0c 所以可能表达不清楚 但是又想把一些理解表达出来 xff0c 故写了这篇 上篇文章说了 xff0c 拉格朗日乘子法 xff0c 可以在等式约数的条件下 xff0c 求得某函数f的极大或极
  • github.com 拒绝了我们的连接请求。

    github com 拒绝了我们的连接请求 1 解决方法 1 解决方法 打开Dns检测 Dns查询 站长工具 在检测输入栏中输入GitHub官网 把检测列表里某个IP xff08 我选择最大的IP试了可以 xff09 输入到hosts里 x
  • Git操作详解以及在VScode中的使用

    我们先理清Git和Github的区别 xff0c Git是个版本控制的工具 xff0c 用来管理本地的代码工程 xff0c 它可以记录代码内容的变更 xff1b 而Github是一个代码托管平台 xff0c 我们可以使用Git将本地代码上传
  • 前端性能优化的指标和工具

    目录 一 xff1a 性能指标和优化目标 1 1 网络加载性能 1 2 用户交互体验 二 xff1a RAIL测量模型 2 1 Response xff08 响应 xff09 处理事件应在在50ms内完成 2 2 Animation xff
  • Windows下nvm的安装配置及使用

    目录 一 xff1a nvm简介 二 xff1a nvm下载及安装 三 xff1a nvm配置镜像 四 xff1a nvm的基本使用 五 xff1a nvm的一些常用命令 一 xff1a nvm简介 nvm 全名叫做 nodejs vers
  • SQLyog 链接MYSQL 8.0错误代码1251

    错误代码1251 2018 08 20 15 51 48 打开Navicat 的时候发现报错 xff0c 无法连接mySql数据库 感觉莫名奇妙 xff0c 报错 xff1a 1251 解决方法 xff1a 第一种方式 xff1a 打开Co
  • 关于Mysql数据库连接Navicat时出现1251报错问题的解决方法

    在Mysql数据库出问题后 xff0c 如果按照方法去解决 xff0c 还不如直接删除重装 xff0c 当然这里就要看自己的彻底删除MySQL数据库的方法对不对 xff0c 后面成功彻底删除了MySQL数据库 xff0c 配置好了MySQL
  • ROS初学订阅subscriber

    官方示例 include span class token string 34 ros ros h 34 span include span class token string 34 std msgs String h 34 span s
  • 解决andriod studio每次新建项目都要重新配置gradle的问题

    xff08 知道解决项目的gradle问题 xff0c 想要解决andriod studio每次新建项目都要重新配置gradle的问题的直接看最后一段 xff09 使用andriod studio出现Error Unknown host 3
  • 云原生:未来云计算的新趋势

    云原生 xff1a 未来云计算的新趋势 随着云计算技术的迅速发展 xff0c 云原生已成为最新的趋势 它不仅是云计算的新技术 xff0c 也是未来云计算的新趋势 什么是云原生 xff1f 云原生是指将应用程序设计为在云环境中运行的方式 它强
  • 打包造成The packaging for this project did not assign a file to the build artifact -> [Help 1]

    今天在家打包遇见The packaging for this project did not assign a file to the build artifact 仔细看了一下发现今天脑抽了在Plugins下打包 打包应该在Lifecyc
  • TDA4VM 8.4 RTOS SDK 中 SBL 的编译流程解析与makefile 分析笔记

    目录 0 TDA4VM 8 4 RTOS SDK 中 SBL 的编译流程解析TI SDK 的可执行文件后缀名是 xer5f 的原因sbl ospi img 的 xer5f 可执行文件的生成过程编译依赖的静态库编译可执行文件命令 xer5f
  • 【OpenCV 4开发详解】图像模板匹配

    本文首发于 小白学视觉 微信公众号 xff0c 欢迎关注公众号 本文作者为小白 xff0c 版权归 人民邮电出版社发行所有 xff0c 禁止转载 xff0c 侵权必究 xff01 经过几个月的努力 xff0c 小白终于完成了市面上第一本Op
  • PSPNet | 语义分割及场景分析

    点击上方 小白学视觉 xff0c 选择加 34 星标 34 或 置顶 重磅干货 xff0c 第一时间送达 本次 xff0c 由香港中文大学 CUHK 和商汤科技 SenseTime 提出的金字塔场景解析网络 Pyramid Scene Pa