深度挖掘论文:《Semantic Soft Segmentation》(语义软分割)

本文介绍了深度学习论文《Semantic Soft Segmentation》,重点讨论了使用ResNet的深度残差网络进行语义分割。文章详细阐述了COCO-Stuff数据集、训练过程、测试步骤,以及涉及的工具和技术,如TensorFlow、MATLAB和Python。同时,总结了语义分割的关键方法,包括FCN、SegNet、DeepLab等,并提供了代码示例和资源链接。
摘要由CSDN通过智能技术生成

最近花了一段时间研究英语论文Semantic Soft Segmentation,把自己收集的知识点分享下。

###内容目录

###论文摘要

深度挖掘论文:《Semantic Soft Segmentation》(语义软分割)

他们在coco-stuff dataset 数据集上训练神经网络,从而得到模型,

原理

SSS:利用深度神经网路ResNet-101生成图像的语义特征128维度的特征向量,然后利用拉普拉斯的矩阵分解自动生成软分割。http://www.aiuai.cn/aifarm366.html
特征向量是Python编程,拉普拉斯矩阵是MATLAB编程。
语义分割其实是对不同的像素就行分类的过程。     
软分割:即表示语义上有意义的区域以及它们之间软过渡的层,
SSS:把图像中语义上有意义的区域用准确的软过度分隔开不同的层。所以,软就是指软过度。
拉普拉斯的矩阵决定每个像素属于哪个语义。论文第三页

深度残差网络ResNet

分别有50,101,152,200层
(The depth residual network ResNet, respectively, has 50101152200 layers)
ResNet中解决深层网络梯度消失的问题的核心结构是残差网络:
残差网络增加了一个identity mapping(恒等映射),把当前输出直接传输给下一层网络(全部是1:1传输,不增加额外的参数),相当于走了一个捷径,跳过了本层运算,这个直接连接命名为“skip connection”,同时在后向传播过程中,也是将下一层网络的梯度直接传递给上一层网络,这样就解决了深层网络的梯度消失问题。
残差网络使得前馈式/反向传播算法非常顺利进行,在极大程度上,残差网络使得优化较深层模型更为简单 

使用的训练集:
cocostuff10k 9000张训练集,1000张训练集
COCO Dataset
– Object segmentation
– Recognition in Context
– Multiple objects per image
– More than 300,000 images
– More than 2 Million instances
– 80 object categories
– 5 captions per image
– Keypoints on 100,000 people, 17 个关键点.

机器之心观点:

语义软分割——一组与图像中语义有意义的区域相对应的层,它们在不同对象之间有准确的软过渡。
软分割是通过精心构建的拉普拉斯矩阵的特征分解完全自动生成的
通过将高层次和低层次的图像特征融合在一个图结构中来自动生成软分割
对于输入图像,我们生成像素级的超维语义特征向量,并利用纹理和语义信息定义一张图。
构建该图的目的是使对应的拉普拉斯矩阵及其特征向量能够揭示语义对象和对象之间的软过渡(soft transition)。
我们的方法使用了与光谱抠图相同的形式,也就是将软分割任务形式化为特征值估计问题 [Levin et al. 2008b]。该方法的核心是构建拉普拉斯矩阵 L 来表征图像中每对像素属于同一个分割的可能性。尽管光谱抠图仅使用了低级局部颜色信息来构建矩阵,我们描述了如何通过非局部线索和高级语义信息来增强这一方法。
原始的方法也描述了如何利用稀疏化来从 L 的特征值来创建层,我们的研究表明,该原始技术的放宽限制的版本可以获得更佳的结果。

使用的工具:
Windows 10
TensorFlow 1.4
MATLAB 2016
Python 3.5
Pycharm
sublime text 3
GPU:英伟达 1050 ti (这里不能使用GPU版本的TF哈)

###测试demo的步骤:

语义分割代码

https://github.com/yaksoy/SemanticSoftSegmentation
运行SemanticSoftSegmentation-master文件夹里的文件demo.m

具体实现过程
按照论文测试自己的png格式图片的步骤:
下载png格式图片’docia_one.png’

特征提取代码:

