数字验证码识别新思路及对opencv支持向量机机器学习总结

验证码识别框架

在这里插入图片描述

新问题

最近遇到了数字验证码识别的新问题。

由于这次的数字验证码图片有少量变形和倾斜,所以,可能需要积累更多的原始采样进行学习。但按照4个验证码10个数字的理论随机组合(暗含某种数字仅有少量变化,不然此组合数量还应更大),也就是要采样差不多一万张图片;对每个图片适当分割后,那就差不多几万张图片了。想要对这些切割后的图片进行手工分类,成为基本数字的训练学习数据,手工工作量不小,也很无趣。

当时就在想,为什么不能用机器学习的聚类分析来做一部分粗略的前期工作呢?

基本数字图片存在某些相似性,即使无监督的聚类分析,应该可以提供一定程度上的分类。在粗略自动化聚类分析的基础上,选取少量、一部分正确数据作为训练样本,训练完第一个学习器后,利用增强分类能力的学习器,再对切割后的大量基本数字样本进行精确度更高的分类,然后不断迭代此过程进行自举。

随着不断地降低学习素材的噪声,和增大新样本数量提高信息量,是否在某个阶段就可以完成整个过程的自举了,而不用手工分类上万张基本图片了呢?

这个逐步提精和自举的过程,粗略觉得可行,而且至少和上一次的图片验证码走的路子不同,或许可以学到更多的东西。

最后幸运的是,这个新路子验证了猜测和想法,自举了几次后,就能够正确分类所有的数字图片了:)

对于机器学习的新认识

最初,对于这样的有变形的图片数据是否可以被简单的SVM支持向量机学习器识别正确,心内存在疑问,不过,结果还是不错的,依然可以达到100%的识别率。即使使用非线性核的SVM学习器,效果还并不如线性SVM学习器。

可能正如书本中评价SVM支持向量机的那样,对于高维数据,拥有足够稀疏性,本身就可以进行比较好的线性划分

总结

  • 对于线性可分的数据,机器学习器能力都差不多;关键是如何形成线性可分的数据,即特征提取

  • 噪音的降低和信息量的增加,一方面在于去除错误样本,另一方面在于正向增益样本的增多,这是一个信息论的问题!

    • 集成学习多样而不同视角的特性数据,有助于算力窘迫的学习器进行学习
      • 在特性上下文相关时,似乎类似自然语言处理其它的智能技术,亦可以引入考虑

opencv的AI包

对于初步学习机器学习的朋友,可以利用opencv提供的机器学习组件,就可以完成一定程度的认知。

opency的机器学习包括了聚类分析、SVM支持向量机和KNN聚类分析,对于一般的机器学习应用也是足够的!

SVM支持向量机深入认识

SVM支持向量机学习器对采样数据,仅能经过一层的处理,这点要弱于CNN神经网络学习器。

可以认为,CNN神经网络能够对原始数据进行更多层的处理,特别是大量参数化的特性选取、抽取。

相比较于SVM的采样数据,必须就已经是线性可分,或者利用恰当的非线性核可进行处理,不然,就达不到有效的效果。

在你不拥有超强算力的时间,我的初步想法是,如果你可以对采样数据,做很多不同视角的特性抽取,可利用人类知识,或领域专家知识,即使是一些识别正确率不高的特性数据,利用集成学习加线性支持向量机的组合方法,应该依然可以取得比较好的学习效果!

异或分类问题

对于最简单的异或性质的分类,线性SVM也类似感知机,不能具有非常好的效果,需要核化方法的支持

CNN神经网络的认识

CNN神经网络学习,可以看成对第一层输入的全信息图片能够进行学习。一般这些特性规则无法用算法描述,利用CNN神经网络进行学习处理,包括了可参数化的特性的抽取和选取,通常具有较好的效果。 但如果输入并非全信息,我想CNN也会徒呼奈何的!

对比SVM来说,如果在一个相对比较容易降噪和特性抽取的领域,SVM也会具有非常好的效果

采样数据的全信息特性很重要

