滑动窗口算法及其卷积实现

数据挖掘 深度学习 卷积 物体检测
2022-02-12 12:43:46

我想知道为什么滑动窗口的卷积实现等价于顺序逐步滑动窗口?为什么它们是一样的?

我正在关注 Andrew NG: 据我所知,图片中的第一行应该是一个经过 4 个类训练的卷积网络。

第二行应该是 3 通道 16x16 图像,由第一行(即16 5x5 filters -> 2x2 Max Pool -> 400 5x5 filters -> 400 1x1 filter -> 4 1x1 filter)经过训练的卷积网络进行卷积,据我了解,棘手的部分是输出相当于将 14x14 窗口滑动到 16x16 图像上只有 4 个位置,它们是 2x2x4 输出,2x2 网格中的每个单元格对应 16x16 图像上 14x14 窗口的一个位置。

最后一行是另一个示例,但具有更大的 28x28 图像和相同的窗口大小 14x14。

在此处输入图像描述

1个回答

考虑第二行,即。在 16x16x3 示例中,如果您使用滑动窗口方法,您首先将 14x14x3 区域标记为红色,并将其作为输入传递给经过训练的 CNN。然后会发生什么,5x5x3 过滤器然后对输入的前 5x5x3 进行卷积,即。从左上角开始,然后根据步幅对同一输入的下一个 5x5x3 部分进行卷积,依此类推,就像卷积发生一样。

现在,考虑标记为绿色的 14x14x3 部分(这将是滑动窗口方法中的第二个窗口),它就像第一个红色区域一样,进入您训练的 CNN,因此由与红色区域卷积的相同过滤器进行卷积,所以这么好。

这个绿色输入的第一部分将被卷积?这将与第二个 5x5x3 部分在第一个 14x14x3 绿色区域上卷积的相同,所以会发生相同的 5x5x3 区域经历了相同的操作,即。在这种情况下,相同的卷积两次,这意味着您基本上在相同的 5x5x3 输入上再次进行了相同的计算,一次在红色输入上,然后在绿色输入上。

再次进行相同的计算有什么用,这就是我们使用卷积滑动窗口方法的原因,它每次计算只进行一次,因为你不会一次又一次地做同样的事情,你会节省时间,因此卷积滑动Window Approach 将运行得更快,并且显然与普通的 Sliding Window Approach 执行相同的计算。

注意:CNN 的现代实现非常深入并且涉及大量过滤器,因此您正在做大量冗余工作,这会减慢您的实现速度。

希望能帮助到你。