当前位置:网站首页>PSPNet | 语义分割及场景分析
PSPNet | 语义分割及场景分析
2022-07-05 15:44:00 【小白学视觉】
点击上方“小白学视觉”,选择加"星标"或“置顶”
重磅干货,第一时间送达
本次, 由香港中文大学(CUHK)和商汤科技(SenseTime)提出的金字塔场景解析网络(Pyramid Scene Parsing Network, PSPNet)已经过审阅。
语义分割的目标仅仅是获知已知对象的每个像素的类别标签。
场景解析是基于语义分割的,它的目标是获知图像内所有像素的类别标签。
场景解析
通过使用金字塔池化模块(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. 对全局信息的需要
(c) 原有的未经上下文整合的FCN,(d) 经上下文整合的PSPNet
关系错误匹配:FCN基于外观将黄色框内的船预测为“汽车”。但根据常识,汽车很少会出现在河面上。
类别混淆:FCN将框内的对象一部分预测为“摩天楼”,一部分预测为“建筑物”。这些结果应当被排除,这样对象整体就会被分在“摩天楼”或“建筑物”其中一类中,而不会分属于两类。
细小对象的类别:枕头与床单的外观相似。忽略全局场景类别可能对导致解析“枕头”一类失败。
因此,我们需要图像的一些全局特征。
2.金字塔池化模块
特征提取后的金字塔池模块(颜色在本图中很重要!)
(a)和(b)
(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.一些训练细节
中间的辅助损失项
· 辅助损失项用于训练过程中。辅助损失项有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)
不同算法在ADE2K验证集上的结果
ResNet50-Baseline: 基于ResNet50的扩张FCN。
‘B1’和‘B1236’: bin大小分别为{1×1}和{1×1,2×2,3×3,6×6}的池化特征map。
‘MAX’和‘AVE’: 最大池操作和平均池操作
‘DR’: 降维.
平均池始终有更好的结果。使用降维比不使用降维要好。
4.2 辅助损失
辅助损失项的不同权重在ADE2K验证集上的结果
α= 0.4得到最好的性能。因此,使用权重α= 0.4。
4.3. 不同网络层数和不同尺度(MS)的测试
不同层数以及不同尺度的网络在ADE2K验证集上的结果
如我们知道的一样,更深的模型有更好的结果。多尺度测试有助于提高测试结果。
4.4. 数据增强 (DA)以及与其他算法的对比
在ADE2K验证集上与最新的方法的比较结果(除最后一行外,所有方法都是单尺度的)。
ResNet269+DA+AL+PSP: 对于单一尺度的测试,所有的技巧结合在一起的话,这种算法比最先进的方法有很大的优势。
ResNet269+DA+AL+PSP+MS: 同时进行了多尺度测试,取得了较好的效果。
下面是一些例子:
ADE2K中的样例
5. 与最先进方法的比较
5.1. ADE2K - ImageNet场景解析挑战赛2016
ADE2K测试集结果
PSPNet赢得了2016年ImageNet场景解析挑战赛冠军。
5.2. PASCAL VOC 2012
在使用数据增强的情况下,有10582/1449/1456张图像用于训练/验证/测试。
PASCAL VOC 2012测试集结果
“+”表示模型经过MS COCO数据预训练。
同样,PSPNet优于所有最先进的方法,如FCN、DeconvNet、DeepLab和Dilation8。
下面是一些例子:
PASCAL VOC 2012样例
5.3. Cityscapes
这个数据集包含了来自50个不同季节的城市的5000张高质量的像素级精细注释图像。分别有2975/500/1525张图像用于训练/验证/测试。它定义了包含材料和物品的19个类别。此外,我们亦为两种设定提供了20000张粗略注释的图像作比较,即,只使用精细数据以及同时使用精细和粗略标注数据进行训练。两者的训练都用“++”标记。
Cityscapes测试集结果
采用精细标注数据训练,或采用精细数据与粗略标注数据同时训练,PSPNet都取得了较好的效果。
下面是一些例子:
Cityscapes样例
作者还上传了Cityscapes数据集的视频,令人印象非常深刻:
另外两个视频例子:
https://www.youtube.com/watch?v=gdAVqJn_J2M
https://www.youtube.com/watch?v=HYghTzmbv6Q
采用金字塔池化模块,获得了图像的全局信息,提升了结果。
好消息!
小白学视觉知识星球
开始面向外开放啦
下载1:OpenCV-Contrib扩展模块中文版教程
在「小白学视觉」公众号后台回复:扩展模块中文教程,即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。
下载2:Python视觉实战项目52讲
在「小白学视觉」公众号后台回复:Python视觉实战项目,即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。
下载3:OpenCV实战项目20讲
在「小白学视觉」公众号后台回复:OpenCV实战项目20讲,即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。
交流群
欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~
边栏推荐
- 抽象类中子类与父类
- MySQL giant pit: update updates should be judged with caution by affecting the number of rows!!!
- Research and development efficiency measurement index composition and efficiency measurement methodology
- 异常com.alibaba.fastjson.JSONException: not match : - =
- vulnhub-Root_ this_ box
- Analytic hierarchy process of mathematical modeling (including Matlab code)
- 国泰君安网上开户安全吗
- 18.[STM32]读取DS18B20温度传感器的ROM并实现多点测量温度
- 定义严苛标准,英特尔Evo 3.0正在加速PC产业升级
- This article takes you through the addition, deletion, modification and query of JS processing tree structure data
猜你喜欢
ES6深入—ES6 Class 类
Cs231n notes (top) - applicable to 0 Foundation
vulnhub-Root_ this_ box
Five common negotiation strategies of consulting companies and how to safeguard their own interests
抽象类中子类与父类
18.[stm32] read the ROM of DS18B20 temperature sensor and realize multi-point temperature measurement
Defining strict standards, Intel Evo 3.0 is accelerating the upgrading of the PC industry
示例项目:简单的六足步行者
Replknet: it's not that large convolution is bad, but that convolution is not large enough. 31x31 convolution. Let's have a look at | CVPR 2022
Clock switching with multiple relationship
随机推荐
The visual experience has been comprehensively upgraded, and Howell group and Intel Evo 3.0 have jointly accelerated the reform of the PC industry
Quick completion guide for manipulator (IX): forward kinematics analysis
降本40%!Redis多租户集群的容器化实践
Enterprise backup software Veritas NetBackup (NBU) 8.1.1 installation and deployment of server
Data communication foundation OSPF Foundation
Cartoon: what is service fusing?
国泰君安网上开户安全吗
16. [stm32] starting from the principle, I will show you the DS18B20 temperature sensor - four digit digital tube displays the temperature
具有倍数关系的时钟切换
How difficult is it to pass the certification of Intel Evo 3.0? Yilian technology tells you
开发中Boolean类型使用遇到的坑
Analytic hierarchy process of mathematical modeling (including Matlab code)
通过的英特尔Evo 3.0整机认证到底有多难?忆联科技告诉你
[graduation season] as a sophomore majoring in planning, I have something to say
Research and practice of super-resolution technology in the field of real-time audio and video
Fundamentals of data communication - Principles of IP routing
ES6 drill down - Async functions and symbol types
英特尔第13代Raptor Lake处理器信息曝光:更多核心 更大缓存
Vulnhub-Moneybox
Noi / 1.5 06: element maximum span value of integer sequence