matlab实现hog+svm图像二分类

最近因为需要实现hog+svm的分类代码,网上找了一些例子,觉得这篇博客还不错:http://blog.csdn.net/libin88211/article/details/19968205,下面结合该博客写一下步骤,供新手们交流学习~~(如果侵犯了版权问题的话,可以联系删除,尊重作者原创~~)

hog干嘛的?hog就是提取图片特征的。hog源程序参考http://blog.csdn.net/huangli19870217/article/details/7695458

准备工作:

1、创建正阳本文件夹“pos”将正阳本放入

pos文件夹用来存放正阳样本的,下图是我自己准备的(就是一些狗狗的图像)

2、创建负样本文件夹“neg”将负样本放入

neg文件夹用来存放负样本,下图准备的是一些猫的(当然,负样本嘛,随便的,可以是其他的东东,不一定非要是猫,只要正阳样本是狗就行~~)

这里正负样本都是20个。

3、制作正阳本文件列表pos_list.txt

制作参考下图:

4、制作负样本文件列表neg_list.txt

制作参考下图:

5、执行下面程序进行训练,测试

 

clc; 
clear ;  
%% 训练阶段  
ReadList1  = textread('pos_list.txt','%s','delimiter','\n');%载入正样本列表  
sz1=size(ReadList1);  
  
label1=ones(sz1(1),1); %正阳本标签  
ReadList2  = textread('neg_list.txt','%s','delimiter','\n');%载入负样本列表  
sz2=size(ReadList2);  
label2=zeros(sz2(1),1);%负样本标签  
label=[label1',label2']';%标签汇总  
total_num=length(label);  
data=zeros(total_num,1764);  

%读取正样本并计算hog特征  
for i=1:sz1(1)  
   name= char(ReadList1(i,1));  
   image=imread(strcat('D:\daily\冰\机器学习\pos\',name)); 
   im=imresize(image,[64,64]);  
   img=rgb2gray(im);  
   hog =hogcalculator(img);  
   data(i,:)=hog;  
end  

%读取负样本并计算hog特征  
for j=1:sz2(1)  
   name= char(ReadList2(j,1));  
   image=imread(strcat('D:\daily\冰\机器学习\neg\',name));  
   im=imresize(image,[64,64]);  
   img=rgb2gray(im);  
   hog =hogcalculator(img);  
   data(sz1(1)+j,:)=hog;  
end  

[train, test] = crossvalind('holdOut',label);  
cp = classperf(label);  
svmStruct = svmtrain(data(train,:),label(train));  
save svmStruct svmStruct  
classes = svmclassify(svmStruct,data(test,:));  
classperf(cp,classes,test);  
cp.CorrectRate   

%% 训练完成后保存 svmStruct即可对新输入的对象进行分类了无需再执行上面训练阶段代码  
load svmStruct  
test=imread('test.jpg');  
     
im=imresize(test,[64,64]);  
figure;  
imshow(im);  
img=rgb2gray(im);  
hogt =hogcalculator(img);  
classes = svmclassify(svmStruct,hogt);%classes的值即为分类结果  


源代码以及图片文件已经上传CSDN,这里给出链接~~

 

http://download.csdn.net/detail/jcy1009015337/9716482

代码已上传码云:https://gitee.com/ujshenry/machinelearning 欢迎关注下载~~

  • 12
    点赞
  • 177
    收藏
    觉得还不错? 一键收藏
  • 88
    评论
### 回答1: MATLAB是一种计算机程序语言和交互式环境,它可以用于各种数据分析、科学计算和工程设计任务,包括图像分类和目标检测。其中,HOG(方向梯度直方图)和SVM(支持向量机)是两种常见的方法用于图像分类HOG特征表示一张图像中不同方向的梯度信息,并构建一个直方图来表示每个图像块的特征。这种特征提取方法在行人检测和人脸识别等领域得到了较好的应用。在MATLAB中,可以使用图像处理工具箱中的函数来提取HOG特征,并使用机器学习工具箱中的函数来训练分类器。 SVM是一种常用的分类器,它可以将不同类别的图像分开。对于训练样本,SVM可以找到一个最优的超平面将它们分割开来。在MATLAB中,可以使用机器学习工具箱中的函数来训练SVM分类器,并将其用于测试数据的分类。 将HOG特征和SVM分类器结合在一起,可以实现高效的图像分类。在MATLAB中,可以先使用HOG特征提取函数来生成图像特征,然后使用训练好的SVM分类器来实现分类。这种方法在机器视觉和计算机视觉中有广泛的应用,例如行人检测、人脸识别和物体识别等。总之,MATLAB图像分类hog svm方法是一种常用的图像识别方法,在各种不同的应用领域都有很好的表现。 ### 回答2: MATLAB是一款强大的编程软件,其中包括了图像处理和机器学习等领域的工具箱。其中,一种常见的图像分类算法是HOG+SVMHOG(Histogram of Oriented Gradients)提取图像中各个方向的梯度信息,并将其转化为直方图的形式,以描述图像的纹理和形状特征。SVM(Support Vector Machine)则利用这些特征来进行二分类或多分类的决策。这种方法广泛应用于人脸识别、物体检测等图像分类领域,具有较高的准确性和稳定性。在MATLAB中,用户可以通过调用相关函数,如hogFeatureExtractor、trainImageCategoryClassifier等,来实现该算法的图像分类。同时,用户也可以根据实际情况对算法进行优化和改进,例如:引入更多的特征描述符、设置合适的SVM参数等。总之,MATLAB提供了丰富的工具和方法,为用户快速、高效地进行图像分类和机器学习提供了便利。 ### 回答3: HOG-SVM分类器是一种常用的图像分类方法。HOG特征描述子是由Navneet Dalal和Bill Triggs于2005年提出的一种用于图像中物体检测的特征描述子。他们通过传统人工特征提取方法,从人眼视觉能够识别的局部图像特征出发,将图像转换成方向梯度直方图(Histogram of Oriented Gradient, HOG)特征。 HOG特征的提取,是指首先将图像分成很多小的单元格(cell),每个单元格内维护一个梯度方向直方图,然后使用经过分块(block)的梯度直方图来描述每个block中的梯度方向信息,最后将所有的分块信息串起来得到一个用于描述整张图片特征的向量。 SVM分类器则是通过对正负样本数据进行训练,使其能够将各类样本分开的一个分类器。SVM分类器最后将每个测试样本特征向量作为其输入,判定其属于哪个类别,并给出对于属于每个类别的置信度。 在图像分类中,使用HOG-SVM分类器能够实现对于目标物体的自动识别。先对训练数据进行HOG特征提取和SVM训练,训练完毕后,可以对测试数据进行HOG特征提取,并使用训练好的SVM分类器进行物体的分类识别。实验表明,HOG-SVM分类器具有较高的分类准确率和较好的鲁棒性,广泛应用于目标检测、人脸识别等领域。
评论 88
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值