目标检测的图像特征提取之(一)HOG特征

<div class="article_content csdn-tracking-statistics" id="article_content" style="overflow: hidden;" data-mod="popu_307" data-pid="blog" data-dsm="post">
<p><strong><span style="font-size:14px"><span style="font-family:Calibri">1</span>、<span style="font-family:Calibri">HOG</span>特征:</span></strong></p>
<p><span style="font-size:14px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 方向梯度直方图(<span style="font-family:Calibri">Histogram of Oriented Gradient, HOG</span>)特征是一种在计算机视觉和图像处理中用来进行物体检测的特征描述子。它通过计算和统计图像局部区域的梯度方向直方图来构成特征。<span style="font-family:Calibri">Hog</span>特征结合<span style="font-family:Calibri">SVM</span>分类器已经被广泛应用于图像识别中,尤其在行人检测中获得了极大的成功。需要提醒的是,<span style="font-family:Calibri">HOG+SVM</span>进行行人检测的方法是法国研究人员<span style="font-family:Calibri">Dalal</span>在<span style="font-family:Calibri">2005</span>的<span style="font-family:Calibri">CVPR</span>上提出的,而如今虽然有很多行人检测算法不断提出,但基本都是以<span style="font-family:Calibri">HOG+SVM</span>的思路为主。</span></p>
<p><strong><span style="font-size:14px">(<span style="font-family:Calibri">1</span>)主要思想:</span></strong></p>
<p><span style="font-size:14px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在一副图像中,局部目标的表象和形状(<span style="font-family:Calibri">appearance and shape</span>)能够被梯度或边缘的方向密度分布很好地描述。(本质:梯度的统计信息,而梯度主要存在于边缘的地方)。</span></p>
<p><strong><span style="font-size:14px">(<span style="font-family:Calibri">2</span>)具体的实现方法是:</span></strong></p>
<p><span style="font-size:14px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 首先将图像分成小的连通区域,我们把它叫细胞单元。然后采集细胞单元中各像素点的梯度的或边缘的方向直方图。最后把这些直方图组合起来就可以构成特征描述器。</span></p>
<p><strong><span style="font-size:14px">(<span style="font-family:Calibri">3</span>)提高性能:</span></strong></p>
<p><span style="font-size:14px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 把这些局部直方图在图像的更大的范围内(我们把它叫区间或<span style="font-family:Calibri">block</span>)进行对比度归一化(<span style="font-family:Calibri">contrast-normalized</span>),所采用的方法是:先计算各直方图在这个区间(<span style="font-family:Calibri">block</span>)中的密度,然后根据这个密度对区间中的各个细胞单元做归一化。通过这个归一化后,能对光照变化和阴影获得更好的效果。</span></p>
<p><strong><span style="font-size:14px">(<span style="font-family:Calibri">4</span>)优点:</span></strong></p>
<p><span style="font-size:14px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 与其他的特征描述方法相比,<span style="font-family:Calibri">HOG</span>有很多优点。首先,由于<span style="font-family:Calibri">HOG</span>是在图像的局部方格单元上操作,所以它对图像几何的和光学的形变都能保持很好的不变性,这两种形变只会出现在更大的空间领域上。其次,在粗的空域抽样、精细的方向抽样以及较强的局部光学归一化等条件下,只要行人大体上能够保持直立的姿势,可以容许行人有一些细微的肢体动作,这些细微的动作可以被忽略而不影响检测效果。因此<span style="font-family:Calibri">HOG</span>特征是特别适合于做图像中的人体检测的。</span></p>
<p><span style="font-family:Calibri; font-size:14px">&nbsp;</span></p>
<p><strong><span style="font-size:14px"><span style="font-family:Calibri">2</span>、<span style="font-family:Calibri">HOG</span>特征提取算法的实现过程:</span></strong></p>
<p><strong><span style="font-size:14px">大概过程:</span></strong></p>
<p><span style="font-size:14px"><span style="font-family:Calibri">HOG</span>特征提取方法就是将一个<span style="font-family:Calibri">image</span>(你要检测的目标或者扫描窗口):</span></p>
<p><span style="font-size:14px"><span style="font-family:Calibri">1</span>)灰度化(将图像看做一个<span style="font-family:Calibri">x,y,z</span>(灰度)的三维图像);</span></p>
<p><span style="font-size:14px"><span style="font-family:Calibri">2</span>)采用<span style="font-family:Calibri">Gamma</span>校正法对输入图像进行颜色空间的标准化(归一化);目的是调节图像的对比度,降低图像局部的阴影和光照变化所造成的影响,同时可以抑制噪音的干扰;</span></p>
<p><span style="font-size:14px"><span style="font-family:Calibri">3</span>)计算图像每个像素的梯度(包括大小和方向);主要是为了捕获轮廓信息,同时进一步弱化光照的干扰。</span></p>
<p><span style="font-size:14px"><span style="font-family:Calibri">4</span>)将图像划分成小<span style="font-family:Calibri">cells</span>(例如<span style="font-family:Calibri">6*6</span>像素<span style="font-family:Calibri">/cell</span>);</span></p>
<p><span style="font-size:14px"><span style="font-family:Calibri">5</span>)统计每个<span style="font-family:Calibri">cell</span>的梯度直方图(不同梯度的个数),即可形成每个<span style="font-family:Calibri">cell</span>的<span style="font-family:Calibri">descriptor</span>;</span></p>
<p><span style="font-size:14px"><span style="font-family:Calibri">6</span>)将每几个<span style="font-family:Calibri">cell</span>组成一个<span style="font-family:Calibri">block</span>(例如<span style="font-family:Calibri">3*3</span>个<span style="font-family:Calibri">cell/block</span>),一个<span style="font-family:Calibri">block</span>内所有<span style="font-family:Calibri">cell</span>的特征<span style="font-family:Calibri">descriptor</span>串联起来便得到该<span style="font-family:Calibri">block</span>的<span style="font-family:Calibri">HOG</span>特征<span style="font-family:Calibri">descriptor</span>。</span></p>
<p><span style="font-size:14px"><span style="font-family:Calibri">7</span>)将图像<span style="font-family:Calibri">image</span>内的所有<span style="font-family:Calibri">block</span>的<span style="font-family:Calibri">HOG</span>特征<span style="font-family:Calibri">descriptor</span>串联起来就可以得到该<span style="font-family:Calibri">image</span>(你要检测的目标)的<span style="font-family:Calibri">HOG</span>特征<span style="font-family:Calibri">descriptor</span>了。这个就是最终的可供分类使用的特征向量了。</span></p>
<p><strong><span style="font-size:14px"></span></strong></p>
<p><strong><span style="font-family:Calibri; font-size:14px">&nbsp;<img alt="" src="https://img-my.csdn.net/uploads/201208/31/1346396859_7322.jpg"></span></strong></p>
<p><strong><span style="font-family:Calibri"></span></strong><span style="font-size:14px">&nbsp;</span></p>
<p><strong><span style="font-size:14px">具体每一步的详细过程如下:</span></strong></p>
<p><strong><span style="font-size:14px">(<span style="font-family:Calibri">1</span>)标准化<span style="font-family:Calibri">gamma</span>空间和颜色空间</span></strong></p>
<p><span style="font-size:14px"><span style="font-family:Calibri">&nbsp;&nbsp;&nbsp;&nbsp; </span>为了减少光照因素的影响,首先需要将整个图像进行规范化(归一化)。在图像的纹理强度中,局部的表层曝光贡献的比重较大,所以,这种压缩处理能够有效地降低图像局部的阴影和光照变化。因为颜色信息作用不大,通常先转化为灰度图;</span></p>
<p><span style="font-size:14px"><span style="font-family:Calibri">&nbsp;&nbsp;&nbsp;&nbsp; Gamma</span>压缩公式:</span></p>
<p><span style="font-size:14px"><img alt="" src="https://img-my.csdn.net/uploads/201208/31/1346396938_1310.jpg"></span></p>
<p><span style="font-size:14px"><span style="font-family:Calibri">&nbsp;&nbsp;&nbsp;&nbsp; </span>比如可以取<span style="font-family:Calibri">Gamma=1/2</span>;</span></p>
<p><span style="font-family:Calibri; font-size:14px">&nbsp;</span></p>
<p><strong><span style="font-size:14px">(<span style="font-family:Calibri">2</span>)计算图像梯度</span></strong></p>
<p><span style="font-size:14px"><span style="font-family:Calibri">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
计算图像横坐标和纵坐标方向的梯度,并据此计算每个像素位置的梯度方向值;求导操作不仅能够捕获轮廓,人影和一些纹理信息,还能进一步弱化光照的影响。</span></p>
<p><span style="font-size:14px">图像中像素点<span style="font-family:Calibri">(x,y)</span>的梯度为:</span></p>
<p><span style="font-size:14px"><img width="640" alt="" src="https://img-my.csdn.net/uploads/201208/31/1346396961_6062.jpg"></span></p>
<p><span style="font-size:14px"></span></p>
<p><span style="font-size:14px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 最常用的方法是:首先用<span style="font-family:Calibri">[-1,0,1]</span>梯度算子对原图像做卷积运算,得到<span style="font-family:Calibri">x</span>方向(水平方向,以向右为正方向)的梯度分量<span style="font-family:Calibri">gradscalx</span>,然后用<span style="font-family:Calibri">[1,0,-1]<sup>T</sup></span>梯度算子对原图像做卷积运算,得到<span style="font-family:Calibri">y</span>方向(竖直方向,以向上为正方向)的梯度分量<span style="font-family:Calibri">gradscaly</span>。然后再用以上公式计算该像素点的梯度大小和方向。</span></p>
<p><span style="font-family:Calibri; font-size:14px">&nbsp;</span></p>
<p><strong><span style="font-size:14px">(<span style="font-family:Calibri">3</span>)为每个细胞单元构建梯度方向直方图</span></strong></p>
<p><span style="font-size:14px"><span style="font-family:Calibri">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
第三步的目的是为局部图像区域提供一个编码,同时能够保持对图像中人体对象的姿势和外观的弱敏感性。</span></p>
<p><span style="font-size:14px">我们将图像分成若干个“单元格<span style="font-family:Calibri">cell</span>”,例如每个<span style="font-family:Calibri">cell</span>为<span style="font-family:Calibri">6*6</span>个像素。假设我们采用<span style="font-family:Calibri">9</span>个<span style="font-family:Calibri">bin</span>的直方图来统计这<span style="font-family:Calibri">6*6</span>个像素的梯度信息。也就是将<span style="font-family:Calibri">cell</span>的梯度方向<span style="font-family:Calibri">360</span>度分成<span style="font-family:Calibri">9</span>个方向块,如图所示:例如:如果这个像素的梯度方向是<span style="font-family:Calibri">20-40</span>度,直方图第<span style="font-family:Calibri">2</span>个<span style="font-family:Calibri">bin</span>的计数就加一,这样,对<span style="font-family:Calibri">cell</span>内每个像素用梯度方向在直方图中进行加权投影(映射到固定的角度范围),就可以得到这个<span style="font-family:Calibri">cell</span>的梯度方向直方图了,就是该<span style="font-family:Calibri">cell</span>对应的<span style="font-family:Calibri">9</span>维特征向量(因为有<span style="font-family:Calibri">9</span>个<span style="font-family:Calibri">bin</span>)。</span></p>
<p><span style="font-size:14px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;像素梯度方向用到了,那么梯度大小呢?梯度大小就是作为投影的权值的。例如说:这个像素的梯度方向是<span style="font-family:Calibri">20-40</span>度,然后它的梯度大小是<span style="font-family:Calibri">2</span>(假设啊),那么直方图第<span style="font-family:Calibri">2</span>个<span style="font-family:Calibri">bin</span>的计数就不是加一了,而是加二(假设啊)。</span></p>
<p><span style="font-size:14px"><img alt="" src="https://img-my.csdn.net/uploads/201208/31/1346397019_3404.jpg"></span></p>
<p><span style="font-size:14px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 细胞单元可以是矩形的(<span style="font-family:Calibri">rectangular</span>),也可以是星形的(<span style="font-family:Calibri">radial</span>)。</span></p>
<p><span style="font-family:Calibri; font-size:14px">&nbsp;</span></p>
<p><span style="font-size:14px"><strong>(<span style="font-family:Calibri">4</span>)把细胞单元组合成大的块(<span style="font-family:Calibri">block</span>),块内归一化梯度直方图</strong><span style="font-family:Calibri"><strong></strong></span></span></p>
<p><span style="font-size:14px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 由于局部光照的变化以及前景<span style="font-family:Calibri">-</span>背景对比度的变化,使得梯度强度的变化范围非常大。这就需要对梯度强度做归一化。归一化能够进一步地对光照、阴影和边缘进行压缩。</span></p>
<p><span style="font-size:14px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 作者采取的办法是:把各个细胞单元组合成大的、空间上连通的区间(<span style="font-family:Calibri">blocks</span>)。这样,一个<span style="font-family:Calibri">block</span>内所有<span style="font-family:Calibri">cell</span>的特征向量串联起来便得到该<span style="font-family:Calibri">block</span>的<span style="font-family:Calibri">HOG</span>特征。这些区间是互有重叠的,这就意味着:每一个单元格的特征会以不同的结果多次出现在最后的特征向量中。我们将归一化之后的块描述符(向量)就称之为<span style="font-family:Calibri">HOG</span>描述符。</span></p>
<p><span style="font-size:14px"><img alt="" src="https://img-my.csdn.net/uploads/201208/31/1346397084_4646.jpg"></span></p>
<p><span style="font-size:14px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 区间有两个主要的几何形状——矩形区间(<span style="font-family:Calibri">R-HOG</span>)和环形区间(<span style="font-family:Calibri">C-HOG</span>)。<span style="font-family:Calibri">R-HOG</span>区间大体上是一些方形的格子,它可以有三个参数来表征:每个区间中细胞单元的数目、每个细胞单元中像素点的数目、每个细胞的直方图通道数目。</span></p>
<p><span style="font-size:14px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 例如:行人检测的最佳参数设置是:<span style="font-family:Calibri">3</span>×<span style="font-family:Calibri">3</span>细胞<span style="font-family:Calibri">/</span>区间、<span style="font-family:Calibri">6</span>×<span style="font-family:Calibri">6</span>像素<span style="font-family:Calibri">/</span>细胞、<span style="font-family:Calibri">9</span>个直方图通道。则一块的特征数为:<span style="font-family:Calibri">3*3*9</span>;</span></p>
<p><span style="font-family:Calibri; font-size:14px">&nbsp;</span></p>
<p><strong><span style="font-size:14px">(<span style="font-family:Calibri">5</span>)收集<span style="font-family:Calibri">HOG</span>特征</span></strong></p>
<p><span style="font-size:14px"><span style="font-family:Calibri">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>最后一步就是将检测窗口中所有重叠的块进行<span style="font-family:Calibri">HOG</span>特征的收集,并将它们结合成最终的特征向量供分类使用。</span></p>
<p><span style="font-family:Calibri; font-size:14px">&nbsp;&nbsp;&nbsp;&nbsp; </span></p>
<p><strong><span style="font-size:14px">(<span style="font-family:Calibri">6</span>)那么一个图像的<span style="font-family:Calibri">HOG</span>特征维数是多少呢?</span></strong></p>
<p><span style="font-size:14px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 顺便做个总结:<span style="font-family:Calibri">Dalal</span>提出的<span style="font-family:Calibri">Hog</span>特征提取的过程:把样本图像分割为若干个像素的单元(<span style="font-family:Calibri">cell</span>),把梯度方向平均划分为<span style="font-family:Calibri">9</span>个区间(<span style="font-family:Calibri">bin</span>),在每个单元里面对所有像素的梯度方向在各个方向区间进行直方图统计,得到一个<span style="font-family:Calibri">9</span>维的特征向量,每相邻的<span style="font-family:Calibri">4</span>个单元构成一个块(<span style="font-family:Calibri">block</span>),把一个块内的特征向量联起来得到<span style="font-family:Calibri">36</span>维的特征向量,用块对样本图像进行扫描,扫描步长为一个单元。最后将所有块的特征串联起来,就得到了人体的特征。例如,对于<span style="font-family:Calibri">64*128</span>的图像而言,<span style="background-color:#3366ff">每<span style="font-family:Calibri">8*8</span>的像素组成一个<span style="font-family:Calibri">cell</span></span>,每<span style="font-family:Calibri">2*2</span>个<span style="font-family:Calibri">cell</span>组成一个块,因为每个<span style="font-family:Calibri">cell</span>有<span style="font-family:Calibri">9</span>个特征,所以每个块内有<span style="font-family:Calibri">4*9=36</span>个特征,以<span style="font-family:Calibri">8</span>个像素为步长,那么,水平方向将有<span style="font-family:Calibri">7</span>个扫描窗口,垂直方向将有<span style="font-family:Calibri">15</span>个扫描窗口。也就是说,<span style="font-family:Calibri">64*128</span>的图片,总共有<span style="font-family:Calibri">36*7*15=3780</span>个特征。</span></p>
<p><span style="background-color:#66ff99">HOG维数,16×16像素组成的block,8x8像素的cell</span></p>
<p><span style="background-color:#66ff99"></span>&nbsp;</p>
<p><span style="background-color:#66ff99">注释:</span></p>
<h2 class="titName SG_txta" id="t_7897fb69010196kl">行人检测HOG+SVM</h2>
<p>总体思路:<br>
1、提取正负样本hog特征<br>
2、投入svm分类器训练,得到model<br>
3、由model生成检测子<br>
4、利用检测子检测负样本,得到hardexample<br>
5、提取hardexample的hog特征并结合第一步中的特征一起投入训练,得到最终检测子。<br>
<br>
深入研究hog算法原理:<br>
一、hog概述 </p>
<div>Histograms of Oriented Gradients,顾名思义,方向梯度直方图,是目标的一种描述的方式,既是描述子。</div>
<div>二、hog提出<br>
hog是05年一位nb的博士提出来的,论文链接&nbsp;<wbr>http://wenku.baidu.com/view/676f2351f01dc281e53af0b2<wbr>.html</div>
<div>三、算法理解<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 终于到10月了,终于可以松一口气了,整理一下hog的算法流程。</div>
<div>首先要有一个整体的认识,每一个目标都对应一个一维特征向量,这个向量一共有n维,这个n不是凭空瞎猜的,是有理有据,<span style="background-color:#66ff99">打个比方,为什么opencv自带的hog检测子是3781维的?这个问题在初期确实比较头疼,纠结了好长的时间,不过别着急,</span></div>
<div>我们先来看一下opencv里的HOGDescriptor这个结构的构造函数HOGDescriptor(Size&nbsp;<wbr>winSize,Size blocksize,Size blockStride,Size cellSize,...(后面的参数在这里用不到)),去查一下opencv默认的参数我们可以看到,winSize(64,128),blockSize(16,16),blockStride(8,8),cellSize(8,8),很显然hog是将一个特征窗口win划分为很多的块block,在每一个块里又划分为很多的细胞单元cell(即胞元),hog特征向量既是把这些所有的cell对应的小特征串起来得到一个高维的特征向量,那么这个窗口对应的一维特征向量维数n就等于窗口中的块数
 x 块中的胞元数 &nbsp;<wbr>x 每一个胞元对应的特征向量数。</div>
