OPENCV中CASCADE的生成

在网上找了很多有关于OPENCV生成CASCADE的文章,大多数都来自同一篇文章,但文章有些老而且不好用
我在一个CASCADE2XML程序中找到了其自述文档,写的相当细致,我将其翻译过来,希望后来人能够看到少走弯路
另外,现在的OPENCV是1.1pre版已经不存在生成的CASCADE转换为XML文件的问题了,这个问题可以忽略

致意
这个小文档告诉你怎样去建立自己的层级训练集。
假设你已经安装了OpenCv和你已经安装了windows。
在这个指导文档使用了额OpenCv beta 5。
准备工作:
要保证不出现用户命名的错误,你应该解开tools.rar文档并放在硬盘根目录下d:\。
*)    在..\temp\negetive文件夹你应该保存不包含"目标"的图片。
    在你有了一大堆背景图片后(比如2500个),你就可以用批处理文件create_list.bat
    这个文件自动建立一个bmp文件的清单并保存到infofile.txt中。
    在infofile.txt文件中应该包含这样的行: image2619.bmp
                    img2620.bmp
                    ...
    在这个地址你能找到大量的上千的图片可以下载。
    http://www.pascal-network.org/challenges/VOC/databases.html#VOC2005_1
*)    在..\temp\positive\rawdata你应该保存包含目标的bmp文件
    在使用..\temp\positive\objectmarker.exe后,readme.txt解释了这个工具如何使用。
    这个工具生成info.txt文件。每一行都这样写:rawdata/image0.bmp 1 146 109 47 46
    你应该经常保存info.txt文件,因为每次调用objectmarker.exe都会覆盖info.txt文件。

生成样本:
*)    到现在你应该有了:
    file : \temp\negative\infofile.txt 里面的文字应该类似于"image2619.BMP"
    file : \temp\positive\info.txt 里面的文字应该类似于"rawdata/image0.bmp 1 146 109 47 46"
*)    现在你可以使用createsamples.exe工具去把目标图像打包成vec向量文件
    比如createsamples.exe -info positive/info.txt -vec data/vector.vec -num 1800 -w 24 -h 24
    这句话的意思是你将生成vector.vec到\temp\data文件夹
    -num的意思是有多少个图片,你应该换成你想要的的个数
    你可以是用samples_creation.bat批处理

训练:
*)    在你有了vector.vec文件之后你就可以开始训练了
    命令是:
    haartraining.exe -data data/cascade -vec data/vector.vec -bg negative/infofile.txt -npos 1800 -nneg 2620 -nstages 20 -mem 1000 -mode ALL -w 24 -h 24 -nonsym    
    开始训练,
    其中,参数是:
    -data data/cascade    - 生成层级数据的文件夹,每级都会生成如\temp\data\cascade\0..N\AdaBoostCARTHaarClassifier.txt的文件。
    -vec data/vector.vec    - 用createsamples.exe生成的vec文件
    -bg negative/infofile.txt    \temp\negative\文件夹中的bmp反例图片文件
    -npos 180            正例图片的个数            
    -nneg 2620        反例图片的个数            
    -nstages 30        层级数量的个数, 计算20层需要20小时左右(在p4 3,2ghz , 2gb ddr ram条件)            
    -mem 1000        运行程序需要的内存大小
    -mode ALL        查看帮助文档获得更多信息            
    -w 24 -h 24         训练集的大小
    -nonsym            如果图片是水平的就用不找此选项
    
    你可以使用批处理文件"haarTraining.bat"来作此操作
    haartraining.exe在运行时会产生这样的输出:
_________________________________________________________________________________

Parent node: 17

