我目前正在尝试使用带有HOG描述符的OpenCV 2.4.4计算汽车。因为OpenCV中没有汽车检测模型(与已经有探测器模型的人体探测器不同),我使用SVMLight和来自INRIA汽车数据集here的汽车数据集创建自己的模型(正面和负面样本)
然后我使用带有SVMLight的正面和负面样本创建模型(通过跟随this教程和代码,将图像大小调整为128 * 104,因为HOG图像必须是2的幂。我将模型应用到我的程序中,它可以正确检测汽车,但也有很多误报(每个图像3-8个误报)
我在Hala Detector的Dalal论文中读到,我发现该模型需要使用在阴性样本上应用初步模型时发现的误报来重新训练。生成的补丁大小不一,所以我再次将其调整为128 * 104像素。
我使用正面和负面样本重新运行HOG训练计划,例如初步运行,但这次在负样本上添加误报(这是我根据Dalal的论文进行再培训的想法)。然后我有了再培训模型。
不幸的是,我使用新模型运行汽车检测程序,但所有图像都返回时没有汽车检测,尽管我使用了正样本图像和带有汽车的其他图像。
这非常有趣,如果你们中的任何一个人能够指出我做错了什么,我很好奇。任何讨论或问题也表示赞赏!
我尝试了同样的事情,现在使用行人图像。结果仍然相同,初步模型结果导致大量误报。重新训练后,结果没有命中(0.0命中阈值)。如果我将命中阈值降低到-0.1到-0.5,则检测到正面图像,但命中率很低(50-70%)。好吧,我想最终这是关于命中率和误报之间的权衡,但是,再培训可以让模型更准确
修改 在这个论坛中搜索之后,我认为对于我的相机是静态的系统,如果我使用背景分割和blob跟踪会更好。我目前不再探索HOG了,但对于任何知道HOG培训和检测问题所在的人,也许你想在这里发布答案以帮助其他有同样问题的人