<div>写到这里,<span style="background-color:#33ffff">我们计算一下3781如何得到的</span>,窗口大小64x128,块大小16x16,块步长8x8,<span style="background-color:#ffff66">那么窗口中块的数目是((64-16)/8+1)*((128-16)/8+1) = 7*15 =<span style="color:#ff2606">105个块</span></span>,块大小为16x16,胞元大小为8x8,那么一个块中的胞元cell数目是
 (16/8)*(16/8) =<span style="color:#ff0000">4个胞元</span>,到这里我们可以看到要求最后需要的维数n,只需要计算每一个胞元对应的向量,这个参数在哪呢?别急,我们把每一个胞元投影到9个bin(如何投影?这里卡了很长一段时间,后面会说),那么每一个胞元对应的向量就是<span style="color:#ff0000">9维</span>,每个bin对应该9维向量的一个数,现在看一下是不是计算窗口维数的三个需求量都知道了,n =&nbsp;<wbr><span style="line-height:21px">窗口中的块数
 x 块中的胞元数 &nbsp;<wbr>x 每一个胞元对应的特征向量数,带入看一下n= 105x4x9 = 3780,这就是这个窗口对应的特征了。有人会说,<span style="background-color:#ffffcc">为什么opencv里的getDefaultPeopleDetector<wbr>()得到的是3781维呢?这是因为另外一维是一维偏移,(很崩溃是吧,我也崩溃很久。。。,下一段解释)。</span></span></div>
