Object Recognition and Scene Understanding(三)SVM

本文深入探讨了支持向量机在手写字符识别领域的应用,包括其基本原理、关键概念以及实际操作步骤。通过Matlab安装使用libsvm的指南,介绍了如何在实践中学以致用。此外,文章还提供了机器学习UCI数据库资源,以及详细的SVM应用案例,旨在帮助读者全面理解并掌握支持向量机在模式识别任务中的应用。

支持向量机,多年以来在模式识别上的最大发现,当然其利用核函数来寻找最优的分类的思路存在一定的局限性,但一定程度上解决了很多问题。关于支持向量机在模式识别领域的前世今生,可以参考谭铁牛等的论文。关于libsvm就去看台湾大牛的网页吧,faruto在如何应用libsvm上也有出彩的介绍。这里就不一一列出了。

 

1.之前的一些介绍

libsvm的安装,参考我之前发的小文Matlab安装使用libsvm:http://blog.youkuaiyun.com/loadstar_kun/article/details/7712308

机器学习可用的数据库:机器学习UCI数据库:http://blog.youkuaiyun.com/loadstar_kun/article/details/7712327

 

2. 支持向量机简单介绍

http://blog.youkuaiyun.com/carson2005/article/details/6453502

支持向量机SVM是从线性可分情况下的最优分类面提出的。所谓最优分类,就是要求分类线不但能够将两类无错误的分开,而且两类之间的分类间隔最大,前者是保证经验风险最小(为0),而通过后面的讨论我们看到,使分类间隔最大实际上就是使得推广性中的置信范围最小。推广到高维空间,最优分类线就成为最优分类面。

    支持向量机是利用分类间隔的思想进行训练的,它依赖于对数据的预处理,即,在更高维的空间表达原始模式。通过适当的到一个足够高维的非线性映射,分别属于两类的原始数据就能够被一个超平面来分隔。如下图所示:

       

空心点和实心点分别代表两个不同的类,H为将两类没有错误的区分开的分类面,同时,它也是一个最优的分类面。原因正如前面所述,当以H为分类面时,分类间隔最大,误差最小。而这里的之间的距离margin就是两类之间的分类间隔。支持向量机将数据从原始空间映射到高维空间的目的就是找到一个最优的分类面从而使得分类间隔margin最大。而那些定义最优分类超平面的训练样本,也就是上图中过的空心点和实心点,就是支持向量机理论中所说的支持向量。显然,所谓支持向量其实就是最难被分类的那些向量,然而,从另一个角度来看,它们同时也是对求解分类任务最有价值的模式。

    支持向量机的基本思想可以概括为:首先通过非线性变换将输入空间变换到一个高维空间,然后在这个新空间中求取最优线性分类面,而这种非线性变换是通过定义适当的内积函数来实现的。支持向量机求得的分类函数形式上类似于一个神经网络,其输出是若干中间层节点的线性组合,而每一个中间层节点对应于输入样本与一个支持向量的内积,因此也被叫做支持向量网络。如下图所示:

由于最终的判别函数中实际只包含于支持向量的内积和求和,因此判别分类的计算复杂度取决于支持向量的个数。

不难发现,支持向量机作为统计学习理论中的经典代表使用了与传统方法完全不同的思路,即不是像传统方法那样首先试图将原输入空间降维(即特征选择和特征变换),而是设法将输入空间升维,以求在高维空间中问题变得线性可分或接近线性可分。因为升维知识改变了内积运算,并没有使得算法的复杂性随着维数的增加而增加,而且在高维空间中的推广能力并不受到维数的影响。     

    另外,需要说明的是,支持向量机采用不同的内积函数,将导致不同的支持向量机算法

目前得到研究的内积函数主要有以下三类:

(1)采用多项式形式的内积函数;

(2)采用核函数形式的内积函数;

    (3)采用S形函数作为内积函数;

 

3. 利用SVM做手写字符识别

参考之前博文:学习OpenCV——SVM 手写数字检测:http://blog.youkuaiyun.com/loadstar_kun/article/details/7718120

 

### 关于目标检测 (Object Detection) 和对象级场景识别 (Object-level Scene Recognition) 的实验步骤 #### 1. 数据准备阶段 在目标检测和对象级场景识别的任务中,数据的质量直接影响到最终模型的表现。通常需要完成以下操作: - **数据集选择**:选取适合任务的数据集,例如 COCO、Pascal VOC 或者自定义标注数据集[^1]。 - **数据预处理**:包括图像尺寸调整、颜色通道标准化以及标签格式转换等。对于目标检测任务,还需要将边界框坐标从原始格式转化为模型所需的格式。 ```python import cv2 import numpy as np def preprocess_image(image_path, target_size=(416, 416)): image = cv2.imread(image_path) resized_image = cv2.resize(image, target_size) normalized_image = resized_image / 255.0 return np.expand_dims(normalized_image, axis=0) image_data = preprocess_image('path_to_image.jpg') ``` #### 2. 模型设计与实现 现代目标检测框架主要由个部分组成:主干网络(Backbone)、头部结构(Head)以及后处理逻辑(Post-process)。以下是具体的设计思路: - **主干网络的选择**:常用的骨干网络有 ResNet、MobileNet 等,它们负责提取图像的基础特征。 - **头部模块开发**:这部分涉及生成候选区域(Region Proposal Network, RPN)或者直接预测边界框位置及类别概率。例如 Faster RCNN 使用两阶段机制先生成 proposal 后再分类,而 YOLO 则采用单阶段端到端的方式[^2]。 #### 3. 训练配置 设置合理的超参数组合能够显著提升性能表现: - 学习率调度策略; - 批量大小设定; - 权重衰减系数调节等等。 ```python from tensorflow.keras.optimizers import Adam optimizer = Adam(learning_rate=0.0001) model.compile(optimizer=optimizer, loss='categorical_crossentropy', metrics=['accuracy']) history = model.fit(train_dataset, epochs=num_epochs, validation_data=val_dataset) ``` #### 4. 测试评估 利用多种指标全面衡量算法效果,比如平均精度均值 mAP(mean Average Precision),召回率 Recall 等统计数值来反映系统的优劣程度。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值