有关adaboost中hartraining训练样本用来检测物体
2015-12-30 10:41
471 查看
最近一直在做adaboost的检测 收集了样本用自带的createsample 和haartraining自己训练样本。其中遇到了许多问题,还好最终都解决了,写下来,希望对大家有帮助。
1.首先收集正负样本
分别建立两个文件夹pos和neg存放正负样本
2.然后建立样本描述,在命令窗打开样本所在位置
再cd进pos正样本文件夹 输入 dir /b>pos.txt 就建立了一个正样本描述,可以在pos文件夹中找到名字为pos.txt的文件,打开
该文件
将文件中所有图片的后缀jpg改为jpg 1 0 0 20 20。(1表示正样本,0 0 表示起始位置,20 20表示样本大小)然后删去最后一行不属于图片的信息。
至此正样本描述完成。
同样,cd到neg中做负样本描述,不过不用修改后缀,也就是不用统一大小,只需将neg.txt中最后一行删掉即可。
3.然后建立vec文件。
有人说在创建vec文件时 需要将pos.txt和neg.txt剪切到上一级文件夹,不过我在做的时候并没有这样,在输入的时候带上路径应该也是一样的如:
opencv_createsamples.exe -vec pos.vec -info pos/pos.txt -bg neg/neg.txt -w 20 -h 20 -num 80
参数都很简单 应该一看就明白,不明白的可以再百度。敲完之后就会出现一个pos.vec文件,这是下一步进行训练的基础。
4.使用opencv_haartraining.exe训练样本
在命令提示窗敲入:
opencv_haartraining.exe -data xml -vec pos.vec -bg neg\neg.txt -npos 80 -nneg 100 -w 20 -h 20
这里输入比较简单,相关参数没有输入都采取了默认的。其他参数可以百度。
默认的训练sntages是14层,由于样本选取不大,很快会训练完毕。训练完后会在当前文件夹下出现一个xml.xml的文件 这个就是训练出来的.xml的文件。
5.相关问题:
死循环:训练过程中,可能会在某一层一直停滞不前,后来我层用2000正样本的训练。在某一层一直卡了近一个星期,以为就是慢,实际上是负样本数量不足。
这时,需要ctrl+c停下训练,往负样本中添加图片,然后重新做样本描述,接着之前继续训练,不用担心会从头训练,因为之前训练好的每一层都已经建好了文件夹, 再训练时就直接load这些文件,直接过了前面训练过的了。
unable to read negitiveimages error 2432: 这个问题也纠结了我好久,其实非常简单,就是上面说的路径问题。一般是在pos和neg上一层文件夹做训练,当敲-bg neg.txt的 时候就需要敲入neg/neg.txt,这样就能读取负样本了。
还有一个error 1859的问题,我搜寻答案许久之后,应该是个正负样本比例问题,网上有说7:3 也有1:3的。我也没有准确答案。
1.首先收集正负样本
分别建立两个文件夹pos和neg存放正负样本
2.然后建立样本描述,在命令窗打开样本所在位置
再cd进pos正样本文件夹 输入 dir /b>pos.txt 就建立了一个正样本描述,可以在pos文件夹中找到名字为pos.txt的文件,打开
该文件
将文件中所有图片的后缀jpg改为jpg 1 0 0 20 20。(1表示正样本,0 0 表示起始位置,20 20表示样本大小)然后删去最后一行不属于图片的信息。
至此正样本描述完成。
同样,cd到neg中做负样本描述,不过不用修改后缀,也就是不用统一大小,只需将neg.txt中最后一行删掉即可。
3.然后建立vec文件。
有人说在创建vec文件时 需要将pos.txt和neg.txt剪切到上一级文件夹,不过我在做的时候并没有这样,在输入的时候带上路径应该也是一样的如:
opencv_createsamples.exe -vec pos.vec -info pos/pos.txt -bg neg/neg.txt -w 20 -h 20 -num 80
参数都很简单 应该一看就明白,不明白的可以再百度。敲完之后就会出现一个pos.vec文件,这是下一步进行训练的基础。
4.使用opencv_haartraining.exe训练样本
在命令提示窗敲入:
opencv_haartraining.exe -data xml -vec pos.vec -bg neg\neg.txt -npos 80 -nneg 100 -w 20 -h 20
这里输入比较简单,相关参数没有输入都采取了默认的。其他参数可以百度。
默认的训练sntages是14层,由于样本选取不大,很快会训练完毕。训练完后会在当前文件夹下出现一个xml.xml的文件 这个就是训练出来的.xml的文件。
5.相关问题:
死循环:训练过程中,可能会在某一层一直停滞不前,后来我层用2000正样本的训练。在某一层一直卡了近一个星期,以为就是慢,实际上是负样本数量不足。
这时,需要ctrl+c停下训练,往负样本中添加图片,然后重新做样本描述,接着之前继续训练,不用担心会从头训练,因为之前训练好的每一层都已经建好了文件夹, 再训练时就直接load这些文件,直接过了前面训练过的了。
unable to read negitiveimages error 2432: 这个问题也纠结了我好久,其实非常简单,就是上面说的路径问题。一般是在pos和neg上一层文件夹做训练,当敲-bg neg.txt的 时候就需要敲入neg/neg.txt,这样就能读取负样本了。
还有一个error 1859的问题,我搜寻答案许久之后,应该是个正负样本比例问题,网上有说7:3 也有1:3的。我也没有准确答案。
相关文章推荐
- salt之grains组件
- symbol(s) not found for architecture x86_64 之 linker command failed with exit code 1 (use -v to see invocation)解决方案排查
- 【DP】BZOJ 1260: [CQOI2007]涂色paint
- Git之user.name&user.email配置的影响及修改+备份工作成果
- rails里routes配置文件里的resources和resource的区别
- LeetCode Contains Duplicate II(hash)
- 3D Constraints
- Level of detail
- 51NOD 1305 Pairwise Sum and Divide
- see 二分 again
- POJ-1273 Drainage Ditches 最大流Dinic
- POJ-1273 Drainage Ditches 最大流Dinic
- ORA-38760: This database instance failed to turn on flashback database 第三篇
- FZUoj 题目2216 The Longest Straight*(二分)
- 多线程的使用(1)-performSelectorOnMainThread
- Canvas与Paint的初级使用
- PKU1273Drainage Ditches
- 思杰成为ADC领域在Container容器中提供其产品的第一家主要厂商
- 浅谈RAID写惩罚(Write Penalty)与IOPS计算
- 关于Login failed. The login is from an untrusted domain and cannot be used with Windows authentication.的问题