Machine learning 理解计算机视觉conv网络中过滤器的概念

Machine learning 理解计算机视觉conv网络中过滤器的概念,machine-learning,keras,computer-vision,conv-neural-network,Machine Learning,Keras,Computer Vision,Conv Neural Network,我试图理解计算机视觉conv网络中过滤器的概念。我了解它们的功能,例如,它们可以用来降低输入图像的维数,等等。。。。 我的困惑是这些过滤器是从哪里来的 例如,我在看一个教程,其中显示要检测垂直线/边,我们可以使用3x3形状的过滤器[[-1,0,1],-1,0,1],-1,0,1]。。。我们是怎么得出这个矩阵的? 即使使用Keras,我也只需要通过我想要使用的过滤器的数量 model.add(Conv2D(64, (3, 3), padding='same', input_shape=x_trai

我试图理解计算机视觉conv网络中过滤器的概念。我了解它们的功能,例如,它们可以用来降低输入图像的维数,等等。。。。 我的困惑是这些过滤器是从哪里来的

例如,我在看一个教程,其中显示要检测垂直线/边,我们可以使用3x3形状的过滤器
[[-1,0,1],-1,0,1],-1,0,1]
。。。我们是怎么得出这个矩阵的? 即使使用Keras,我也只需要通过我想要使用的过滤器的数量

model.add(Conv2D(64, (3, 3), padding='same', input_shape=x_train.shape[1:]))
其中64是我要应用于输入的筛选器数。。。但Keras或任何其他库如何决定过滤器矩阵将包含哪些数字?我很困惑

假设您有1000个图像的输入空间,每个36x36x3,其中3是通道(一个用于R、G和B)。。。这意味着我们有3个矩阵代表每个图像。。。总计为1000 x 3=3000个矩阵

现在,如果我想检测整个图像的边缘,我所说的边缘是指要检测图像是笔记本电脑还是手机的物体轮廓,这在conv网络中是如何实现的?查找边的概念只是抽象的,查找边的所有含义都是在您要评估的矩阵和在输入空间中标记的矩阵中相似位置处的相似数字/激活

总之,任何机器学习库是如何决定初始化这些过滤器的?比如说,对于我们的示例,我想应用18x18x3过滤器,这些过滤器矩阵是什么样子的?如何在初始层中应用它们,以及在深网中使用时如何填充它们

有人能帮我理解吗


谢谢。

简而言之,过滤器是随机初始化的。卷积网络然后在大量带有标签的图像上进行训练

通过训练过程,特征提取部分(conv过滤器)和分类部分(通常是密集层,在conv过滤器之后发现)协同工作,以在图像上产生最佳分类结果。错误的分类结果会导致特征提取部分中过滤器的权重以特定方式改变(反向传播)。这一过程被重复了大量次,之后导致最佳分类性能的过滤器最终被“选择”为最终模型的一部分

边缘对于图像分类非常重要,因此,如果模型希望正确分类图像,它会在早期“学习”以识别边缘。因此,虽然这个过程可能看起来是随机的,但CNN过滤器通常会识别早期层中的边缘和颜色,因为这会导致最佳分类

在更深层,过滤器从这些简单的边缘和颜色中学习更复杂的对象。这就是CNN和ANN通常所做的“分布式学习”的力量,学习简单函数的函数以创建更复杂的函数。

看一看