(一)模式识别——基于SVM的道路分割实验(附资源)

news2024/11/15 11:34:31

写在前面:本报告所有代码公开在附带资源中,无法下载代码资源的伙伴私信留下邮箱,小编24小时内回复

一、实验目的

1、实验目标

        学习掌握SVM(Support Vector Machine)算法思想,利用MATLAB的特定工具箱和库函数,实现对特定图像的道路分割。同时通过本实验过程理解处理各种数据分析问题的一般思想,包括数据预处理、模型选择、模型评估和参数优化等。

2、实验涉及到的学习内容

        SVM的分类思想,超平面(Hyperplane)、边际(Margin)、支持向量(Support Vectors)、核技巧(Kernel Trick)、软间隔(Soft Margin)等相关概念及其在分类处理中的作用,二次规划在求解SVM超平面中的使用。

二、实验具体完成情况

1、总体实验方案

        首先对所需要图片素材进行读取,在MATLAB中将图片的RGB值作为样本,用鼠标左右键区分正负样本。完成样本采集后将样本和样本标签同时传入封装的求解函数,返回得到分割超平面的wb值,根据该值构建超平面方程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]式,构建输入参数HfA、b如下:

由quadprog可解得u,根据结果构建可得到w,b0

b.对偶空间求解法

        在对空间中,原问题经过对偶转换成如下的二次规划问题:

        根据式[2]构造相关参数如下:

        调用quadprog可解得最优的w*,从而问题中对wb0的求解有:

核函数求解

        利用核函数求解非线性支持向量机时,其实也是针对在对偶空间中的目标函数进行二次规划求解,核函数法利用一些特定的核函数来代替求解内积,所以目标函数可以化成:

其中核函数常见形式如下:

        首先得到支持向量机求解的原始问题模型,接着通过构造拉格朗如函数构造出一个问题,我们利用拉格朗日对偶原理,求解这个问题的对偶问题,实现对问题的求解。

