假设在一个图像中有两辆车。考虑到它能在图像中检测到单个汽车,它怎么能检测到这些汽车?
发布于 2016-04-08 10:47:15
尽管生产系统中的许多解决方案仍然使用滑动窗口,如下所述,计算机视觉领域正在快速发展。这一领域的最新进展包括R-CNN和YOLO。
检测图像中的对象匹配,当您已经训练了对象分类器时,通常是通过图像块进行暴力扫描的问题。
从最大的预期补丁大小开始。例如,如果你的图像是1024x768,但总是一段距离的道路,也许你不会期望任何汽车在图像中超过80 x 80像素。所以你从图像的一个角落取一个80x80像素块,然后问你的分类器,在这个角落里有一辆车的可能性有多大。然后采取下一个补丁-也许移动20像素。
重复所有可能的位置,并决定哪些补丁最可能包含汽车。
接下来,减小一个块的大小(可能是60x60,每次移动15个像素),然后再重复同样的练习。重复这一点,直到你达到了你的目标的预期最小块大小。
最终,你会在图像中有一个区域列表,每个区域都包含一辆汽车的概率。
具有高概率的重叠块最有可能是同一辆车,因此逻辑需要有合并块的阈值--通常采用概率分数最高的重叠区域,并声明该区域只有一辆车。
与通常的ML方法一样,您需要试验正确的元参数--在这种情况下,块大小、步骤大小和合并/拆分区域的规则--以获得最精确的结果。
发布于 2016-04-12 03:00:41
我想通过分享我的应用程序来添加@Neil的答案。
在我的应用程序中,我想要训练一个模型,它可以从这样的国际象棋书中自动加载一个国际象棋位置:


这不是一个困难的问题,因为这就像训练MINST数字。我收集了足够的样本,随机地在这些样本中添加了一些噪音。我的模型是两层卷积式的深度学习。

现在,我有另一个多层卷积网络来检查板中的每个方格。步长是图像的维数除以8(因为每个维度有8个平方)。补丁大小与步长相同。
我的管道工作,因为我能够结合两个不同的分类器。我个人更喜欢训练两个分类器,因为它会更容易训练和验证比尝试把所有的东西放在一个单一的模型。
发布于 2016-04-08 09:42:30
问题本身并不十分清楚,因为您没有说明您有一个模型可以检测一辆汽车每次运行的图像,或者您只是问您要使用哪些工具、算法或框架来检测图像中的汽车(或其他对象)。
回答第二个变体时,您应该使用已开发的对象检测算法,这些算法要么是Haar级联(嵌入到OpenCV中,并且有关于如何训练自定义对象检测器(例如香蕉教程)的明确教程),要么是CNN,它们是使用神经网络进行对象检测的选择,就我个人而言,我喜欢使用执行情况 --简单、全面的代码和惊人的结果。
这两种方法(Haar级联和CNN)基本上都能找到描述特定对象(无论是脸、香蕉、汽车或不明飞行物)的相互关联和共存形状的模式,并使用这些模式在新图像上查找对象。互包含检测到的对象(当对象的边界相交或一个被另一个包含时)用于寻找每个区域的最佳匹配。
https://datascience.stackexchange.com/questions/11091
复制相似问题