*** 1 cluster ***
POS: 1656 1799 0.920511
NEG: 2410 1.97289e-005
BACKGROUND PROCESSING TIME: 1279.69
Precalculation time: 63.20
+----+----+-+---------+---------+---------+---------+
|  N |%SMP|F|  ST.THR |    HR   |    FA   | EXP. ERR|
+----+----+-+---------+---------+---------+---------+
|   1|100%|-|-0.312590| 1.000000| 1.000000| 0.256272|
+----+----+-+---------+---------+---------+---------+
|   2|100%|-|-0.537043| 1.000000| 1.000000| 0.294638|
+----+----+-+---------+---------+---------+---------+
|   3|100%|-|-0.776489| 1.000000| 1.000000| 0.238072|
+----+----+-+---------+---------+---------+---------+
|   4|100%|-|-1.415237| 1.000000| 1.000000| 0.264879|
+----+----+-+---------+---------+---------+---------+
|   5| 96%|-|-1.120346| 0.996981| 0.969710| 0.242253|
+----+----+-+---------+---------+---------+---------+
|   6| 84%|-|-1.471691| 0.996981| 0.956432| 0.218888|
+----+----+-+---------+---------+---------+---------+
|   7| 82%|-|-1.187260| 0.996981| 0.909959| 0.230939|
+----+----+-+---------+---------+---------+---------+
|   8| 83%|-|-1.209699| 0.995773| 0.897510| 0.216675|
+----+----+-+---------+---------+---------+---------+
|   9| 83%|-|-1.187195| 0.995169| 0.848548| 0.196754|
+----+----+-+---------+---------+---------+---------+
|  10| 81%|-|-1.332160| 0.995169| 0.880498| 0.178062|
+----+----+-+---------+---------+---------+---------+
|  11| 83%|-|-1.529588| 0.995773| 0.881328| 0.190113|
+----+----+-+---------+---------+---------+---------+
|  12| 81%|-|-1.529296| 0.995169| 0.859751| 0.178554|
+----+----+-+---------+---------+---------+---------+
|  13| 80%|-|-1.471163| 0.995169| 0.820332| 0.165765|
+----+----+-+---------+---------+---------+---------+
|  14| 80%|-|-1.439857| 0.995169| 0.797095| 0.157895|
+----+----+-+---------+---------+---------+---------+
|  15| 79%|-|-1.366838| 0.995169| 0.755602| 0.149287|
+----+----+-+---------+---------+---------+---------+
|  16| 77%|-|-1.357297| 0.995169| 0.729046| 0.148303|
+----+----+-+---------+---------+---------+---------+
|  17| 77%|-|-1.350920| 0.995169| 0.698755| 0.142892|
+----+----+-+---------+---------+---------+---------+
|  18| 77%|-|-1.286876| 0.995169| 0.657261| 0.140187|
+----+----+-+---------+---------+---------+---------+
|  19| 76%|-|-1.340796| 0.995169| 0.643983| 0.137236|
+----+----+-+---------+---------+---------+---------+
|  20| 75%|-|-1.258729| 0.995169| 0.607054| 0.135022|
+----+----+-+---------+---------+---------+---------+
|  21| 75%|-|-1.259443| 0.995169| 0.594606| 0.124447|
+----+----+-+---------+---------+---------+---------+
|  22| 75%|-|-1.247393| 0.995169| 0.578008| 0.121249|
+----+----+-+---------+---------+---------+---------+
|  23| 74%|-|-1.189301| 0.995169| 0.539419| 0.118790|
+----+----+-+---------+---------+---------+---------+
|  24| 74%|-|-1.278121| 0.995169| 0.547303| 0.116822|
+----+----+-+---------+---------+---------+---------+
|  25| 73%|-|-1.194187| 0.995169| 0.503734| 0.115347|
+----+----+-+---------+---------+---------+---------+
|  26| 73%|-|-1.216452| 0.995169| 0.484232| 0.110182|
+----+----+-+---------+---------+---------+---------+
Stage training time: 7788.05
Number of used features: 26

Parent node: 17
Chosen number of splits: 0

Total number of splits: 0

Tree Classifier
Stage
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
|  0|  1|  2|  3|  4|  5|  6|  7|  8|  9| 10| 11| 12| 13| 14| 15| 16| 17| 18|
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+

   0---1---2---3---4---5---6---7---8---9--10--11--12--13--14--15--16--17--18

_________________________________________________________________________________

*)    在完成20层的计算之后我也们可以继续进行,这时候的错误率是 >=1*10e-5
    在haartraining在运行时你可以看到:
    例如:
    For egzaple :
   
Parent node: 17

*** 1 cluster ***
POS: 1656 1799 0.920511
NEG: 2410 1.97289e-005
        ^       
        |
    这就是错误率
________________________________________________   
    在\temp\data\cascade文件夹中应该包含从"0"到"N"标号(N是完成的层级的标号)的目录
    在每一个目录中都有一个AdaBoostCARTHaarClassifier.txt file.
    我们现在将0-N这些文件夹拷贝到..\cascade2xml\data catalogue文件夹

*)    使用\cascade2xml\haarconv.exe并加上参数我们就可以创建xml文件
    命令:haarconv.exe data output.xml 24 24
    就能够创建在识别部分使用的xml文件了
    你也可以使用\cascade2xml\convert.bat批处理文件来开始

*)    将output.xml文件拷到\test_recognition文件夹
    使用命令:
    facedetect.exe --cascade="output.xml" 0
    你可以使用摄像头作为图像源进行识别
    如果不用摄像头你也可以使用图像文件作为输入比如pic0.jpg或者是电影film.avi
