美文网首页2017年学习笔记模块
Opencv 人脸识别之分类器,样本训练

Opencv 人脸识别之分类器,样本训练

作者: waterge | 来源:发表于2017-12-02 21:51 被阅读0次

    ================================训练分类器==============================

    样本准备

    1: 正负样本

    如:window下

    a. 在正样本目录下 dir /b > pos.txt  ,将生成的 摘要文件pos.txt 进行后缀替换,加上 1 0 0 19 19,

    注意后面的去掉名字表示图片在 (0,0)到(19, 19 )的矩形区域里

    b. 对负样本目录下 dir /b >neg.txt  备注负样本目录文件只需要去掉文件名字就好,不需要替换,后面的数字

    2: 下载windows 的安装包,并安装,同时记录安装目录,假如是: openCV_path

    https://sourceforge.net/projects/opencvlibrary/files/opencv-win/3.3.0/opencv-3.3.0-vc14.exe/download

    opencv-3.3.0-vc14.exe

    3: 找到openCV_path 目录下面的

    创建opencv可以识别的数据

    E:\NDK\Opencv\opencv\build\x64\vc14\bin\opencv_createsamples.exe

    训练

    E:\NDK\Opencv\opencv\build\x64\vc14\bin\opencv_traincascade.exe

    :E:\NDK\Opencv\opencv\build\x64\vc14\bin

    中的两个文件:

    opencv_createsamples.exe

    opencv_traincascade.exe

    4:

    4.1 就是加工样本数据,使用opencv_createsamples

    备注配置环境变量

    使用命令行:

    opencv_createsamples -vec pos.vec -info face\pos.txt -bg non-face\neg.txt -w 19 -h 19 -num 472

    -vec pos.vec  用pos.vec 保存执行结果

    -info face\pos.txt 用于指向正样本的路径

    -bg neg.txt 负样本的路径(这么写经常报错,再目录文件直接写对应的文件目录就好)

    -w 19 -h 19    这个是正样本中图片中头像的宽高

    -num 472      正样本的数量

    执行这个命令生成 pos.vec

    4.2 运用  opencv_traincascade 训练样本,得到分类器

    执行命令前,我们要在当前目录创建一个data 文件夹

    执行命令:opencv_traincascade -data data -vec pos.vec -bg face\neg.txt -numPos 468 -numNeg 23573 -numStages 9 -w 19 -h 19 -minHitRate 0.999 -maxFalseAlarmRate 0.5 -mode ALL

    -data data 文件夹: 用于保存训练结果和中间产物

    -vec pos.vec : 4.1 的结果

    -bg face\neg.txt:  负样本的路径

    -numPos 468 正样本的数量 数量不能高于正样本数,注意事项,数据要注意 数量不能随便取 网上查找

    vec文件中的正样本数目<= numpos+(numStages - 1)(1 - minHitRate) numpos+ s

    -numNeg 23573  负样本的数量

    -numStages 9    这个数字是,我们训练的层级

    -w 19 -h 19

    -minHitRate 0.999 -maxFalseAlarmRate 0.5 -mode ALL

    备注:

    可能报错:

    Train dataset for temp stage can not be filled. Branch training terminated.

    Cascade classifier can't be trained. Check the used training parameters.

    把命令改为 将neg.txt copy 到喝pos.vec 统一级别,将里面的文件都加上文件头

    比如non-face/cmu_9972.pgm 这样他就能找到文件了

    opencv_traincascade -data data -vec pos.vec -bg neg.txt -numPos 468 -numNeg 23573 -numStages 9 -w 19 -h 19 -minHitRate 0.999 -maxFalseAlarmRate 0.5 -mode ALL

    说明路径问题

    相关文章

      网友评论

        本文标题:Opencv 人脸识别之分类器,样本训练

        本文链接:https://www.haomeiwen.com/subject/svjobxtx.html