博客第一弹 ---- opencv 基于hog特征训练二分类器

博客第一弹 ---- opencv 基于hog特征训练二分类器

成为算法工程师的第一年,很感恩csdn众多博客对我的帮助,现在也想分享一些错误纠察和训练记录,一方面方便自己理清工作思路和进展,一方面为和我一样初始进入图像算法学习的人一点小帮助。

  1. 基于hog特征训练二分类器;
  2. 样本整理;
  3. 代码解读;
  4. 结果分析;

一 基于hog特征训练二分类器:

首先选择应用最广泛使用的hog特征来训练二分类器。HOG特征是通过计算和统计图像局部区域的梯度方向直方图来构成特征。有如下优点:
1 HOG是 在图像的局部方格单元(细胞单元)上操作,所以它对图像几何和光学的形变都能保持很好的不变性,这两种形变只会出现在更大的空间领域上。
2 在粗的空域抽样、精细 的方向抽样以及较强的局部光学归一化等条件下,只要目标大体上能够保持直立的姿势,可以容许目标有一些细微变化,这些细微的动作可以被忽略而不影响 检测效果。
3 具体的hog特征提取办法百度百科非常清楚。(附网址:https://baike.so.com/doc/25062397-26034415.html)

二 样本整理:

源码及教程网址:https://www.xuebuyuan.com/3180955.html 首先以上文中所附样本做了代码测试,验证识别没有问题,代码运行正常。后整理自己样本以供训练。
1 正样本 首先做了图像裁剪,得到只包含目标物体的样本集,可以不固定尺寸,后续在代码中resize,批处理生成包含所有正样本名称的pos.txt。待检图片比较大,检测窗口做了放大,128*128,其余参数以默认值进行。
2 负样本 同样裁剪的图片及neg.txt,我的目标模型是识别待检测物体是否包含某种属性。
我有两组样本,一组为手动标定框后随机裁剪的样本a(pos:111,neg:430),一组为固定图片位置裁剪样本b(不是很准确 pos:520,neg:1050)

三 代码解读:

上文的源码比较简单标注的也很清楚,训练中开始一直有opencv错误,一般是图片路径问题或者opencv的配置问题,需要细心更正为自己的路径。后来循环计算图像特征值时,记算一张就在结尾步的大括号处奔溃,一步一步注掉代码才发现是hog.compute 有问题,后来修改配置属性—c/c+±–代码生成—运行库为MDd问题消失。
配置opencv 主要是c/c++中附加包含目录中的include ,链接器常规中的连接器依赖项lib及输入的附加依赖项。

四 结果分析:

1 样本a训练及同样本测试:模型分类失败,所有样本都识别为负样本,猜测原因是样本过少导致。
2 样本b训练及同样本测试:模型分类成功,正样本401/520,负样本 993/1050. 正样本识别率77.12%
3 样本a+样本b训练及b样本测试: 模型分类成功,正样本372/520,负样本 1000/1050. 正样本识别率71.54%下降,负样本识别率增加。
样本a+样本b训练及同样本测试: 模型分类成功,正样本378/631,负样本 1430/1480. 正样本识别率59.90%下降,负样本识别率增加。
总结:准确样本的增加反而使训练结果变差,还需再分析,到底怎么样的样本更适合此属性分类。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要训练一个基于OpenCV-Python的分类器,你需要下载并安装OpenCV库。OpenCV是一个开源的计算机视觉库,可以提供用于计算机视觉和图像处理的各种功能。 首先,你需要安装Python的环境,并在命令行中输入以下命令来安装OpenCV库: ``` pip install opencv-python ``` 这将自动下载并安装所需的Python包,并将OpenCV库添加到你的环境中。 一旦你完成了OpenCV的安装,就可以开始训练分类器了。分类器训练过程通常需要一些样本图像和相应的标签。你可以通过使用OpenCV提供的函数来加载和处理这些图像数据,例如`cv2.imread()`用于读取图像,`cv2.cvtColor()`用于进行颜色空间转换,等等。 当你已经加载和准备好了图像数据后,你可以使用OpenCV提供的机器学习库(如SVM、KNN等)来训练分类器。这些库提供了训练和测试分类器的函数和方法,你可以根据你的需求选择适合的算法。 至于.exe和.dll文件,OpenCV-Python并不需要这些文件。OpenCV-Python是OpenCV的Python接口,它直接调用了OpenCV的函数和方法,因此不需要生成或下载任何额外的执行文件。 总结而言,要训练一个基于OpenCV-Python的分类器,你需要下载和安装OpenCV库,并使用OpenCV的函数和方法来加载、处理和训练图像数据。你不需要下载任何额外的.exe和.dll文件。 ### 回答2: 要使用OpenCV-Python训练一个分类器,你不需要下载任何exe或dll文件。OpenCV-Python是一个开源的计算机视觉库,它有自己的Python接口,可以直接使用Python进行训练和分类操作,无需额外的进制文件。 你可以通过以下步骤安装OpenCV-Python并开始训练一个分类器: 1. 首先,确保你已经安装了Python。可以从Python官方网站https://www.python.org/downloads/ 下载和安装Python的最新版本。 2. 打开命令提示符或终端,并使用以下命令安装OpenCV-Python: ``` pip install opencv-python ``` 3. 这将自动下载并安装最新版本的OpenCV-Python。安装完成后,你可以在Python代码中导入OpenCV模块,并使用它的函数和类进行训练和分类。 ```python import cv2 ``` 4. 对于分类器训练OpenCV-Python提供了一个名为`cv2.ml`的模块,其中包含了支持向量机(SVM)、k最近邻(k-Nearest Neighbors)和其他常用分类器的实现。你可以使用这些算法来训练和评估分类器模型。 ```python # 创建一个支持向量机分类器 svm = cv2.ml.SVM_create() # 加载训练数据,并设置训练参数 trainData = ... labels = ... svm.train(trainData, cv2.ml.ROW_SAMPLE, labels) # 使用训练好的分类器对新数据进行分类 testData = ... predictedLabels = svm.predict(testData) ``` 通过上述步骤,你可以使用OpenCV-Python训练一个分类器,而无需下载任何额外的exe或dll文件。 ### 回答3: 要训练一个基于OpenCV-Python的分类器,无需下载专门的exe和dll文件。OpenCV-Python库已经包含了必要的功能和算法来进行图像分类器训练。 首先,确保已经安装了Python和OpenCV-Python库。你可以通过使用以下命令在命令行中安装OpenCV-Python库: ``` pip install opencv-python ``` 一旦安装完成,你就可以使用OpenCV-Python来训练分类器了。训练分类器的过程通常涉及以下几个步骤: 1. 收集和准备数据集:收集一些代表各类别的图像数据,并将其准备为可以用于训练的格式。 2. 提取图像特征:使用OpenCV特征提取算法,如HOG(方向梯度直方图)或Haar特征,从准备好的图像数据中提取特征。 3. 训练分类器:使用OpenCV提供的分类器算法(如支持向量机SVM或卷积神经网络CNN)对特征进行训练,以便将它们与相应的类别关联起来。 4. 评估和调优:使用测试数据集评估训练后的分类器的性能,并根据需要进行调优。 这些步骤涉及到在代码中使用OpenCV-Python的函数和类进行操作,而不需要下载额外的exe或dll文件。 总结起来,OpenCV-Python库已经提供了训练分类器所需的所有功能和工具,无需下载其他文件。安装并导入OpenCV-Python库后,你可以直接使用其中的函数和类来训练分类器
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值