(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 形态学处理流程

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2129475.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MFC工控项目实例之十四模拟量信号名称从文件读写

承接专栏《MFC工控项目实例之十三从文件读写板卡信号名称》 在BoardTest.cpp文件中添加代码 int m_CountGetCurSel_AD[16];//索引号 UINT m_CountComboID_AD[16]//控件ID号{IDC_COMBO33,IDC_COMBO34,IDC_COMBO35,IDC_COMBO36,IDC_COMBO37,IDC_COMBO38,IDC_COMBO39,IDC_COMBO40…

语言模型微调:提升语言Agent性能的新方向

人工智能咨询培训老师叶梓 转载标明出处 大多数语言Agent依赖于少量样本提示技术(few-shot prompting)和现成的语言模型。这些模型在作为Agent使用时,如生成动作或自我评估,通常表现不佳,且鲁棒性差。 论文《FIREACT…

2024外滩大会:远的更近 旧的更新

文 | 大力财经 导语:2024 外滩大会圆满落幕!未来更近了,旧的更创新了。全球 500 多位精英齐聚,50 余家企业 “招才”。在这里,我们不仅看到未来商业形态,更望见未来的影子。 为期三天的2024外滩大会圆满落幕…

flv复合流

一、什么是flv flv流媒体协议是Adobe公司推出的一种流媒体协议。其特点就是封装后的音视频数据量很小,并且协议规范相对简单,所以FLV流媒体协议适合网络传输,但是他是一个私有协议,所支持的网络传输比较有限:如RTMP、H…

Mysql异常断电InnoDB损坏处理

一、mysql启动报错信息收集 1、截图 [ERROR] InnoDB: Database page corruption on disk or a failed file read of page [page id: space0, page number203]. You may have to recover from a backup. Jun 27 13:30:06 localhost mysqld: 2024-06-27T13:30:06.14747208:00 0 …

意气实体过程函数论3

意气实体过程函数论3 和悦空间 y i y_i yi​才气的意气实体过程逻辑定义哥德尔数数理逻辑简称逻辑;明明德数符号琴语言数据结构王阳明群表示,被称为才气群表示论; 从劳动力关系向量到生产力配分函数算法为己之学模拟器接口函数声明内核与插件…

【JAVA入门】Day42 - 转换流

【JAVA入门】Day42 - 转换流 文章目录 【JAVA入门】Day42 - 转换流 转换流是字符流和字节流之间的桥梁。 转换流中的输入流叫做 InputStreamReader,它可以把字节流转换为字符流。 转换流的输出流叫做 OutputStreamWriter,它可以把字符流…

JAVA并发编程ReentrantLock核心原理剖析

JAVA并发编程系列以及陆续出了5篇,第六篇的主角ReentrantLock该出场了。之前《一文看懂全部锁机制》谈到可重入锁、《JAVA并发编程AQS原理剖析》谈到了JUC灵魂AQS,那么AQS的思想优秀实践者ReentrantLock是怎么实现AQS的呢? 1、ReentrantLock是…

Unity笔记:ScrollRect代码阅读

大体流程 Unity Docs - UGUI | Class ScrollRect 总的说 自身不负责Rebuild,设置脏之后交由LayoutRebuilder注册到CanvasUpdateRegistry里待rebuild的集合在固定时机统一Rebuild。自身只在Prelayout和Postlayout做一下数据准备和数据更新 自身的ICanvasElement.…

判断是否在同一个键盘行

给你一个字符串数组 words ,只返回可以使用在 美式键盘 同一行的字母打印出来的单词。键盘如下图所示。 美式键盘 中: 第一行由字符 "qwertyuiop" 组成。第二行由字符 "asdfghjkl" 组成。第三行由字符 "zxcvbnm" 组成。…

构建医护人员排班系统:Spring Boot的实践与探索

相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统,它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等,非常适…

如何使用UltraISO(软碟通)制作U盘启动盘

一、打开UltralSO.exe、先格式化U盘,文件 -> 打开 找到要刻录的ISO镜像文件; 二、选择你的U盘。U盘会在左下角出现,点击便可。 三、启动->写入磁盘映像; 四、写入方式选择 "USB-HDD",点击“写入”按钮…

ZeroTier 内网穿透工具在 Linux 上的安装与配置教程

感谢浪浪云支持发布 浪浪云活动链接 :https://langlangy.cn/?i8afa52 文章目录 1. 安装 ZeroTier1.1 系统需求1.2 更新系统软件包1.3 安装 curl1.4 安装 ZeroTier1.5 启动 ZeroTier 服务1.6 验证安装 2. 创建和管理虚拟网络2.1 注册和登录2.2 创建新网络2.3 配置网…

【嘶吼文化-注册安全分析报告】

前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 暴力破解密码,造成用户信息泄露短信盗刷的安全问题,影响业务及导致用户投诉带来经济损失,尤其是后付费客户,风险巨大,造成亏损无底洞…

私有VLAN,从原理到配置,全给你说明白

号主:老杨丨11年资深网络工程师,更多网工提升干货,请关注公众号:网络工程师俱乐部 晚上好,我的网工朋友 传统的VLAN划分虽然能够有效地隔离不同部门或功能区域的网络流量,但在某些情况下,比如共…

【JSP `page` 指令详解:构建高效的动态网页】

JSP page 指令详解&#xff1a;构建高效的动态网页 在 JavaServer Pages (JSP) 中&#xff0c;<% page %> 指令用于配置 JSP 页面的一些关键属性。这些属性控制着页面的行为和生成的 Servlet 的特性&#xff0c;例如字符编码、是否启用会话、缓冲区大小等。合理使用 page…

​了解MySQL 的二进制日志文件​Binlog

1. SQL 语句的几种类型 首先介绍一下&#xff0c;对于一个 SQL 语句&#xff0c;它常常被分为以下几种类型&#xff1a; DDL&#xff08;Data Definition Language&#xff0c;数据定义语言&#xff09;&#xff1a;用来操作数据库、表、列等&#xff0c;比如 CREATE、ALTER…

VSCode 创建Python 项目(最简单,最少步骤,无痛从pycharm迁移项目)

第一步&#xff1a;下载 下载地址&#xff1a;https://code.visualstudio.com/docs/?dvwin64user 第二步&#xff1a;配置 2.1&#xff1a;VsCode设置中文 按住键盘上的“CtrlShiftP”组合键&#xff0c;打开命令面板。 在命令面板中输入“Configure Display Language”。点击…

vue3 二次封装el-select增加分页功能

实现效果 需求来源于实时搜索客户名称,使用el-select相比用弹窗嵌套表格轻便不少。但是当远程搜索获得的数据量大时,可以滚动加载 也可以加上分页。 封装分页组件 <!-- el-pagination 二次封装 --> <template><div><el-paginationv-model:current-page…