opencv训练分类器样本处理

分类器的训练以分为以下三部进行:

1、 样本的创建

2、 训练分类器

3、 利用训练好的分类器进行目标检测。

对检测物体要确定其属性:是否为绝对刚性的物体,也就是检测的目标是一个固定物体,没有变化(如特定公司的商标),这样的物体只要提供一份样本就可以进行训练。

但绝大数时候我们想进行训练的目标是非绝对刚性的物体,如对人的检测,包括人脸识别、手势识别。

样本:分为正样本---------负样本

正样本处理步骤:

所谓所谓正样本就是只包含检测目标的图片(最好背景一致),对于这我个人认为最好是检测目标的最小外接矩,这样可以减少训练的计算量,减少目标检测的干扰,提高检测质量。

1、获取正样本,可以自己动手,也可以通过网络上的图像数据库,像人脸数据库就已经很全了,不必再自己制作。

2、图片处理

1)将正样本图片进行截取(自己收集的图片,主要是去掉训练时的不必要干扰)-----最小外接矩,

2)将处理后的图片进行归一化,将所有图像调整成一致大小,我用的“美图看看”这款软件,批量处理的,注意无论原图多大最好都处理成25*25以下的图像,这样计算机                   训练速度快,而且不容易出现内存不够用。

3    将归一化后的图像进行灰度处理,这里我用的是一段opencv代码,http://www.cnblogs.com/linmengran/p/6513094.html

这样正样本就处理好了,接下来要生成pos.txt文件

cmd运行控制台,切换到存放样本图片的文件目录下:输入如下命令

运行结果:

在图像文件中多了个pos.txt文件,内容如下:

在对文件进行处理,使其含有图片信息:通过程序读取存入

格式为:图片路径     检测目标在图片中的个数     起始监测点坐标(x,y)        图片大小(w,h)

4、训练.vec文件

doc下运行一下命令(假设当前路径就是pos.txt所在的路径):opencv_createsamples.exe -vec pos.vec -info pos.txt -num 100 -w 30 -h 30

得到pos.vec文件。

负样本:不包含检测目标的任何图片。

1.不要求样本尺寸,但要大于等于正样本的大小;且负样本不能重复,要增大负样本的差异性。

2.负样本灰度化,同正样本操作相同。

3.运行命令:

最后将pos.vec和neg.txt文件拷贝到同一文件夹下。

这样正负样本就处理完了,训练见:

http://www.cnblogs.com/linmengran/p/6513017.html(老训练器)

时间: 2024-08-04 22:21:48

opencv训练分类器样本处理的相关文章

openCV训练分类器是一些错误及解决办法

昨天看了一天的opencv训练分类器的资料,想自己试试.经过昨天一天的折腾终于成功的训练出了自己的分类器,虽然效果不好,但是是个好的开端.在整个过程中我遇到了很多问题,在这里和大家分享一下,希望对你有帮助. 1.正样本的创建过程基本上按照以下步骤: 1) 制作一个正样本描述文件,用于描述正样本文件名(包括绝对路径或相对路径),正样本数目以及各正样本在图片中的位置和大小.典型的正样本描述文件如下: face_100/face00001.bmp 1 0 0 20 20 face_100/face00

使用opencv训练分类器时,traincascade训练报错:Train dataset for temp stage can not be filled.解决方法

opencv分类器训练中,出错一般都是路径出错,例如, 1.opencv_traincascade.exe路径 2.负样本路径文件,neg.dat中的样本前路径是否正确 3.移植到别的电脑并修改完路径后,最好重新生成正样本描述文件,pos.vec 4.同时修改cmd命令中的相关路径 知识付费时代,觉得对您有帮助的,别忘了打赏,附微信收款码 原文地址:https://www.cnblogs.com/runningsoybean/p/10420224.html

OpecnCV训练分类器详细整理

本文主要是对下面网址博客中内容的实例操作: http://blog.csdn.net/byxdaz/article/details/4907211 在上述博客中,详细的讲述了OpenCV训练分类器的做法.虽然他的步骤很详细,但是不能被人很快的利用到实践中来.所以我归纳这些内容,能够让人很快的动手操作起来,这样对于一个新手来说一个多小时就可以很快的掌握做分类器的方法了. 一:分别准备好正负样本 将正样本剪裁统一大小,放到一个的文件夹里面. 将一些和待检测图像无关的照片放入一个文件夹里面.--负样本

利用opencv源代码和vs编程序训练分类器haartraining.cpp

如需转载请注明本博网址:http://blog.csdn.net/ding977921830/article/details/47733363. 一  训练框架 训练人脸检測分类器须要三个步骤: (1) 准备正负样本集,分别放到两个目录里. 我使用的是麻省理工的那个人脸库.大家能够网上搜一下. (2)把正样本集生成正样本描写叙述文件(*.vec),把负样本集生成负样本集合文件.详细怎么操作请參考我博客中的另外两篇文章,各自是http://blog.csdn.net/ding977921830/a

OpenCV训练自己的人脸检测级连分类器并测试

0. 概述 分为如下几步: step1. 制作训练数据集 step2. 训练分类器 step3. 使用分类器进行分类 1. 准备工作 建立一个项目目录objection_detection/ $ mkdir objection_detection/ $ cd objection_detection/ 建立一个训练数据集目录train_img_set/用于存放训练图片 $ mkdir train_img_set/ 下载MIT_Face数据集,并将训练图片的face/和non-face/图片集拷贝到

[PyTorch入门之60分钟入门闪击战]之训练分类器

训练分类器 目前为止,你已经知道如何定义神经网络.计算损失和更新网络的权重.现在你可能在想,那数据呢? What about data? 通常,当你需要处理图像.文本.音频或者视频数据时,你可以使用标准Python包来将数据导入到numpy 数组中.然后再将数组转换成torch.Tensor. 对于图像,可用的包有:Pillow.OpenCV 对于音频,可用的包有:scipy和librosa 对于文本,无论是基于原始的Python或Cython的加载,或是NLTK和SpaCy都是可以的. 对于视

SVM+HOG特征训练分类器

#1,概念 在机器学习领域,支持向量机SVM(Support Vector Machine)是一个有监督的学习模型,通常用来进行模式识别.分类.以及回归分析. SVM的主要思想可以概括为两点:⑴它是针对线性可分情况进行分析,对于线性不可分的情况,通过使用非线性映射算法将低维输入空间线性不可分的样本转化为高维特征空间使其线性可分,从而 使得高维特征空间采用线性算法对样本的非线性特征进行线性分析成为可能: 方向梯度直方图(Histogram of Oriented Gradient, HOG)特征是

OpenCV——级联分类器(CascadeClassifier)

级联分类器的计算特征值的基础类FeatureEvaluator 功能:读操作read.复制clone.获得特征类型getFeatureType,分配图片分配窗口的操作setImage.setWindow,计算有序特征calcOrd,计算绝对特征calcCat,创建分类器特征的结构create函数. 目标级联矩形的分组函数groupRectangles 用load函数加载XML分类器文件具体步骤如下:                      {  PS:目前提供的分类器包括Haar分类器和LBP

YOLO(Darknet官方)训练分类器

目录 1. 分类数据准备 2. Darknet配置 3. Darknet命令使用 4. cifar-10 使用示例 1. 分类数据准备 需要的文件列表: 1. train.list : 训练的图片的绝对路径 2. test.list : 用于测试的图片的绝对路径 3. labels.txt : 所有的类别,一行一个类 4. voc.data : darknet配置文件,记录相关位置信息 5. cifar.cfg : 网络配置文件 按照以下目录结构进行构造: VOCdevkit VOC2017 J