使用dlib训练行人探测器的最佳方法

时间:2016-04-07 09:33:42

标签: c++ opencv object-detection dlib

我正在尝试使用dlibINRIA Person Dataset训练行人探测器。

到目前为止,我使用了27张图像,训练速度很快,但结果并不令人满意(在其他图像上,行人很少被识别)。以下是我使用dlib附带的train_object_detector程序(在/ exmaples目录中)进行培训的结果:

  

将训练有素的探测器保存到object_detector.svm

     

在训练数据上测试探测器......

     

测试检测器(精密度,召回率,AP):1 0.653061 0.653061

     

使用的参数:

     

主题:4

     

C:1

     

eps:0.01

     

目标尺寸:6400

     

检测窗口宽度:47

     

检测窗口高度:137

     

多次上采样:0

我知道其他图像需要添加到训练中以获得更好的结果但在此之前我想确定结果中打印的每个参数的含义(精度,召回,AP,c, eps,...)我也想知道你是否对训练有任何建议:选择什么图像?需要多少张图片?我是否需要注释图像中的每个对象?我是否需要忽略图像中的某些区域? ...

最后一个问题,是否有任何经过训练的探测器(svm文件)可以用来比较我的结果?

感谢您的回答

1 个答案:

答案 0 :(得分:1)

我特别不熟悉dlib,但是让我告诉你,27张图片不会得到好的结果。为了更好地概括,您的分类器需要查看具有多样性数据的许多图像。给同一个人穿着相同服装的10,000张照片提供它对你没有任何好处。你想要不同的人,服装,设置,角度和灯光。 INRIA数据集应涵盖其中的大多数。

您的检测窗口尺寸和上采样设置将决定人们必须在图像中查看的大小,以便训练有素的分类器可靠地检测它们。您的设置将仅检测1个比例的人,他们大约137​​/47像素高/宽。如果您甚至一次上采样,您将能够以较小的比例检测到人物(上采样使人看起来比他们更大)。我建议你使用一个更大的数据集并增加上采样数量(你的上采样量是另一个讨论 - 看起来是内置到库中)。事情需要更长的时间,但这就是训练分类器的本质 - 调整参数,重新训练,比较结果。

为了精确/召回,我会向您推荐this维基百科文章。这些不是参数,而是分类器的结果。你希望两者尽可能接近1。