收藏 分销(赏)

基于多分类支持向量机的图像分割数据分析报告.doc

上传人:a199****6536 文档编号:9365062 上传时间:2025-03-23 格式:DOC 页数:18 大小:630.54KB
下载 相关 举报
基于多分类支持向量机的图像分割数据分析报告.doc_第1页
第1页 / 共18页
基于多分类支持向量机的图像分割数据分析报告.doc_第2页
第2页 / 共18页
点击查看更多>>
资源描述
基于多分类支持向量机的图像分割数据分析汇报 1 数据集来源及理解 这里的数据集来源于麻省大学的一种视觉小组,并由由其中的Carla Brodley奉献给UCI数据集。用于训练的实例源于一种包具有7个户外图像的数据库的随机采样成果,这些图像中的各个部分已被手工分类,从而可以创立一种分类器来给其他图像的不一样区域进行分类。 每一种样本实例都由原始图像上某个取样点所在的3x3邻域的RGB值获得,并根据一系列的分析,可得到如下属性: 1. 中心点横坐标(region-centroid-col):取样中心点所在的图像的横坐标; 2. 中心点纵坐标(region-centroid-row):取样中心点所在的图像的纵坐标; 3. 每个样本所含点的数量(region-pixel-count):为9; 4. 低密集度计数(short-line-density-5)指在通过这个区域的在任意方向上的,长度为5的线段当中,有多少条对比度大小要低于或等于5; 5. 高密集度计数(short-line-density-2)指在通过这个区域的在任意方向上的,长度为5的线段当中,有多少条对比度大小要高于5; 6. 横向像素差值的平均(vedge-mean):指在3x3的样本中,所有的左右相邻的两像素亮度之差的绝对值(共有6个)的平均数; 7. 横向像素差值的原则差(vedge-sd):上述像素差值的原则差; 8. 纵向像素差值的平均(hedge-mean):指在3x3的样本中,所有的上下相邻的两像素亮度之差的绝对值(共有6个)的平均数; 9. 纵向像素差值的原则差(hedge-sd):上述像素差值的原则差; 10. 整体亮度的平均数(intensity-mean):亮度按(R + G + B)/3计算(上同),再根据9个点的这些亮度取平均数 11. 红分量平均(rawred-mean):整个样本区域的红分量的平均值 12. 蓝分量平均(rawblue-mean):整个样本区域的绿分量的平均值 13. 绿分量平均(rawgreen-mean):整个样本区域的lan分量的平均值 14. 红色超过量(exred-mean):测量红色多于其他颜色分量的程度,按(2R - (G + B))的公式计算 15. 蓝色超过量(exblue-mean):测量蓝色多于其他颜色分量的程度,按(2B - (G + R))(的公式计算 16. 绿色超过量(exgreen-mean):测量绿色多于其他颜色分量的程度,按(2G - (R + B))的公式计算 17. HSV空间中的V值平均(value-mean):从RGB到HSV颜色空间的转换是一种三维的非线性转换,这个算法可以在交互式计算机图形学基础教材《Foley and VanDam》中找到。 18. HSV空间中的S值平均(satue-mean) 19. HSV空间中的H值平均(hue-mean) 此外,在这个数据集当中,一种图像的各个部分被提成了7种类别,包括了砖块表面(BRICKFACE),天空(SKY),树叶(FOLIAGE),水泥(CEMENT),窗户(WINDOW),小路(PATH),以及草地(GRASS)。在这些数据集当中,每个类别均提供了30个训练数据和300个测试数据,这两个数据集分别按csv(逗号分隔)的格式储存在segmentation.data和segmentation.test中,此外尚有一种文献segmentation.names储存了这个数据集的阐明。 2 措施与思绪 2.1 措施理解与简介 LIBSVM是台湾大学林智仁(Lin Chih-Jen)副专家等开发设计的一种简朴、易用和迅速有效的SVM模式识别与回归的软件包,不仅提供了编译好的可在Windows系列系统的执行文献,并且提供了源代码,以便改善、修改以及在其他操作系统上应用;该软件对SVM所波及的参数调整相对比较少,提供了诸多的默认参数,并提供了交互检查(Cross Validation)的功能。运用这些参数和功能可以处理诸多有关分类与回归的问题,包括C-SVM、ν-SVM、ε-SVR和ν-SVR等问题,也包括了包括基于一对一算法的多类模式识别的问题。 LIBSVM 使用的一般环节是: 1) 准备训练的数据集,包括每个样本的维数l,每个样本的属性集x,以及每个样本的对应分类编号y; 2) 对数据进行简朴的缩放和平移操作来实现数据的归一化; 3) 考虑选用核函数,包括线性核,RGF核,多项式核,sigmoid核等; 4) 采用交叉验证选择最佳损失参数C与最合适的gamma系数 ; 5) 采用最佳参数C与gamma系数 对整个训练集进行训练获取支持向量机模型; 6) 运用获取的模型进行测试。 LibSVM是以源代码和可执行文献两种方式给出的。假如是Windows系列操作系统,可以直接使用软件包提供的程序,也可以进行修改编译。 使用软件包提供的程序时,该软件使用的训练数据和检查数据文献格式如下: <label> <index1>:<value1> <index2>:<value2> ... 其中<label> 是训练数据集的目的值,对于分类,它是标识某类的整数(支持多种类);对于回归,是任意实数。<index> 是以1开始的整数,可以是不持续的;<value>;为实数,也就是我们常说的自变量。检查数据文献中的label只用于计算精确度或误差,假如它是未知的,只需用一种数填写这一栏,也可以空着不填。 使用源代码进行编译时,对于用于训练的数据集,需要按如下的格式进行填写: 用于训练的数据集被定义为 struct svm_problem { int l; double *y; struct svm_node **x; }; 其中l表达样本的数量,y表达每个样本对应的分类ID值的集合,x代表每个样本每个维的属性集合的索引(每个样本首个节点的内存地址),而这个属性集合需要额外创立,令维数为n,则这个属性的集合的长度为l*(n+1)。 对于用来测试的数据集,需要一种长度为(n+1)的struct svm_node数组,这里的svm_node被定义为: struct svm_node { int index; double value; }; 其中的value表达的是节点的值,index表达目前样本的属性节点的编号(从1开始,单调递增),每个样本的节点在每个维均赋值完毕后,需要紧接着额外地加入一种index值为-1,value可以不设置的节点。这也是每个维度为n的样本的属性需要定义(n+1)个节点的原因。 对于训练的参数而言,在struct svm_parameter的定义中,kernel_type(核函数类型),gamma(RBF核的gamma系数),和c(损失系数),是常常要设置的参数,其他的参照照svm-toy.cpp中给出的默认值进行赋值即可。 kernel_type的属性一览表: 0 – 线性:u'v 1 – 多项式:(r*u'v + coef0)^degree 2 – RBF函数:exp(-r|u-v|^2) 3 –sigmoid:tanh(r*u'v + coef0) svm_type的属性一览表: 0 -- C-SVC 1 --v-SVC 2 – 一类SVM 3 -- e -SVR 4 -- v-SVR 本程序用的是C-SVC 2.2 详细分析措施和流程 程序运行的流程图如下图所示: 在训练数据集当中可以看出(参见转换格式后的电子表格文档segmentation.data. xls),训练的数据里的B、C两列为取样区域中心点的坐标,不能作为训练的列来使用,D列(REGION-PIXEL-COUNT)恒为9,E(SHORT-LINE-DENSITY-5)和F(SHORT-LINE-DENSITY-2)列中的非零数的个数很少,也不能用于训练分类器。因此,只能用之后的最多为14个列作为分类器来使用,为了测试以便,可以让测试者自己在这14个列当中选择合适地列进行训练。如下图所示: 图上的上半部分的14个复选框可用于设置哪些类可以参与训练,下半部分可以设置Gamma值与损失系数c,右方两个的复选框用来设置与否使用RBF核(否则用线性核),以及与否对数据进行按最大值和最小值进行归一化处理。 在segmentation.data.xls中,G-R列的最大值都没有超过151,而目前的rgb值一般取0-255。为了量化的统一,需要在读取到原始数据数组rawData时将这12个列乘以系数(256.0/151.0),否则不能用于完整的户外图像的测试操作。此外,第一列需要改写成类别的ID,这里按出现次序分别赋了1-7这几种整数,其他的列按原样写到rawData中。 随即需要根据每列的最大值和最小值进行进行对rawData的归一化,由于归一化的运算属于线性运算,为此可以此外定义一种数组columnScale,长度为segmentation.data. xls的列数的两倍,用来储存其中每列的的缩放系数和平移系数,在构建svm属性的svm_note数据集时再进行这项运算。 归一化的代码如下: //获得归一化数据 int probRowCount=rawData.GetSize()/20; double minValue=0.0; double maxValue=0.0; for(i=0;i<20;i++){ if(!willCalculateColumns[i]){ continue; } if(!willScale){ columnScale[2*i]=1.0; columnScale[2*i]=0.0; continue; } minValue=rawData[i]; maxValue=rawData[i]; for(j=1;j<probRowCount;j++){ if(minValue>rawData[j*20+i]){ minValue=rawData[j*20+i]; } if(maxValue<rawData[j*20+i]){ maxValue=rawData[j*20+i]; } } if(minValue!=maxValue){ columnScale[2*i]=1.0/(maxValue-minValue); columnScale[2*i+1]=-minValue*columnScale[2*i]; }else{ columnScale[2*i]=0.0; columnScale[2*i+1]=0.5; } } 进行测试时,也同步需要归一化的数据,并且每列的线性运算必须相似。为此,可以先定义一种原始的数组vx,长度为segmentation.data. xls的列数,然后再在写入svm_node节点时进行归一化操作,将vx用来测试的代码如下: void CTest1View::predict(double (&vx)[20]){ //从向量开始算出预测值 if(model==NULL){ return; } int probColumnCount=0;//svm训练数据集的维数 int i=0,j=0; for(i=1;i<20;i++){ if(willCalculateColumns[i]){ probColumnCount++; } } struct svm_node *nx=new struct svm_node[probColumnCount+1];//筛选过的向量 j=0; for(i=1;i<20 && j<probColumnCount;i++){ if(willCalculateColumns[i]){ nx[j].index=j+1; nx[j].value=columnScale[2*i]*vx[i]+columnScale[2*i+1]; j++; } } nx[j].index=-1; //nx[j].value=0; double predictValue=svm_predict(model,nx); vx[0]=predictValue; delete[] nx; } 对于完整的真彩色bmp图片,在计算的过程中,需要从非边缘中的所有点的3x3邻域内进行多种属性的运算,详细代码在segment函数中,输出的成果按不一样的颜色显示在第二张图中。 3 试验及分析 3.1 试验环境 3.1.1 硬件环境 电脑型号:戴尔 Inspiron N4050 笔记本电脑 处理器:英特尔 第二代酷睿 i3-2350M @ 2.30GHz 双核 主板:戴尔 02JCHC (英特尔 HM67 芯片组) 内存:4 GB ( 三星 DDR3 1333MHz / 昱联 DDR3 1333MHz ) 主硬盘:西数 WDC WD10JPVX-75JC3T0 ( 1 TB / 5400 转/分 ) 显卡:英特尔 HD Graphics Family ( 1809 MB / 戴尔 ) 显示屏:友达 AUO183C ( 14 英寸 ) 光驱:东芝-三星 DVD+-RW SN-208BB DVD刻录机 声卡:IDT @ 英特尔 6 Series Chipset 高保真音频 网卡:瑞昱 RTL8105E Family PCI-E FE NIC / 戴尔 3.1.2 软件环境 操作系统:Windows 7 旗舰版 64位 SP1 ( DirectX 11 ) libSVM版本:libSVM 3.1.7 开发工具:Ms Visual C++ 6.0简体中文企业版 开发工具版权:1994-98 Microsoft Corporation 开发工具汉化者:swordxy(辛玉强),WuZuWu(吴祖武) 3.2 试验成果与分析 3.2.1 软件的使用措施 打开程序目录test1下的debug或release文献夹,在这个文献夹中,test1.exe是程序的主文献。exe所在目录下segmentation.data按csv(逗号分隔)的格式储存了训练数据,segmentation.test也按csv的格式储存了测试数据,此外的segmentation.names储存了这个数据集的阐明。 运行test1.exe,先点击文献菜单下的“训练样本”项,在对话框的上方选择需要训练的属性,下方设置的选项包括了gamma值和损失系数c,尚有核函数是线性核还是RBF核,以及与否进行原始数据的归一化。点击“确定”按钮后会生成model result.txt来输出训练的模型。 然后点击文献菜单下的“测试成果”项,根据segmentation.test进行测试,判断程序预测的成果与否与segmentation.test中的成果一致,并弹出对应对话框显示对的率,详细的运行成果保留到了segmentation.out文献中,用来依次显示预测的成果。 点击文献菜单下的“打开图片”项可以进行实际的bmp图像分割,注意图像不能太大。第一张图为原图,预测的成果按不一样的颜色显示在第二张图中,详细的颜色图例为:红:砖;靛蓝:天空;绿:树叶;灰:水泥;蓝:窗户;紫:小路;黄:草地。 再次点击文献菜单下的“训练样本”命令可以重新对分类器进行训练,从而可以获得不一样的预测值。 3.2.2 测试数据集的测试成果分析 如下图所展示,默认选择这些列和参数进行分类器的训练。 训练成果:默认设置,相符1531个,不相符569个,相符率为72.90%。 gamma值为5时,相符1747个,不相符353个,相符率为83.19%。 gamma值为100时,相符1819个,不相符281个,相符率为86.62%。 gamma值为1000时,相符1354个,不相符746个,相符率为64.48%。 gamma值为0.1时,相符1524个,不相符576个,相符率为72.57%。 gamma值为5,损失系数为10时,相符1866个,不相符234个,相符率为88.86%。 gamma值为5,损失系数为0.01时,相符1553个,不相符547个,相符率为73.95%。 只选两个差异平均值和差异两个方差值,gamma值为5,损失系数为10时,相符719个,不相符1381个,相符率为34.24%。 只选两个差异平均值和差异两个方差值,gamma值为1,损失系数为1时,相符600个,不相符1500个,相符率为28.57%。 只选红蓝绿平均和红蓝绿超过,gamma值为5,相符1840个,不相符260个,相符率为87.62%。 此外,每次按同样的设置进行训练,所得到的测试的对的率会有±1%左右的波动。 3.2.3 实际图像的测试成果分析 默认设置值同上,在程序的运行中,椰树海滩图像的各个部分被提成如下图所示的多种部分,图例为:红:砖;靛蓝:天空;绿:树叶;灰:水泥;蓝:窗户;紫:小路;黄:草地。 在默认设置下的成果如下图所示: 选择线性核函数的时候,成果如下图所示: 选择RBF核函数,gamma值为0.5,损失系数为5时,成果如下图所示:
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服