澄清CNN(ConvNet)中的卷积运算

时间:2019-07-14 22:52:22

标签: conv-neural-network convolution

我正在阅读这篇文章:https://towardsdatascience.com/a-neural-algorithm-of-artistic-style-a-modern-form-of-creation-d39a6ac7e715,对于那些想节省时间的人,我的问题与本文的“ VGG 16网络”部分有关:

1-我想清楚地了解卷积运算在CNN中的工作方式,因为某些部分我不太清楚。在查看VGG 16网络的结构时,它提到了卷积块1、2、3、4和5。让我们以块4为例,其中包含以下过滤器结构(所有3x3过滤器):

  • Conv4_1:512个过滤器,每个过滤器的深度为256。
  • Conv4_2:512个过滤器,每个过滤器的深度为512。
  • Conv4_3:512个过滤器,每个过滤器的深度为512。
  • Conv4_4:512个过滤器,每个过滤器的深度为512。

1(A)-如果我们以Conv4_1为例,是否每个滤波器都以串行方式从前一个滤波器的输出中应用其卷积运算。意思是我们在一定深度的末尾得到一个特征图输出。还是在每个卷积块中将所有512个滤波器进行卷积运算到相同的输入,即,将相同的输入同时(以并行方式)馈送到所有512个滤波器。这意味着我们最终获得了具有一定深度的512个特征图输出。我希望这个问题有意义。

1(B)-Conv4_1的输出是否馈送给Conv4_2。同样,将Conv4_2的输出馈送到Conv4_3(再次以串行方式)。还是将相同的输入同时(以并行方式)馈送到所有Conv4_sections(1,2,3,4)?

2(A)-现在指的是深度(即表示每个深度为256的过滤器)。深度如何在这些过滤器中发挥作用,如何按照前面的问题在串行/并行/串行/上下文中应用它们? 2(B)我知道当具有3通道的原始输入图片(代表RBG颜色)时,您也会从深度3的过滤器获得输出结果,但是为什么需要256或512的深度?这是如何运作的? 2(C)也许这个问题与上一个问题相同,但是1个具有256个深度的过滤器在值(什么类型的值)方面包含什么?滤镜的每个深度是否代表滤镜的变化?如果是这样,什么类型的变化?如果不是,那么同一过滤器的不同深度包含什么?

3(A)-我在阅读的所有CNN文献中都注意到,当应用卷积运算时,输入图像的像素值将与滤波器的值相乘,其中0值不会产生任何值,使其进入该滤波器的输出(卷积运算)。因此,从某种意义上说,0值表示缺少有意义的功能,过滤器无法考虑这些特征。但是,从图像的视觉环境来看,0值实际上代表什么? 0只是白色吗?如果是这样,如果图像背景全是黑色,而CNN需要查看和分类的实际前景特征是白色,该怎么办?如果0代表黑色,那么反之亦然(即白色背景和黑色是重要的前景特征)吗?我想我要问的是,如果0代表一种颜色,我们怎么能默认规定0被忽略?任何颜色都可能很重要,具体取决于在该图像中定义为背景和前景的位置。

3(B)-在一些文献中,他们谈论的像素值为0-256,代表像素中颜色的不同组合,甚至是灰度模式(不同的阴影)。但是随后,我在某些CNN文献/文章中读到它们显示的像素值为-1、0和1。所以我很困惑,通常在图像像素中找到的标准值是什么?还是根据某些类别而有所不同?

非常感谢。

1 个答案:

答案 0 :(得分:0)

1&2 :第一步,图像具有3个通道(深度3),一个用于红色,绿色和蓝色。单个过滤器可以访问所有三个通道。没有一个仅处理红色通道的过滤器。单个滤波器具有(3x3x3 + 1)权重(每个输入一个权重,再加上一个偏置)。该滤镜的输出为单个数字(或者,如果需要,则为灰度图像)。您选择使用其中的64个滤镜,从而获得具有64个通道(“颜色”)的图像。

3 :通常在计算机图形学中,图像的通道(红色,绿色,蓝色)每个都是一个字节(红色通道的亮度是0-255)。神经网络非常喜欢实数和归一化的输入,因此通道被转换为具有零均值(在所有图像上平均)和stddev为一。这是针对每个通道(红色,绿色,蓝色)完成的,但对于所有图像的所有像素而言,转换都是相同的(在预处理步骤中完成)。因此,所有三个通道的滤波器输入均为零表示某种灰色。

如果要识别的图案是灰色怎么办?在这种情况下,无论滤波器系数是多少,所有权重都将乘以零。但是,代替检测灰色,一个过滤器可以检测“比灰色亮”,而另一个过滤器可以检测“比灰色更暗”。使用上述偏压,每个滤镜的灰点可以不同(例如,检测除灰色以外的另一种颜色)。将此与非线性(ReLU)相结合,并在随后的层中将两个滤镜组合在一起,这使您可以为图像的灰色区域输出任意数量的数字。