卷积核,图像分类

说一下卷积核吧,

nn.Conv2d(3,32,5,1,2),这个是一个卷积层,3代表通道数,32代表输出通道,1代表stride,2代表padding,当然不止有这些参数还有一些是默认参数也可以改变这里用这些就够了

以图像分类网络结构为例,说一下网络结构:

conv2d二维卷积核,专门做图像特征提取。

经过一层卷积层拿到特征图,再通过激活函数加入非线性特征之后再通过回归层对特征图进行回归,池化层对特征图进行池化,池化会影响特征图的大小不会影响通道数。

上述循环几次之后进行flattern层进行展开,就是把最后一层输出的特征图进行平展成一维,之后再通过线形层映射到分类,最后得到的是,比如有10个分类线性层最后就输出一组大小为10的数据代表是每一个类的概率,然后这就拿到分类了。在进行可视化便于观察。

首先先解释一下这个通道数吧这个意思就是这个数是几他就会有几个图片,意思就是如果输入通道数是3就是代表要对3个图进行卷积,如果输出值是3就是代表输出3个图。

还有一点很重要,卷积层就是为了提取图片中的特征图,这个图越多那他这个识别图像就更加准确,这个输出的特征图啥意思呢,解释一下,比方说rgb图像有3个通道,就是红绿蓝,这个三个相同大小的矩阵嗯就可以人为了叠层把他们叠起来最终就是我们看到的图片,同样的要看特征图是啥,就是把输出的特征图全部叠加起来就是一个可视化的效果了看的比较清晰。

现在来具体说一下上面的分类流程吧,给一个例子:

self.model = nn.Sequential(
    nn.Conv2d(3,32,5,1,2),
    nn.MaxPool2d(2),
    nn.Conv2d(32,32,5,1,2),
    nn.MaxPool2d(2),
    nn.Conv2d(32,64,5,1,2),
    nn.MaxPool2d(2),
    nn.Flatten(),
    nn.Linear(64*4*4,64),
    nn.Linear(64,10)
)

nn.Conv2d(3,32,5,1,2),这一层么就是代表输入通道数是3很显然他是要求输入的图片的rgb图片,32代表输出通道,代表这一层提取到了32个特征图,1,2这俩就不做解释了,可以看一下卷积过程吧这里就不在赘述很简单, nn.MaxPool2d(2),这一层呢就是池化了,这个池化就是对特征图片大小进行缩小,为了去除冗余的信息,因为只要能表示出来特征就行其他的像是背景啥的就不需要了,nn.Flatten(),这个呢就是把上一层得到的特征图就是64个给他变换一种形式变成一维的,nn.Linear(64*4*4,64),64*4*4这个就是4*4呢代表通过上述操作之后这个图片的大小变成了4*4因为这里stride和padding是1,2的原因这个特征图大小和原来图像大小相同,那么影响这个大小的就是这个池化层从这里我们能看到原来出入图像大小应该是最小是32*32。nn.Linear(64,10)这个就是把这个特征图映射到10个类别,比如【1,2,3,4,5,6,7,8,9,10】比如这是输出把就是选最大的比如10就是代表这个图片是第10个坐标对应标签的类的概率是10.就这个意思,一般这个都是小于1的,这就差不多了。

说一些别的吧,上述步骤执行完之后就知道了一些信息,然后就是比对了,得到loss值然后进行优化这个计算这个损失值得方式很重要,因为这个模型得评估训练中这个loss是很重要的指标所以这个loss值算得方式就是最后的结果,这段话很重要看一些别的模型比如yolo看到这个损失函数,这也是一个这个深度学习得一个魅力把,只要最终目标定了他就按照这个目标走,最终就是你想要的效果,我们这里加入的是线性层看不太出来作用,但是如果不是先行层你想假设我最后结果是一个30个数得数组比如后10个代表每一个类得概率,这是我们划分的那么计算机通过网络最后是怎么知道的呢就是无限的趋近,通过训练最终他后10个就是代表10个类得概率。

然后来看一下这个模型训练过程中会有的一些调整参数矩阵到底调整的是什么把,首先参数你得知道每一层得参数指的是啥吧,比如 nn.Conv2d(3,32,5,1,2),这一层对吧简单说呢就是他的下一层卷积层是 nn.Conv2d(32,32,5,1,2),他要求这个输入通道是32,那么如何确定这个nn.Conv2d(3,32,5,1,2)这一层之后输出的就是32呢这里就要说到参数矩阵了,他是4维得就是(

输出通道,输入通道,长度,宽度),怎么算参数呢,首先这个长度和宽度就是卷积核得大小,一个卷积核要对输入得所有特征图进行一次卷积之后生成得所有矩阵之后进行相加得到一个最终得矩阵,所以这个参数很显然就是每一个卷积核得参数成所有卷积核数目,就是每一个咋算呢,比如卷积核大小是5*5,输入通道是32那么就是5*5*32对吧很好理解吧,因为输入有32张特征图所以要对32张图片都要进行卷积。这就是卷积层输出得过程,这个参数矩阵会在这个网络设置的时候就被初始化。然后不断地优化最后可以准确的识别特征。

这个流程就很清晰了吧,说白了就是再调整卷积核网格得值还有偏执值,对图像得所有操作都是卷积核进行,直到这个卷积核能够较高正确率的识别物体特征。

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
卷积神经网络(Convolutional Neural Network, CNN)是一种常用于图像分类的深度学习模型下面是卷积神经网络图像分类的基本流程: 1. 数据预处理:首先,需要准备好图像数据集,并进行预处理。预处理的步骤包括图像的归一化、大小调整等,以便于输入到网络中。 2. 卷积层:卷积层是卷积神经网络的核心组成部分。它通过滑动一个小的窗口(卷积核)在输入图像上进行卷积操作,提取图像的特征。卷积操作可以捕捉到图像中的局部信息,并保留空间结构。 3. 激活函数:在卷积层后,通常会应用一个激活函数(如ReLU)来引入非线性变换,增加网络的表达能力。 4. 池化层:池化层用于减小特征图的尺寸,同时保留主要特征。最常用的池化操作是最大池化,它从输入中提取出最显著的特征。 5. 全连接层:在经过多个卷积和池化层之后,通常会连接一个或多个全连接层。全连接层将前面各层提取的特征进行组合,生成最终的分类结果。 6. 输出层:在全连接层后,使用softmax函数进行多分类概率的计算,并输出最终的分类结果。 7. 损失函数和优化:为了训练网络,需要定义一个损失函数来度量网络输出与真实标签之间的差异。一般常用的损失函数是交叉熵损失函数。然后使用反向传播算法来计算梯度并更新网络参数,以最小化损失函数。 8. 训练和测试:通过将训练数据输入到网络中进行反向传播和参数更新,使得网络能够逐渐学习到图像分类任务。然后使用测试数据来评估网络在未见过数据上的性能。 以上是基本的卷积神经网络图像分类流程,具体的网络结构和超参数的选择可以根据具体任务进行调整和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值