在本教程中,我们将了解对象检测中称为“选择性搜索”的重要概念。我们还将用C ++和Python共享OpenCV代码。
物体检测与物体识别
对象识别算法识别图像中存在哪些对象。它将整个图像作为输入,并输出该图像中存在的对象的类标签和类概率。例如,类标签可以是“狗”,相关的类概率可以是97%。
另一方面,对象检测算法不仅告诉您图像中存在哪些对象,还输出边界框(x,y,宽度,高度)以指示图像内对象的位置。
所有物体检测算法的核心是物体识别算法。假设我们训练了一个物体识别模型,该模型识别图像斑块中的狗。该模型将判断图像中是否有狗。它不会告诉对象的位置。
为了本地化对象,我们必须选择图像的子区域(块),然后将对象识别算法应用于这些图像块。对象的位置由图像块的位置给出,其中对象识别算法返回的类概率高。
生成较小子区域(补丁)的最直接方法称为滑动窗口方法。然而,滑动窗口方法有几个局限性。一类称为“区域提议”算法的算法克服了这些限制。选择性搜索是最受欢迎的区域提案算法之一。
滑动窗口算法
在滑动窗口方法中,我们在图像上滑动框或窗口以选择补丁,并使用对象识别模型对窗口覆盖的每个图像补丁进行分类。它是对整个图像上的对象的详尽搜索。我们不仅需要搜索图像中的所有可能位置,还必须搜索不同的比例。这是因为对象识别模型通常以特定尺度(或尺度范围)进行训练。这导致对数万个图像块进行分类。