细微地方

  • 为了增强基本数字图片中零值的数量,采用了阈值反向翻转的策略,使得图片中未提供信息的像素点值全部为零
  • 同时opencv对图片机器学习,采用简单的拼接多行成为一行多维数据的做法,根据数字的形状特点,对于数字图片进行矩阵转置,可以将零值和非零信息更密集地集中在一些区域,可能会造成更好的聚性数据
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: OpenCV是一个开放源代码的图像处理库,也支持机器学习和模式识别等领域的算法。其中包括支持向量机(Support Vector Machine, SVM)算法,可以用于非线性回归任务。 支持向量机是一种常见的机器学习算法,可以用于分类和回归问题。在回归任务中,支持向量机可以用于建立非线性回归模型。 OpenCV中的支持向量机非线性回归主要基于核函数方法。核函数可以将非线性问题转化为高维空间中的线性问题,这样就可以使用线性回归模型进行建模。OpenCV提供了多种核函数供选择,如线性核函数、多项式核函数和径向基函数(Radial Basis Function, RBF)核函数等。 使用OpenCV进行支持向量机非线性回归的步骤大致如下: 1. 收集回归数据集,并根据需求进行预处理,如数据归一化。 2. 创建一个支持向量机模型对象,通过设置相关参数,如核函数类型、惩罚因子等,来进行模型配置。 3. 使用训练数据集训练支持向量机模型。 4. 使用训练好的模型进行预测,得到回归结果。 5. 根据需要,可以对模型进行进一步优化、调参等。 通过OpenCV支持向量机非线性回归功能,我们可以在处理非线性回归问题时,利用支持向量机算法建立准确性较高的模型。这样可以对各种复杂的非线性数据进行准确的回归预测,并能适应不同的核函数和其它参数配置的需求。 ### 回答2: OpenCV库是一种广泛使用的开源计算机视觉和机器学习库,其中包括了支持向量机(SVM)算法,可以用于非线性回归。 支持向量机是一种监督学习模型,用于分类和回归问题。在线性回归问题中,我们试图找到最佳的直线或平面来拟合数据。然而,在某些情况下,数据可能无法线性分割,这就需要使用非线性回归算法,如支持向量机OpenCV中的支持向量机实现的一个关键概念是核函数。核函数可以将数据从输入空间(原始特征空间)映射到一个更高维的特征空间,这样可以使数据在更高维度的空间中变得线性可分。OpenCV提供了多个核函数选项,如径向基函数(RBF)核、多项式核等,这些核函数可以根据问题的要求进行选择。 在使用OpenCV进行非线性回归时,我们首先需要准备训练数据和测试数据。然后,我们可以选择适当的核函数,并通过调整一些参数(如核函数的参数、惩罚因子等)来训练支持向量机模型。训练完成后,我们可以使用模型来预测新的数据样本。 总之,OpenCV库提供了支持向量机算法的实现,以解决非线性回归问题。通过选择适当的核函数和调整参数,可以构建一个准确的非线性回归模型,从而在计算机视觉和机器学习任务中提供更好的性能和结果。 ### 回答3: OpenCV是一个广泛应用于计算机视觉和图像处理领域的开源库。它不仅支持常见的图像处理功能,还包括机器学习算法。其中,OpenCV也提供了对支持向量机(Support Vector Machine,SVM)的支持,包括非线性回归。 支持向量机是一种常用的机器学习算法,旨在通过寻找最优的超平面,将数据点划分成不同的类别。在线性回归中,SVM可以用于从给定的数据集中预测一个连续性的输出变量。然而,有时候数据集并不是线性可分的,这时就需要通过非线性回归来解决这个问题。 在OpenCV中,支持向量机非线性回归通过使用内核函数来实现。内核函数的作用是将训练数据从原始特征空间映射到更高维的特征空间,使得数据在新的空间中能够线性可分。常见的内核函数包括多项式函数、径向基函数和Sigmoid函数等。 使用OpenCV进行支持向量机非线性回归的步骤主要有以下几个: 1. 准备训练数据集,包括输入变量X和输出变量y。 2. 创建一个SVM对象,并设置相关参数,如内核函数和惩罚参数等。 3. 调用SVM对象的训练方法,输入训练数据集,训练出一个SVM模型。 4. 对新的输入数据进行预测,可以使用SVM对象的predict方法,得到相应的输出结果。 总之,OpenCV支持向量机非线性回归提供了一种有效的工具来处理非线性可分的数据集。通过选择合适的内核函数和参数设置,可以在计算机视觉和图像处理等领域中应用SVM算法,实现准确的预测和分类任务。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值