Opencv中traincascade+LBP的训练过程及方法
来源:互联网 发布:mysql 表空间大小 编辑:程序博客网 时间:2024/05/22 18:25
今天用opencv中的traincascade+LBP的方法去检测行驶证中的“所有人”字段。 用这个方法去检测,最主要的是准备好充分的正样本和负样本。
标记正样本
通过标记工具标记了1000张行驶证图片,记录下每张图片中的”所有人”字段出现的位置。在这过程中,有2个小技巧,第一就是在标记的时候,在原图上用小黑块把原图上用鼠标标记的矩形框覆盖,即把“所有人”字段遮住,存到负样本目录下,生成一张负样本。第二点为了避免光照色泽等的干扰,在生成正样本的同时,对原图进行直方图均衡化,加大图片对比度,生成一张正样本图,会有更好的鲁棒性。
准备负样本
准备负样本时,多找找与正样本形似的一些图片,例如对于行驶证来说,什么动物啊,花草啊等这类图片基本对效果的影响不大,所以尽量找些学生证啊,毕业证,驾驶证,报纸等图片,与行驶证接近的图,这样会提升训练的效果图。代码
具体如何实现,参考官网资料最靠谱,链接如下:http://www.opencv.org.cn/opencvdoc/2.3.2/html/doc/user_guide/ug_traincascade.html
对于正样本,先通过标注工具生成filename+个数+rect.x+rect.y+rect.width+rect.height的形式,*
中间用tab键做分割,不能用逗号之类的,
*之后通过opencv_createsample转换成vec的文件;将标注好的txt文件放在图片目录下,用以下命令:
opencv_createsamples -vec licenseVec -info /Users/Downloads/imagefile/file.txt -num 2000 -w 45 -h 25 -show
负样本不需要转格式,形成txt文件就行,里面存储的只是文件名称,千万别写成绝对路径,用相对路径就行,因为在训练的时候会将txt文件的当前路径加上文件里存储的图片路径,如果用绝对路径的话,会重复,导致找不到图片。
- 开始训练
准备好数据后,就该训练了,根据官网参数的提示进行设置。一下是我的设置,可参考:
opencv_traincascade -data cascade_license_dir -vec licenseVec -bg LicenseText.txt -numPos 800 -numNeg 4000 -numStages 15 -featureType LBP -w 45 -h 25 -minHitRate 0.99 -maxFalseAlarmRate 0.3 -bt DAB -maxDepth 2
记得-w 和-h就是小写的,还有-minHitRate和-maxFlaseAlarmRate参数,不然训练速度很快,而且训练的效果不理想。 -numNeg会比实际准备的负样本个数大两三倍,并且-w和-h和用opencv_createsamples中用的-w和-h保持一致,不然会报错。
码农就是不段的遇到各种奇怪问题,然后不断的解决,最近被虐的已经习惯了,平常心对待吧。
训练完之后,进行测试,分类器效果还是不够理想,会把相近的都选中,经大神指点,降低 -maxFlaseAlarmRate的参数,提高-numPos参数,以及把负样本也做一次直方图均衡化,在加些报纸杂志,能够区分出所有人字样的负样本。再次进行训练。
中途报错:Can not get new positive sample.The most possible reason id insufficient count of samples is given veg-file.
出现这种错的原因提示中很明显,正样本的数目不够,也就是-numPos设置的大了。加入正样本的数目一共有1900张,-numPos设置的是1800张,那么在第一级分类器中,会在1900张图片中选择1800张,在准确率达到0.99时结束第一级训练,那么分类器认为正样本还有1800*0.99张;到了第二级分类器,依旧需要输入1800张图片,那么还得从剩余的(1900-1800)张图片中选择(1800-1800*0.99)张,加上第一级分类器筛选出的正样本一起去训练,依次类推,假如你剩余的样本少于分类器需要的正样本数目,就会报错。所以设置-numPos的时候尽量是正样本数目的80%左右。
错误:Train dataset for temp stage can not be filled. Branch training terminated.
若出现这种错误,是负样本的路径有问题,-bg 后面的参数只能是文件名称,不能是路径+文件名称,需要把负样本的txt文件放到当前目录下,并在txt文件中的路径加上负样本图片的文件名。
- Opencv中traincascade+LBP的训练过程及方法
- Opencv中traincascade+LBP的训练过程及方法
- 用opencv的traincascade.exe训练行人的HAAR、LBP和HOG特征的xml
- opencv中traincascade训练分类器
- 用opencv自带的traincascade.exe训练给予haar特征和LBP特征的分类器
- 用opencv的traincascade训练检测器
- 用opencv的traincascade.exe训练行人的HAAR、LBP和HOG特征的xml文件,并对分类器进行加载和检测
- opencv中traincascade的一个demo
- 利用OpenCV自带的traincascade程序训练分类器
- OpenCV的traincascade代码分析
- OpenCV的traincascade代码分析
- OpenCV 人脸检测自学笔记(8)_读trainCascade的训练结果的代码笔记
- 用opencv 里面的traincascade.exe训练时,出现错误解决方法。
- opencv中实现LBP
- linux环境下使用opencv训练级联分类器traincascade
- traincascade与AdaBoost的opencv实现框架
- opencv训练过程中遇到的小问题
- OpenCV源码中Haar训练及提取特征的代码
- proxy
- 努力
- 小白训练Day4
- 扑克牌游戏
- 使用nasm实现Fibonacci数列
- Opencv中traincascade+LBP的训练过程及方法
- 文章标题 Chinese Girls' Amusement
- 升级Jenkins及gerrit trigger 插件
- usaco Cowxor (trie 树)
- c++写情诗
- Servlet概述
- TCP三次握手四次挥手
- 菜鸟AngularJS学习之路 【第一天】。(排版修正)
- B