Convolutions Over Volume
Last updated
Was this helpful?
Last updated
Was this helpful?
你们已经了解了卷积在二维图像上是如何工作的 现在,让我们看看如何实现这个卷积算法 但不是对二维图像 而是对三维图像 让我们举个例子 假设你想在这图片中检测特征 不仅仅是是对灰度图像 而是对RGB(红绿蓝)图像 因此,一个RGB(红绿蓝)图像的尺寸不会是六乘六 而会是六乘六乘三 这里的三对应颜色的三通道 因此,你可以将此看作是三张六乘六图像的叠加 为了检测这个图像中的图像边缘或一些图片中的其他特征 你可以跳过这里 不是使用三乘三大小的过滤器 像我们之前那样 只是现在用的是三维过滤器 也就是说过滤器大小是三乘三乘三 因此,过滤器本身将有对应的三层分别是 红、绿、蓝三个通道 给这些命名 这里第一个‘6’ 是图像的高度 这是图像的宽度,这里的‘3’是通道数目 并且你的过滤器有着类似的高度 宽度和通道数目 并且图像中的通道数目 必须和过滤器的通道数目相符 因此这两个数必须相等 我们将在下一个幻灯片中看到,卷积运算实际上是如何工作的 然而这里的输出将会是一个四乘四的图像 并且要注意这里是四乘四乘一 在最后不再有‘3’的出现 让我们研究这当中工作的细节,但先用一张清晰的图像来表示 这里是一个六乘六乘三的图像 这里是一个三乘三乘三的过滤器 并且这个最后的数字 通道数目与三维图像和过滤器的层数相符 因此,为了简化三乘三乘三的过滤器 而不是理解成矩阵的叠加 有时我会画成像这样的三维立方体 为了计算这个卷积运算的结果 你所需要做的是采用三乘三乘三的过滤器,然后首先 将它放在最左上角的位置 因此,你会注意到这个三乘三乘三的过滤器有27个数字 或者27个参数,这是3的立方体 接下来,你要做的是用这个立方体中的每一个数字 以及分别与图像的红,绿,蓝三通道 的对应数字相乘 于是从红色通道提取前九个数字 然后提取下面的绿色通道的三个数字 接着提取下面蓝色通道的三个数字 然后与相对应的左边这个黄色方块里 的27个数字相乘。 把所有这些数字相加就能得到你输出中的第一个数字, 为了得到下一个数字你需要把这个方块挪到下一个位置, 然后再一次做27次相乘, 把这27个数字相加, 就得到下一个输出数字了, 完了再做下一个位置的 下一个数字, 就能得到第三个输出值,以此类推。 然后往下一行的下一个数, 然后一个接一个, 你懂了吧, 直到最后, 在这个位置你会得到最后的输出值。 那么你用了这些能做什么呢? 来看一个例子, 这个过滤器是333的, 所以如果你想要检测图片里红色通道的边缘, 那你可以在第一层过滤器上, 最左一列1,最右一列-1,与之前一样, 然后在绿色通道上全部用0, 在蓝色通道上也全部用0。 如果你用的是这三层相叠加来获得你的333过滤器, 那么这个过滤器就可以 仅仅检测红色通道的垂直边缘。 或者,如果你并不在意一个垂直边缘属于哪个颜色, 那么你可能会想要一个这样的过滤器, 左边都是一列1, 右边都是一列-1, 同时在三个通道上。 所以,通过这第二种不同的系列,设定参数 你会得到一个边缘检测器 333的能边缘检测器 能检测任何颜色的边缘 通过使用不同的参数你可以 从这个333的过滤器中得到不同特征的检测器。 通常在计算机视觉领域 当你的输入有一个固定的高度和宽度, 和一个固定数量的通道, 那么你的过滤器可能会有不同的高度, 和不同的宽度,但有相同数量的通道。 理论上来说,我们可以有一个只负责红色通道的过滤器, 或者一个只负责绿色通道或蓝色通道的过滤器。 那么再一次地,你会注意到做一个体积的卷积时, 用一个333来卷积663, 会得到一个44的结果,也就是一个二维的输出。 那么你现在知道了如何在体积上做卷积, 最后还有一个对于建立卷积神经网络 非常重要的概念, 那就是,如果我们不仅仅想要检测垂直边缘呢? 如果我们想同时检测垂直边缘和水平边缘, 又或者是45度边缘或者70度边缘, 换句话来说,如果你想要同时应用多个过滤器呢? 那么,这是我们之前那张幻灯片用的图片, 我们用333来卷积663, 得到了44 这可能是个垂直边缘检测器, 或者这是用来检测其他某个特征。 现在,这里有一个可能是第二个用橙色表示的过滤器, 这可能是个水平边缘检测器。 那么之前通过第一个过滤器来卷积我们已经得到了的第一个44输出, 然后用第二个过滤器来卷积就能得到一个不同的44输出。 我们可以用这两个44输出, 把第一个放在前面, 然后用这第二个过滤器,让我画一下, 按照以下顺序放在后面, 那么将这两个一起叠加, 你会得到一个442输出体积对吧, 你可以把这个体积理解为,就像我画的这个盒子 可能看着像这样。 那么这就是一个442的输出立方体, 也就是通过用两个不同的333过滤器来 卷积或者说应用在663图片上, 得到了两个44输出,然后相叠加 来得到一个442立方体。 这里的2代表我们用了两个不同的过滤器。 那么让我们来总结一下这里的维度, 如果你有nn通道数量的输入图片, 在这个例子中,663, 这里n的下标c代表通道的数量, 你用它来卷积一个ffn下标c 同样的通道数量, 所以结果是333, 通常来说这两个地方的值必须是相同的。 然后,你会得到一个 n-f+1 乘以 n-f+1乘以这边的nc', 或者说下一层的nc, 也就是你所用的过滤器的数量。 那么这个例子中就是442。 我在写这些的时候都是假设你用的都是1,没有别的值。 但假如你使用不同的值, 那么这边的n-f+1将会被影响, 就如我们之前的视频中见到的。 所以这个在立方体上做卷积的概念 实际上非常强大。 其中一小部分的作用在于你现在可以 直接处理拥有3个通道的RGB图片。 但是更重要的是, 你现在可以检测两个特征,比如垂直、水平边缘, 或者10个,128个 甚至几百个不同的特征。 那么这个输出会是通道的数目 等于过滤器的数目 这里有个需要注意的表达法, 我一直在用你的通道数量作为最后一个维度, 而在文献里人们经常称之为3D立方体的深度, 这两种表达法,无论是通道或者是深度,都常出现在文献中。 但有人会觉得‘深度’更难以理解, 因为你通常也会说到神经网络的深度, 所以我将会在这些视频中用‘通道’来表示 这第三个维度的大小。 那么你现在知道了如何在立方体上做卷积, 就该准备好应用卷积神经网络上其中一层了。 在下一个视频中我们来看看那是如何做到的。