HaarCascade培训:合并.lst文件

时间:2019-05-22 15:39:36

标签: python opencv training-data haar-classifier

我正在使用HaarCascade开发自己的对象检测器。顺便说一句,我被困在某个地方,我将在下面解释。

情况是这样的: -我收集了100张物体的图像(比如说苹果) -我收集了大约 1500张底片图像 -我创建了 negatives.txt ,该文件包含底片图像的路径 -我创建了 positives.txt ,该文件包含我的正像的路径,对象数,坐标和尺寸

现在,这就是问题所在。

使用opencv_createsamples.exe扩展我的数据/图像,我看到如果我对每个对象图像执行相同参数的输出,则输出将或多或少为1000个正图像(负背景+对象)以及.lst file包含负像内的路径和对象坐标。 这些坐标不会改变(因为我在执行opencv_createsamples.exe时进行了设置)。

问题是:更改createsamples我的每个对象图像所需的参数,然后将它们全部合并,这是一个好主意吗?

我现在正在做什么的示例:

  • opencv_createsample.exe -p1 0.5 -p2 0.6 -p3 0.7
  • 针对我的每个底片,为我的一个目标图片
  • .lst文件(带有信息的文件(如果对每个正对象图像都执行相同)

我愿意做的事的例子:

  • 对于我的每个底片,对于我的每个对象图像
  • opencv_createsample.exe -p1 0.5 -p2 0.6 -p3 0.7-opencv_createsample.exe -p1 0.6 -p2 0.7 -p3 0.8,依此类推(带有参数的随机值)
  • 每个对象图像的多个.lst文件具有不同的信息
  • 所有.lst的合并

我真的希望我能解释一切。

我怀疑这样做的效率:通过在不同位置使用不同对象(同一类)进行训练,或者仅使用一个对象就可以达到相同的精度?

词汇表:

  • object =我要检测的东西(一个苹果)
  • 负图像=不包含对象的背景图像
  • 正图像=带有负+对象的已处理图像(创建样本输出)

谢谢

更新

在HaarCascade上观看Sentdex视频后,Training Haar cascade object detection - OpenCV with Python for Image and Video Analysis 20

1 个答案:

答案 0 :(得分:0)

我认为在每个(正)图像中使用多个对象训练模型时,您会获得更好的结果。它还取决于您要实现的目标。 1.尝试在问题中提到的两种方法,并使用相同的图像对其进行测试。 2.比较有效性(检测的准确性)和效率(例如,速度是否存在明显差异?)