________________________________________________________________________________________

        结束。

时间: 2024-10-28 05:49:28

OPENCV中CASCADE的生成的相关文章

OpenCV中的级联分类器Cascade Classifier(面部识别)

OpenCV中的级联分类器Cascade Classifier Goal In this tutorial you will learn how to: Use the CascadeClassifier class to detect objects in a video stream. Particularly, we will use the functions: load to load a .xml classifier file. It can be either a Haar or

OpenCV学习(22) opencv中使用kmeans算法

kmeans算法的原理参考:http://www.cnblogs.com/mikewolf2002/p/3368118.html 下面学习一下opencv中kmeans函数的使用.      首先我们通过OpenCV中的随机数产生器RNG,生成一些均匀分布的随机点,这些点的位置对应一副图像中的像素位置,然后使用kmeans算法对这些随机点进行分类,并计算出分类簇的中心点.      随机产生的簇的数量是2到5之间的值,采样点的数量范围是1-1000,一维矩阵centers存放kmeans算法结束

如何在ASP.NET中获取随机生成的cookie加密与验证密钥

asp.net|cookie|加密|随机     本文是从ASP.NE T 1.1升级到ASP.NET 2.0需要考虑的Cookie问题的补充,通过示例代码说明如何通过反射在ASP.NET 1.1与ASP.NET 2.0中获取随机生成的cookie加密与验证密钥.ASP.NET 1.1示例代码:            object machineKeyConfig = HttpContext.Current.GetConfig("system.web/machineKey");    

在ASP.NET中上传图片并生成缩略图的C#源码

asp.net|上传|上传图片|缩略图 在ASP.NET中上传图片并生成缩略图的C#源码 using System;   using System.Collections;   using System.ComponentModel;   using System.Data;   using System.Drawing;   using System.Web;   using System.Web.SessionState;   using System.Web.UI;   using Sys

如何在NodeJS中调用SS生成的DLL

要想在NodeJS中调用SS生成的DLL, 需要借助EdgeJS. EdgeJS: http://tjanczuk.github.io/edge/ 如果你还不知道如何在SS 中生成DLL, 请查看: Spider Studio 新版本 (x-mas) - 可以引入第三方程序集, 可以将脚本生成为DLL 下面以曾经写过的XML/JSON互转的脚本为例 (C#中 另辟蹊径解决JSON / XML互转的问题) 说明如何在NodeJS中应用SS DLL: 1. 安装edgejs npm install

在ASP.NET中上传图片并生成缩略图

在ASP.NET中上传图片并生成缩略图,可以参照下列代码: private void btnUploadPicture_Click(object sender, System.EventArgs e){//检查上传文件的格式是否有效if(this.UploadFile.PostedFile.ContentType.ToLower().IndexOf("image") < 0){Response.Write("上传图片格式无效!");return;}//生成原图

C#中获取、生成随机数的三种方法

  这篇文章主要介绍了C#中获取.生成随机数的三种方法,本文讲解了Random 类生成法.Guid 类生成法以及RNGCryptoServiceProvider 类生成法,需要的朋友可以参考下 随机数的定义为:产生的所有数字毫无关系. 在实际应用中很多地方会用到随机数,比如需要生成唯一的订单号. 在C#中获取随机数有三种方法: 一.Random 类 Random类默认的无参构造函数可以根据当前系统时钟为种子,进行一系列算法得出要求范围内的伪随机数. 代码如下: Random rd = new R

android中圆角图像生成方法

  这篇文章主要介绍了android中圆角图像生成方法,涉及Android处理圆角图像的技巧,需要的朋友可以参考下 本文实例讲述了android中圆角图像生成方法.分享给大家供大家参考.具体分析如下: 在android开发中为了美观,常常要求ImageView中显示出圆角图像的效果,这个如何实现? 这里总结了网上的最优方法:将图像处理成圆角,然后在加载给ImageView显示,代码如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 public Bitmap

PHP5中GD库生成图形验证码(有汉字)

本文为大家介绍下利用PHP5中GD库生成图形验证码而且带有汉字,具体的实现思路及代码如下,有需求的朋友可以参考下,希望对大家学习php有所帮助   利用PHP5中GD库生成图形验证码   类似于下面这样 1.利用GD库函数生成图片,并在图片上写指定字符 imagecreatetruecolor 新建一个真彩色图像 imagecolorallocate 为一幅图像分配颜色(调色板) imagestring 绘制字符 imageline 绘制线条 imagesetpixel 打像素点 2.输出图片