当前位置:文档之家› xml分类器训练

xml分类器训练

分类:数据库/DB2/文章第一步采集样本1、将正负样本分别放在两个不同的文件夹下面分别取名pos和neg,其中pos用来存放正样本图像,neg用来存放负样本注意事项:1、正样本要统一切成24*24像素(或者其他)的格式,建议保存成灰度图,节省空间2、正样本的数目越多,训练的时间也将越长,训练出来的效果也就越好3、负样本的数量想对于正样本一定要足够的多,很多朋友在训练的时候,往往出现了CPU占用率达到了100%,但是训练只是停留在一个分类器长达几小时没有相应,问题出现在取负样本的那个函数icvGetHaarTrainingDataFromBG中; 当剩下所有的negtive样本在临时的cascade Classifier中,evaluate的结果都是0(也就是拒绝了),随机取样本的数目到几百万都是找不到误检测的neg样本了,因而没法跳出循环2、建立正负样本的说明文件这里我们假定根目录在D:\boost下面。

在cmd下面进入pos目录,输入dir /b > pos.txt这个时候会在pos文件加下面生成一个pos.txt文件,打开pos.txt我们对它进行如下编辑:(1)、将BMP 替换成为BMP 1 0 0 24 24注意:1代表此图片出现的目标个数后面的0 0 24 24代表目标矩形框(0,0)到(24,24),用户可以根据自身需要调整数值(2)、删除文本中最后一行的“pos.txt”2、对负样本进行编辑在CMD下输入dir /b > neg.txt同理,打开neg目录下的neg.txt文件,只需要删除最后一行的neg.txt这一句注意:1、负样本说明文件不能含有目标物体2、负样本图像尺寸不受到限制,但是尺寸越大,训练所用的时间越长,3、负样本图像可以是灰度图,也可以不是,笔者建议使用灰度图,这样处理起来可能更有效率4、负样本图像一定不要重复,增大负样本图像的差异性,可以增加分类器的使用范围,笔者建议可以使用网上的素材库,将1000多张不含目标的图片灰度处理后用来训练,效果更佳二、使用opencv_createsamples.exe创立样本VEC文件1、首先我们将要用的的2个程序opencv_createsamples.exe和opencv_haartraining.exe拷到根目录下在CMD下输入如下命令:opencv_createsamples.exe -vec pos.vec -info pos\pos.txt -bg neg\neg.txt -w 40 -h 40 -num 142以上参数的含义如下:-vec <vec_file_name>训练好的正样本的输出文件名。

-img<image_file_name>源目标图片(例如:一个公司图标)-bg<background_file_name>背景描述文件。

-num<number_of_samples>要产生的正样本的数量,和正样本图片数目相同。

-bgcolor<background_color>背景色(假定当前图片为灰度图)。

背景色制定了透明色。

对于压缩图片,颜色方差量由bgthresh 参数来指定。

则在bgcolor-bgthresh 和bgcolor+bgthresh 中间的像素被认为是透明的。

-bgthresh<background_color_threshold>-inv如果指定,颜色会反色-randinv如果指定,颜色会任意反色-maxidev<max_intensity_deviation>背景色最大的偏离度。

-maxangel<max_x_rotation_angle>-maxangle<max_y_rotation_angle>,-maxzangle<max_x_rotation_angle>最大旋转角度,以弧度为单位。

-show如果指定,每个样本会被显示出来,按下"esc"会关闭这一开关,即不显示样本图片,而创建过程继续。

这是个有用的debug 选项。

-w<sample_width>输出样本的宽度(以像素为单位)-h《sample_height》输出样本的高度,以像素为单位。

按下回车后我们的正样本三、使用opencv_haartraing.exe进行训练参数说明如下:Haartraining 的命令行参数如下:-data<dir_name>存放训练好的分类器的路径名。

-vec<vec_file_name>正样本文件名(由trainingssamples 程序或者由其他的方法创建的)-bg<background_file_name>背景描述文件。

-npos<number_of_positive_samples>,-nneg<number_of_negative_samples>用来训练每一个分类器阶段的正/负样本。

