写在前面:本报告所有代码公开在附带资源中,无法下载代码资源的伙伴私信留下邮箱,小编24小时内回复
一、实验目的
1、实验目标
学习掌握SVM(Support Vector Machine)算法思想,利用MATLAB的特定工具箱和库函数,实现对特定图像的道路分割。同时通过本实验过程理解处理各种数据分析问题的一般思想,包括数据预处理、模型选择、模型评估和参数优化等。
2、实验涉及到的学习内容
SVM的分类思想,超平面(Hyperplane)、边际(Margin)、支持向量(Support Vectors)、核技巧(Kernel Trick)、软间隔(Soft Margin)等相关概念及其在分类处理中的作用,二次规划在求解SVM超平面中的使用。
二、实验具体完成情况
1、总体实验方案
首先对所需要图片素材进行读取,在MATLAB中将图片的RGB值作为样本,用鼠标左右键区分正负样本。完成样本采集后将样本和样本标签同时传入封装的求解函数,返回得到分割超平面的w和b值,根据该值构建超平面方程wx+b,将后续的测试集数据带入该方程比较所得数值与1的大小关系,数值大于1则被打上正标签。最后遍历所有测试集数据,根据其标签类别,对图像进行二值化,从而得到道路与背景的分割图。
2、具体技术途径
(1)数据收集和准备
选择包含道路和非道路区域的图像。标记图像,将道路区域与非道路区域进行标注。标注的数据根据是否为道路区分正负样本,并分别以1和-1作为标签标记。
(2)特征提取
从图像中提取特征以用于SVM训练和预测,本实验采用的特征样本点的RGB数值。
(3)模型训练
使用训练集中的样本点对应的RGB值组成的向量来训练SVM模型。SVM的目标是找到一个最优的决策边界,以将道路和非道路区域分开。求解最优决策超平面过程中,采用了原空间求解和对偶空间求解2种方式,均用到了MATLAB的quadprog函数。
a.原空间求解法:
原空间下的目标函数和不等式约束为如下表达式。
根据MATLAB中的quadprog函数进行求解,可将[1]式表示为公式[2]中的二次规划问题。
对比[1]与[2]式,构建输入参数H、f、A、b如下:
由quadprog可解得u,根据结果构建可得到w,b0。
b.对偶空间求解法
在对空间中,原问题经过对偶转换成如下的二次规划问题:
根据式[2]构造相关参数如下:
调用quadprog可解得最优的w*,从而问题中对w和b0的求解有:
核函数求解
利用核函数求解非线性支持向量机时,其实也是针对在对偶空间中的目标函数进行二次规划求解,核函数法利用一些特定的核函数来代替求解内积,所以目标函数可以化成:
其中核函数常见形式如下:
首先得到支持向量机求解的原始问题模型,接着通过构造拉格朗如函数构造出一个问题,我们利用拉格朗日对偶原理,求解这个问题的对偶问题,实现对问题的求解。
(4)预测道路区域
当模型经过评估并认为性能足够好时,可以将其用于新的图像来预测道路区域。
将图像的特征提取出来,然后使用SVM模型进行预测,以确定每个像素是否属于道路。
(5)可视化结果
将道路分割结果叠加到原始图像上,以便可视化道路的位置。
3、实验结果与分析
a.通过使用MATLAB的quadprog函数,分别在线性核函数下对原空间和对偶空间的求解进行分析。
正负样本点随机取10对的情况下,可以看出,两种方式分割效果都不够理想。其不管是原空间还是对偶空间求解分割出的道路轮廓差异均较大,呈现出较多“噪点”,道路面积明显小于实际。
图1 原空间下10对样本点分割结果 图2 对偶空间下10对样本点分割结果
再次选择10对正负样本点,在特征足够明显的区域选择样本,并且尝试同一类型样本点适当的涵盖该的不同特征,得到下图。可看出原空间求解和对偶空间求解得到的效果类似。其中原空间求解得到的结果道路区域分割得更准确,对偶空间求解分割得到的道路区域夹杂的“噪点”略多。
图3 原空间下10对样本点分割结果 图4对偶空间下10对样本点分割结果
增加样本点数量,取30对随机样本点,发现分割效果不如第二次的实验结果。其中原空间求解的结果略有倒退,对偶空间的结果有一定改善。为了验证是否因为偶然因素导致的情况,持续进行多次30组随机样本的测试。
图5 原空间下30对样本点分割结果 图6 对偶空间下30对样本点分割结果
经过多次尝试取30对样本,发现大部分情况可以取得较好的效果,少数情况下分割效果会倒退,其中取得较好分割效果时的情况如图所示。不管是原空间还是对偶空间,对道路中心区域的分割效果相比第一次实验结果有着明显改善,但是边缘区域的分割效果改善效果不明显。
图7 原空间下30对样本点分割结果 图8 对偶空间下30对样本点分割结果
分析:线性核函数下,从使用二次规划对原空间和对偶空间求解得到的结果可以看出,样本点的数量多少会一定程度影响到分割结果,但不是决定性因素,最终影响分割效果的是样本质量,直接决定了支持向量的优劣。同时,线性和函数下,对偶空间求解对比原空间求解并不能取得明显的优势,有时甚至处于劣势。
b.通过使用MATLAB的quadprog函数在原空间(线性核函数)下求解,使用svc库函数在对偶空间(尝试不同核函数)下求解。
图9 原空间linear核 图10 对偶空间linear核
图11 对偶空间rbf核 图12 对偶空间erbf核
分析:本次测试的样本特征维度为3维,维度较低,使用线性核的结果优于非线性核。原因可能是使用非线性核时,核函数将特征映射到更高维空间后不一定会使超平面划分变得更容易,若参数不好,反而会使问题复杂化,得到不及线性核的结果。
c.从a和b部分的实验可以看出,使用硬间隔支持向量机时,由于道路与背景无可避免的存在一些特征非常接近的样本点,导致输出的图像存在不同程度的“噪声”。下面,在实验b的基础上将svc库函数引入软间隔,得到如下结果。
图13 原空间linear核 图14 对偶空间linear核
图15 对偶空间rbf核 图16 对偶空间erbf核
分析:引入软间隔后,可见非线性支持向量机的性能明显改善,道路内部的“噪声”明显减少,但未完全消除,道路边缘的分割准确度略有下降。可见引入软间隔带来提升的同时也会下降边缘检测性能。
d.根据前面实验,发现无论是采用非线性核,还是引入软间隔,都只能提升分割性能,而不能确保分割结果100%准确。针对此情况,可以结合计算机图像处理技术,对图形进行一些形态学操作,消除噪点并对边缘进行平滑操作。下面使用MATLAB对图像进行形态学操作,大致逻辑如下,首先将原图像进行腐蚀+膨胀操作去除背景噪声,然后通过膨胀+腐蚀去除主体(路面)噪声,最后先后求取主体和背景的最大连通域,得到最终分割效果,如图所示。
图17 形态学处理流程