<div><span style="line-height:21px">我们利用hog+svm检测行人,最终的检测方法是最基本的线性判别函数,wx + b = 0,刚才所求的3780维向量其实就是w,而加了一维的b就形成了opencv默认的3781维检测算子,而检测分为train和test两部分,在train期间我们需要提取一些列训练样本的hog特征使用svm训练最终的目的是为了得到我们检测的w以及b,在test期间提取待检测目标的hog特征x,带入方程是不是就能进行判别了呢?</span></div>
<div><span style="line-height:21px">**************************************************************************************************</span></div>
<div><span style="line-height:21px">&nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr>华丽的分割线</span></div>
<div><span style="line-height:21px">写到这里,至少对hog的运作流程有了一个大概的认识,在网上能看到很多的hog计算方法,神马归一化,计算梯度,对每个胞元进行投影,千篇一律,对刚开始接触的人来说,看完好像懂了,但就是不知道怎么用,hog和svm如何配合,而且那些东西对我们的初期的学期完全没用,好处就是会用hog了,再回过头去看原理,才有收获,那些资料网上一堆,这里就不画蛇添足了。</span></div>
<div><span style="line-height:21px">另外值得一提的是在计算胞元特征的时候,需要向各个bin投影,这个投影里面大有文章,师兄毕业论文里就提到了,取名叫‘三维一次线性插值’,如果想深入了解hog的可以仔细琢磨去。</span></div>
<div><span style="line-height:21px">**************************************************************************************************</span></div>
<div><span style="line-height:21px">&nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr>继续华丽的分割</span></div>
<div><span style="line-height:21px">下面说一下libsvm和CvSVM的使用,我觉得libsvm更好用,不过cvsvm也是基于libsvm2.6(没记错的话)改写的,这两个的区别就是libsvm训练得到的是一个model,而cvsvm是xml文件,在计算最后的wx+b=0中的w向量的时候,对于libsvm直接处理model文件即可,但是对于cvsvm则可以跳过产生xml文件,直接使用cvsvm的对象中的属性即可(这里说的有点模糊,二者选一个即可,关系倒不是很大)</span></div>
<div>欢迎大家批评指正、交流学习</div>
<p><span style="background-color:#66ff99"><span style="background-color:#ffffff"></span></span>&nbsp;</p>
  
</div>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值