合理的值是:-nPos = 7000;nNeg = 3000-nstages<number_of_stages>训练的阶段数。

-nsplits<number_of_splits>决定用于阶段分类器的弱分类器。

如果1,则一个简单的stump classifier 被使用。

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

-mem<memory_in_MB>预先计算的以MB 为单位的可用内存。

内存越大则训练的速度越快。

-sym(default)-nonsym指定训练的目标对象是否垂直对称。

垂直对称提高目标的训练速度。

例如,正面部是垂直对称的。

-minhitrate《min_hit_rate》每个阶段分类器需要的最小的命中率。

总的命中率为min_hit_rate 的number_of_stages 次方。

-maxfalsealarm<max_false_alarm_rate>没有阶段分类器的最大错误报警率。

总的错误警告率为max_false_alarm_rate 的number_of_stages 次方。

-weighttrimming<weight_trimming>指定是否使用权修正和使用多大的权修正。

一个基本的选择是0.9-eqw-mode<basic(default)|core|all>选择用来训练的haar 特征集的种类。

basic 仅仅使用垂直特征。

all 使用垂直和45 度角旋转特征。

-w《sample_width》-h《sample_height》训练样本的尺寸,(以像素为单位)。

必须和训练样本创建的尺寸相同在CMD下输入opencv_haartraining.exe -data xml -vec pos.vec -bg neg\neg.txt -w 40 -h 40 -mem 800然后开始训练训练过程如图,呵呵,要是成百上千的样本的话,我们先去吃完泡面休息一下吧好了,休息回来,训练完成提示信息如下:在根目录下就会生成相应的XML文件人脸数据库汇总■Annotated Database (Hand, Meat, LV Cardiac, IMM face) (http://www2.imm.dtu.dk/~aam/)■AR Face Database (/~aleix/aleix_face_DB.html)■BioID Face Database (/downloads/facedb/index.php)■Caltech Computational Vision Group Archive (Cars, Motorcycles, Airplanes, Faces, Leaves, Background)(/html-files/archive.html)■Carnegie Mellon Image Database (motion, stereo, face, car, ...) (/idb/)■CAS-PEAL Face Database (/peal/index.html)■CMU Cohn-Kanade AU-Coded Facial Expression Database (/projects/project_421.html■CMU Face Detection Databases (/projects/project_419.html)■CMU Face Expression Database (/projects/FaceAuthentication/download.htm)■CMU Face Pose, Illumination, and Expression (PIE) Database (/projects/project_418.html)■CMU VASC Image Database (motion, road sequences, stereo, CIL’s stereo data with ground truth, JISCT, face, face expressions, car) (/idb/)■Content-based Image Retrieval Database (/research/imagedatabase/groundtruth/) ■Face Video Database of the Max Planck Institute for Biological Cybernetics (http://vdb.kyb.tuebingen.mpg.de/)■FERET Database (/)■FERET Color Database (/iad/humanid/colorferet/home.html/colorferet/ )■Georgia Tech Face Database (/face_reco.htm)■German Fingerspelling Database (/face_reco.htm )■Indian Face Database (http:// /~vidit/IndianFaceDatabase)■MIT-CBCL Car Database (/software-datasets/CarData.html)■MIT-CBCL Face Recognition Database (/software-datasets/heisele/facerecognition-database.html)■MIT-CBCL Face Databases (/software-datasets/FaceData2.html)■MIT-CBCL Pedestrian Database (/software-datasets/PedestrianData.html)■MIT-CBCL Street Scenes Database (/software-datasets/streetscenes/)■NIST/Equinox Visible and Infrared Face Image Database (/products/HID.html)■NIST Fingerprint Data at Columbia (Link)■ORL Database of Faces (/research/dtg/attarchive/facedatabase.html)■Rutgers Skin Texture Database (/rutgers_texture/)■The Japanese Female Facial Expression (JAFFE) Database (/jaffe.html■The Ohio State University SAMPL Image Database (3D, still, motion) (/database.htm)■The University of Oulu Physics-Based Face Database (http://www.ee.oulu.fi/research/imag/color/pbfd.html)■UMIST Face Database (/danny/database.html)■USF Range Image Data (with ground truth) (/range/DataBase.html)■Usenix Face Database (hundreds of images, several formats) (Link)■UCI Machine Learning Repository (/~mlearn/MLSummary.html)■USC-SIPI Image Database (collection of digitized images) (/services/database/Database.html)■UCD VALID Database (multimodal for still face, audio, and video) (http://ee.ucd.ie/validdb/)■UCD Color Face Image (UCFI) Database for Face Detection (http://ee.ucd.ie/~prag/)■UCL M2VTS Multimodal Face Database (http://www.tele.ucl.ac.be/PROJECTS/M2VTS/m2fdb.html)■Vision Image Archive at UMass (sequences, stereo, medical, indoor, outlook, road, underwater, aerial, satellite, space and more) (/database/)■Where can I find Lenna and other images? (/faqs/compression-faq/part1/section-30.html)■Yale Face Database (/projects/yalefaces/yalefaces.html)■Yale Face Database B (/projects/yalefaces/yalefaces.html)目前人脸识别领域常用的人脸数据库主要有:1. FERET人脸数据库[2]由FERET项目创建,包含14,051张多姿态,光照的灰度人脸图像,是人脸识别领域应用最广泛的人脸数据库之一.其中的多数人是西方人,每个人所包含的人脸图像的变化比较单一.2. MIT人脸数据库[4]由麻省理工大学媒体实验室创建,包含16位志愿者的2,592张不同姿态,光照和大小的面部图像.3. Yale人脸数据库[5]由耶鲁大学计算视觉与控制中心创建,包含15位志愿者的165张图片,包含光照,表情和姿态的变化.4. Yale人脸数据库B[6]包含了10个人的5,850幅多姿态,多光照的图像.其中的姿态和光照变化的图像都是在严格控制的条件下采集的,主要用于光照和姿态问题的建模与分析.由于采集人数较少,该数据库的进一步应用受到了比较大的限制.5. PIE人脸数据库[7]由美国卡耐基梅隆大学创建,包含68位志愿者的41,368张多姿态,光照和表情的面部图像.其中的姿态和光照变化图像也是在严格控制的条件下采集的,目前已经逐渐成为人脸识别领域的一个重要的测试集合.6. ORL人脸数据库[8]由剑桥大学AT&T实验室创建,包含40人共400张面部图像,部分志愿者的图像包括了姿态,表情和面部饰物的变化.该人脸库在人脸识别研究的早期经常被人们采用,但由于变化模式较少,多数系统的识别率均可以达到90%以上,因此进一步利用的价值已经不大.7. PF01人脸数据库[9]由韩国浦项科技大学创建,包含103人的1,751张不同光照,姿态,表情的面部图像,志愿者以韩国人为主.8. AR人脸数据库[10]由西班牙巴塞罗那计算机视觉中心建立,包含116人的3,288幅图像.采集环境中的摄像机参数,光照环境,摄像机距离等都是严格控制的.9. BANCA人脸数据库[11]该数据库是欧洲BANCA计划的一部分,包含了208人,每人12幅不同时间段的面部图像.10. KFDB人脸数据库[12]包含了1,000人,共52,000幅多姿态,多光照,多表情的面部图像,其中姿态和光照变化的图像是在严格控制的条件下采集的.志愿者以韩国人为主.11. MPI人脸数据库[13]该人脸数据库包含了200人的头部3维结构数据和1,400幅多姿态的人脸图像.12. XM2VTS人脸数据库[14]包含了295人在4个不同时间段的图像和语音视频片断.在每个时间段,每人被记录了2个头部旋转的视频片断和6个语音视频片断.此外,其中的293人的3维模型也可得到.opencv老是卡在某一层,最近在做人脸检测的Haartraining训练分类器,发现训练到最后误检率很低时分类器总是卡到某一层就不在继续进行,像是进入了死循环,程序代码与参数输入应该是没有任何问题的,所以我从网上找这方面的资料,最后在OpenCV的中文论坛看到一个帖,终于找到原因了。

相关主题