https://github.com/iyah4888/SIGGRAPH18SSS
按照提示下载模型。把模型文件夹model放入SIGGRAPH18SSS-master下
然后把自己想测试的png格式图片(可以是很多张)'docia_one.png'放进SIGGRAPH18SSS-master\Samples文件夹下
运行文件夹SIGGRAPH18SSS-master里文件main_hyper.py
产生一个Feat文件夹,里面有对应的'docia_one.mat'文件:128维度图片
把这个'docia_one.mat'文件放进SemanticSoftSegmentation-master文件夹下

对128维度mat文件降维

分析preprocessFeatures.m 得到:
%function simp = preprocessFeatures(features, image) %features是对128维度图片,image是原图
%simp就是生成的3维度图片特征
preprocessFeatures.m  文件里面最后添加代码保存特征图片:imwrite(simp,features.png)  %保存三维度的特征图片features.png,结果是640x640x3 double
命令行窗口输入: 
tmp = load('docia_one.mat');  %这一步能够看到生成了变量:embedmap;docia_one.mat 128维度 
features = tmp.embedmap;  %When load() by matlab, the 128-dim feature is a field (embedmap) of a structure. It needs to be unpacked.
image= imread('docia_one.png'); %原图
运行:运行SemanticSoftSegmentation-master文件夹里的文件preprocessFeatures.m得到特征图片features.png

合并图像

原图'docia_one.png'和降维后的特征图片'features.png':
%personal defined file

image = imread('docia_one.png');  %原图
features = imread('features.png');
com_image = [image, features];
% imshow(com_image) %展示拼接的图片
imwrite(com_image,'new_docia.png');  %保存拼接的图片

运行demo.m

https://github.com/yaksoy/SemanticSoftSegmentation
运行SemanticSoftSegmentation-master文件夹里的文件demo.m
并且把%image = im2double(imread('docia.png'));中的docia.png图片替换成自己的图片'new_docia.png',左边是原图,右边是特征图
生成的第一张图片中右边第三个是分割后的结果。

注意
最后也可以尝试测试自己的很多图片,降维后的特征图会有很多种,每个特征图生成的语义分割图也是有很多种。所以可能需要自己编写for循环,进行多次生成语义分割图片。

###收藏部分
一些网址:

论文和附属论文地址:
http://people.inf.ethz.ch/aksoyy/sss/
网友总结:
http://www.aiuai.cn/aifarm366.html 博主人特别好,值得结交朋友。
主要MATLAB代码:
https://github.com/yaksoy/SemanticSoftSegmentation
特征提取代码:
https://github.com/iyah4888/SIGGRAPH18SSS

光谱抠图:
http://www.vision.huji.ac.il/SpectralMatting/

自问自答:

1
论文使用了什么深度神经网络?语义软分割中的软是什么意思?硬分割中的硬是什么意思
The base network of our feature extractor is based on 
DeepLab-ResNet-101
One of the major shortcomings of semantic hard segmentation
is its inaccuracy around object boundaries
说明硬分割就是语义边缘不准确的分割,软分割就是语义边沿效果很好的分割了。

软分割就是不同语义边缘软过度
硬分割:PSPNet:三元图d,(Mask R-CNN):三元图e

2
这几张图分别代表什么意思呢?
为什么会有128张图片呢?
preprocessFeatures.m
% Filter out super high numbers due to some instability in the network网络不稳定导致产生高维度特征
128张图片是由深度神经网络生成的语义特征,经过PCA降维后供光谱分割使用
为什么会有两份不同的代码?代码之间有什么联系吗?spectral segmentation approach代码用到semantic feature (128-D) generation 产生的mat文件了吗?
这个论文包含了两种方法:深度神经网络和光谱抠图,所以会有两种代码。光谱分割用到了语义特征


3
每次运行MATLAB代码产生的图片颜色不同的原因
就在MATLAB代码的demo部分,写得很清楚,我自己总认为自己不懂MATLAB代码,一直没有细心去看。:有两个阶段在初始化和分类时候使用了K均值算法,k均值算法属于无监督学习,每次结果会得到局部最优解,局部最优解不一定会是全局最优解,所以图片颜色会有差异。
The results may vary a bit from run to run, as there are 2 stages that use k-means for intialization & grouping.

4
最终结果为啥会有matting component这个图像出现。
因为论文中提到把语义软分割和光谱分割进行比较,所以这样画图进行了比较,没有啥特殊意义。
你可以用语义特征采用光谱抠图来对软分割进行分类,就像我们在论文中所做的比较一样。(来自MA
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值