基于支持向量机SVM的图像多分类,SVM的详细原理

目录

支持向量机SVM的详细原理
SVM的定义
SVM理论
SVM应用实例,SVM图像多分类
代码
结果分析
展望
参考

支持向量机SVM的详细原理

SVM的定义

支持向量机(support vector machines, SVM)是一种二分类模型,它的基本模型是定义在特征空间上的间隔最大的线性分类器,间隔最大使它有别于感知机;SVM还包括核技巧,这使它成为实质上的非线性分类器。SVM的的学习策略就是间隔最大化,可形式化为一个求解凸二次规划的问题,也等价于正则化的合页损失函数的最小化问题。SVM的的学习算法就是求解凸二次规划的最优化算法。

(1)支持向量机(Support Vector Machine, SVM)是一种对数据进行二分类的广义线性分类器,其分类边界是对学习样本求解的最大间隔超平面。

(2)SVM使用铰链损失函数计算经验风险并在求解系统中加入了正则化项以优化结构风险,是一个具有稀疏性和稳健性的分类器 。

(3)SVM可以通过引入核函数进行非线性分类。

SVM理论

1,线性可分性

在这里插入图片描述
2,损失函数
在这里插入图片描述

在这里插入图片描述

3,核函数

在这里插入图片描述
在这里插入图片描述

SVM应用实例

数据

部分数据如下

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

基于SVM的图像分类

function Fun3_Test_SVMs()
close all;clear all;clc;
%%%说明:下面这些句子是将当前目录下所有的子目录加为可搜索路径%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
files = dir(cd);
for i=1:length(files)
if files(i).isdir & strcmp(files(i).name,‘.’) == 0 && strcmp(files(i).name,‘…’) == 0
addpath([cd ‘/’ files(i).name]);
end
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%功能说明:给定一幅图像,用Fun2训练的SVM分类器,对它进行识别
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%图像类别名
ClassName={‘非洲人’,‘马匹’,‘花杂’,‘大象’,‘恐龙’,‘公交车’,‘古建筑’}; %这些名字,你可以换上具体的名

%1 指定待识别的图像名 (自己改变文件名,观察识别结果是不是正确)
%ImgFileName=‘图像库\测试图像\第1类图像\50.jpg’;
ImgFileName=‘图像库\测试图像\第2类图像\765.jpg’;

%2 对待识别的图像,进行特征提取
Img=imread(ImgFileName);
figure(1),imshow(Img)
[TestData]=ImgFea(Img); %调用此子函数,对图像进行特征提取

%3 图像特征,写入到文件中
[r dim]=size(TestData);
fid=fopen(‘tmp\SvmTest.txt’,‘w’);
for n=1:r
%写入特征
for x=1:dim-1
fprintf(fid, '%d:%0.8f ',x,TestData(n,x));
end
fprintf(fid, ‘%d:%0.8f’,dim,TestData(n,dim));
fprintf(fid, ‘\n’); %换行
end
fclose(fid);
disp(‘SVM测试文件构造成功…’)

%4 SVM测试
%4.1 训练数据归一化处理
system([‘svm\svm-scale.exe -r tmp\尺度模板 tmp\SvmTest.txt > tmp\SvmTest.scale’]);
%4.2 预测
system([‘svm\svm-predict.exe tmp\SvmTest.scale tmp\SVM分类模型.mdl tmp\预测结果.txt’]);
%4.3 读出预测结果
[ypred] = textread(‘tmp\预测结果.txt’, ‘%d’, r);

%5 显示识别结果
disp([‘预测标签:’ num2str(ypred)]);
disp([‘预测类别名:’ char(ClassName(ypred))]);

%在图像上显示识别结果
t=[‘预测标签:’ num2str(ypred) '; ’ char(ClassName(ypred))];
title(t);
%主程序结束

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%功能:提取的特征
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function [FeaBuff]=ImgFea(Img)
[F1]=GLM_Texture(Img); %灰度共生纹理
[F2]=Lab_Histt(Img); %Lab直方图
FeaBuff=[F1 F2]; %FeaBuff为返回的特征向量 26+9=35维向量

效果图

在这里插入图片描述

结果分析

从效果图看,SVM能把数据映射到高维空间,进行回归分析,准确识别出来图片类型,为马匹

扩展

下面是部分SVM可以应用的方面,如果有需要欢迎扫描二维码联系
在这里插入图片描述

参考

百科

  • 3
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

神经网络机器学习智能算法画图绘图

你的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值