OpenCv:创建 xml 训练 haartraining 的图像大小?
OpenCv: size of images to create an xml training haartraining?
I read this post to create a custom xml file haartraining
- 正负图像必须具有相同的尺寸(宽度 x
身高)?
- 正像必须和负像大小一样吗?
- in createsamples 和 opencv_traincascade 我应该在
参数 -h 和 -w?
负样本可以是任意大小,训练将自动 select subwindows 和 subwindows 的缩放版本(因为需要 maaaaany 负样本)。对于每张负片图像,您需要一行包含 .txt 文件中的路径。如果您想使用完全适合检测器尺寸的 "hard samples",您必须将负片图像裁剪到相关区域并手动调整它们的大小以适合目标尺寸。
正样本可以是任意大小,但您必须准备一个 .txt 文件,其中包含对象位于图像内部位置的信息。
例如,如果图像是 C:\haartraining\positives\image00001.png
并且单个对象位于 roi 位置 (x,y,width,height)
,那么您的 .txt 文件必须包含行 C:\haartraining\positives\image00001.png 1 x y width height
。这个 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.
的经验,所以我无法帮助其他人。您只需输入正文本文件和目标 window 大小以及您拥有的正图像数量,然后 opencv_createsamples 创建您需要使用 opencv_trainingcascade 进行训练的 .vec 文件.
在 opencv_traincascade 中,您必须注意为 numPos 和 numNeg 提供正确的数字,因为在每个阶段您将 "lose" 样本,如果没有经验,这可能会有点混乱。例如,如果您的 vec 文件包含 8000 个正图像,您不能告诉 opencv_haartraining 在每个阶段使用 8000 个正图像,因为 minHitRate 例如 0.995 可能只剩下 7960 个正样本。阶段(最坏情况)。负样本也一样,但要说出你有效拥有多少样本并不容易...
afaik,createsamples 和 traincascade 中的宽度和高度必须相同!它必须是你想要在训练后检测物体的最小尺寸,但它必须足够大以容纳相关信息。也许您需要进行一些测试,直到找到最佳尺寸。但不幸的是,由于训练期间的内存问题,大小非常有限。例如,我不能训练大于大约。 30x30。 Afaik 人脸检测经过科学评估,无论是 24x24 没有还是 20x20 有一些树分裂都产生了良好的结果。
请告诉我这是否回答了您的问题。
I read this post to create a custom xml file haartraining
- 正负图像必须具有相同的尺寸(宽度 x 身高)?
- 正像必须和负像大小一样吗?
- in createsamples 和 opencv_traincascade 我应该在 参数 -h 和 -w?
负样本可以是任意大小,训练将自动 select subwindows 和 subwindows 的缩放版本(因为需要 maaaaany 负样本)。对于每张负片图像,您需要一行包含 .txt 文件中的路径。如果您想使用完全适合检测器尺寸的 "hard samples",您必须将负片图像裁剪到相关区域并手动调整它们的大小以适合目标尺寸。
正样本可以是任意大小,但您必须准备一个 .txt 文件,其中包含对象位于图像内部位置的信息。
例如,如果图像是 C:\haartraining\positives\image00001.png
并且单个对象位于 roi 位置 (x,y,width,height)
,那么您的 .txt 文件必须包含行 C:\haartraining\positives\image00001.png 1 x y width height
。这个 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.
的经验,所以我无法帮助其他人。您只需输入正文本文件和目标 window 大小以及您拥有的正图像数量,然后 opencv_createsamples 创建您需要使用 opencv_trainingcascade 进行训练的 .vec 文件.
在 opencv_traincascade 中,您必须注意为 numPos 和 numNeg 提供正确的数字,因为在每个阶段您将 "lose" 样本,如果没有经验,这可能会有点混乱。例如,如果您的 vec 文件包含 8000 个正图像,您不能告诉 opencv_haartraining 在每个阶段使用 8000 个正图像,因为 minHitRate 例如 0.995 可能只剩下 7960 个正样本。阶段(最坏情况)。负样本也一样,但要说出你有效拥有多少样本并不容易...
afaik,createsamples 和 traincascade 中的宽度和高度必须相同!它必须是你想要在训练后检测物体的最小尺寸,但它必须足够大以容纳相关信息。也许您需要进行一些测试,直到找到最佳尺寸。但不幸的是,由于训练期间的内存问题,大小非常有限。例如,我不能训练大于大约。 30x30。 Afaik 人脸检测经过科学评估,无论是 24x24 没有还是 20x20 有一些树分裂都产生了良好的结果。
请告诉我这是否回答了您的问题。