I read this post to create a custom xml file haartraining
答案 0 :(得分:0)
阴性样本可以是任何大小,训练将自动选择子窗口和子窗口的缩放版本(因为需要maaaaany阴性样本)。对于每个负片图像,您需要一条带有.txt文件中路径的行。如果您想使用完全符合探测器尺寸的“硬样本”,则必须将负图像裁剪到相关区域并手动调整大小以适应目标尺寸。
正样本可以是任何大小,但您必须准备一个.txt文件,其中包含对象所在图像内部的信息。
例如,如果图像为C:\haartraining\positives\image00001.png
且单个对象位于roi位置(x,y,width,height)
,则.txt文件必须包含行C:\haartraining\positives\image00001.png 1 x y width height
。此宽度/高度可以是任何大小(每个图像不必相同),稍后将通过opencv_createsamples缩放到目标大小。
对于haar培训,您需要一个.vec文件而不是.txt文件,您可以使用opencv_createsamples二进制文件创建.vec文件。这个二进制文件至少有3种不同的模式来创建样本:
1. Just transform your positive images to a .vec file by scaling and formatting.
2. Create a lot of positive images by providing some background images, a single positive image and constraint about how the sample may be transformed/distorted.
3. Create Test images which can be used to test the training result, by placing positive images inside of some bigger scene background images.
我只有1.
的经验,所以我无法帮助其他人。您只需输入正面文本文件和目标窗口大小以及您拥有的正面图像数量,opencv_createsamples将创建.vec文件,您需要使用opencv_trainingcascade进行培训。
在opencv_traincascade中你必须注意为numPos和numNeg提供一个好号码,因为在每个阶段你都会“丢失”样本,如果没有经验可能会有点混乱。例如,如果您的vec文件包含8000个正图像,则无法告诉opencv_haartraining在每个阶段使用8000个正图像,因为minHitRate例如为0.995,在第一个阶段之后可能只剩下7960个正样本(最坏的情况) )。对于负面样本也是如此,但是要告诉你实际有多少样本并不容易......
afaik,在creatamples和traincascade中宽度和高度必须相同!它必须是您希望在训练后检测对象的最小大小,但它必须足够大才能保存相关信息。也许你需要测试一下,直到找到最佳尺寸。但不幸的是,由于训练期间的记忆问题,其大小非常有限。例如,我无法训练大于约。 30×30。通过科学评估Afaik人脸检测结果,可以得到24x24不带或20x20带有树枝的好结果。
请告诉我这是否能回答你的问题。