文档章节

OpenCV 训练联级叠层分类器, 识别你想要的任何物体

denua_
 denua_
发布于 2017/06/04 20:47
字数 740
阅读 68
收藏 2

OpenCV物体检测需要的叠层分类器, OpenCv自带的训练器

OpenCV 2.4

windows 7 64

<1> 收集样本

样本分为正样本和负样本,并且大小要一致, 一般为20 *20大小的图片, 正样本是包含要检测的物体, 不能包含其他物体, 负样本只要不是要检测的物体就可以.例如要检测人脸, 则正样本只能包含人脸. 不能有其他, 负样本则不能包含有人脸, 样本最好是能突显所要检测物体的特性.

样本的数量, 多样性决定了分类器的准确性.

将收集的样本分别放在两个文件夹, 这里的两个文件夹为, 正样本face\ , 负样本 neg\

在两个样本文件夹下分别新建一个文本文档, 命名为正样本info.txt,  负样本bg.txt. 并且在这两个文件夹下执行命令 dir /d > infi.txt ,  dir /d > bg.txt, 则所有样本文件名都被导入文本文档,将每行改为如下格式,

样本1.bmp 1 0 0 20 20

样本2.bmp 1 0 0 20 20

  1是样本数量, 0是开始区域左上坐标, 20是右下坐标, 在本例中, 整个图片都为要样本有效区则0开始20结束:

 

<2>创建样本文件

生成样本文件程序在OpenCv 目录下的位置, :

OpenCv\opencv\build\x64\cv12\bin\ opencv_createsamples.exe

在OpenCv\opencv\build\x64\cv12\bin\ 目录下执行命令,

opencv_createsamples.exe -info face\info.txt -vec data.vec  -num 2700    -w 20 -h 20

参数说明:

Info

正样本描述文件位置

Vec

生成的样本保存位置

Num

样本数量

W

样本宽度

H

样本高度

...

其他参数

执行以上命令后将生成一个样本文件.vec

<3>训练联级分类器

训练程序路径;OpenCv\opencv\build\x64\cv12\bin\

训练命令: opencv_haartraining.exe -vec data.vec -data dat -bg nonfaces\bg.txt -npos 2710 -nneg 2710 -nstages 5 -nsplits 3 -mem 512 -minpos 100 -w 20 -h 20

参数说明:

Vec

样本文件路径(用traininssample创建)

Data

存放训练好的分类器的路径

Bg

负样本描述文件路径

Npos

用来训练正样本的数量

Nneg

用来训练的负样本数量

Nstages

训练的层数

Nsplits

决定用于阶段分类器的弱分类器.如果为1,则应该简单的stump classifier

被使用,如果是2或更多,则带有number_of_splits个内部节点的CART分类器被使用

Mem

预算内存, 越大速度快

Nosnsym

是否垂直对称

Mode

表示haar特征集

W h

训练样本的尺寸

结果:

N: 层数 %

  SMP: 样本使用率

F: +表示通过翻转,否则是 -

   ST.THR: 分类器阈值

   HR: 当前分类器 对正样本识别正确的概率

   FA: 当前分类器 对负样本识别错误的概率

  EXP.ERR:分类器的期望错误率

© 著作权归作者所有

共有 人打赏支持
denua_
粉丝 0
博文 9
码字总数 10634
作品 0
九江
19- OpenCV+TensorFlow 入门人工智能图像处理-刷脸识别实现

章节介绍 实现一个刷脸识别 输入一张图片,找到图片中的人脸,识别这个是哪一个人。 案例代码简单 人工网络层级低。 隐层只有一层。 综合: 样本收集 + 图像预处理 + TensorFlow神经网络 pyth...

天涯明月笙
05/19
0
0
图片人脸检测(OpenCV版)

图片人脸检测 人脸检测使用到的技术是OpenCV,上一节已经介绍了OpenCV的环境安装,点击查看. 功能展示 识别一种图上的所有人的脸,并且标出人脸的位置,画出人眼以及嘴的位置,展示效果图如下...

vipstone
05/21
0
0
图片人脸检测——OpenCV版(二)

图片人脸检测 人脸检测使用到的技术是OpenCV,上一节已经介绍了OpenCV的环境安装,点击查看. 往期目录 视频人脸检测——Dlib版(六) OpenCV添加中文(五) 图片人脸检测——Dlib版(四) 视...

王磊的博客
04/19
0
0
关于 opencv 训练LBP联级分类器的一点总结

最近需要做一个联级分类器来定位图像中的目标(用车牌定位来做例子),于是选用opencv的LBP算法。关于介绍,这篇博文写的还可以 点击打开链接 实现的时候查找其他博客也遇到了很多问题,我用...

evinxu
04/13
0
0
tensorflow实现人脸检测及识别(简单版)

本教程主要是对人脸检测及识别python实现系列 及碉堡了!程序员用深度学习写了个老板探测器(付源码) 的实现。主要实现的功能是用网络摄像头自动识别在工位通道走过的人脸,如果确认是老板的...

gavinmiaoc
05/28
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Bash重定向详解

Bash重定向详解 Bash的重定向指的是将命令的输入和输出导向不同地方,而不是默认的标准输入、标准输出和标准错误。Bash的重定向实际上是对标准输入、标准输出和标准错误的重置,进而将所需输...

小陶小陶
今天
3
0
EventBus原理深度解析

一、问题描述 在工作中,经常会遇见使用异步的方式来发送事件,或者触发另外一个动作:经常用到的框架是MQ(分布式方式通知)。如果是同一个jvm里面通知的话,就可以使用EventBus。由于Event...

yangjianzhou
今天
15
0
OpenCV图像处理实例:libuv+cvui显示摄像头视频

#include <iostream>#include <opencv2/opencv.hpp>#define CVUI_IMPLEMENTATION#include <cvui.h>extern "C"{#include <uv.h>}using namespace std;#define WINDOW_NAM......

IOTService
今天
3
0
openJDK之JDK9的String

1.openJDK8的String 先来看下openJDK8的String的底层,如下图1.1所示: 图1.1 底层上使用的是char[],即char数组 每个char占16个bit,Character.SIZE的值是16。 2.openJDK9中的String 图2.1...

克虏伯
今天
5
0
UEFI 模式下如何安装 Ubuntu 16.04

作者:知乎用户 链接:https://www.zhihu.com/question/52092661/answer/259583475 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 针对UEFI模式下安装U...

寻知者
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部