opencv训练xml的过程

废话不多说,此文章适合会一点点cmd的人及以上,只讲解一些本人的重要步骤和遇到的问题,做过一次后发现很简单

第一步:从网上下载正样本,负样本,我使用了python 脚本到百度图片下载了正样本500来张,负样本1200来张。

按照网上的过程把正样本放在pos文件夹下,负样本放在neg文件夹下

第二步:在windows下使用dir /b pos pos\pos.txt 生成pos.txt文件,使用 dir /b neg neg\neg.txt 生成neg.txt 文件,分别在对应的文件名下。因为描述文件需要包含样本路径,所以在同一文件夹下可以更加方便。

修改pos.txt ,每一行后边加上如 1 0 0 70 70

第三步:我在linux下使用 opencv_createsamples -info posdata.txt-vec pos.vec -num 500 -w 70 -h 70

这样的代码来生成对应的vec文件

第四步:使用opencv_haartraining -data ./xml -vec ./pos/pos.vec -bg ./test/neg/neg.txt -npos 500 -nneg 300 -nstages 4 -nsplits 2 -mem 512 -nonsym -w 70 -h 70 -minpos 100

这样的代码来生成xml文件夹和xml.xml文件

-data 生成的xml文件过程存放在哪里以及xml的文件名

-vec 正样本生成的vec文件pos.vec

-bg 负样本的描述文件neg.txt

补充:

我最终的笔记:

先下载正负样本,约1:3   正样本大小统一,可与负样本不同
    训练时负样本只需要写实际样本数量的 1/nstages 否则会出现负样本数量不足,已经被全部使用
    负样本的描述文件可以是txt,只需要有负样本的路径和文件名称即可
    正样本描述txt需要有如 1.jpg 1 0 0 70 70 的数据(文件名,1个,坐标位置)
    根据txt文件生成vec文件为训练的描述文件
    -data 后边不能使用 ./ 否则不会产生xml文件
    nneg*nstages的值应该小于等于负样本的数量 
    120 300 4 训练了不到1小时
    npos和nneg比例大约1:3
    nstages大小推荐15-20,也有很多选择24或以上的
    440 1350 4 训练了215660秒,大约59个小时
   opencv_createsamples -info pos/pos.txt -vec pos/pos.vec -num 12088 -w 40 -h 40
   opencv_haartraining -data xml -vec pos/pos.vec -bg neg/neg.txt -npos 11000 -nneg 362 -nstages 15 -nsplits 3 -mem 1024 -nonsym -w 40 -h 40 -minpos 755

 

 

你可能感兴趣的:(opencv,xml,训练)