图片经卷积或池化后尺寸大小计算

这篇具有很好参考价值的文章主要介绍了图片经卷积或池化后尺寸大小计算。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 卷积

卷积层的作用是提取输入图片中的信息,这些信息被称为图像特征,这些特征是由图像中的每个像素通过组合或者独立的方式所体现,比如图片的纹理特征,颜色特征。

卷积层有很多卷积核,通过做越来越多的卷积,提取到的图像特征会越来越抽象。

# 此方法中有初始化的卷积核,因此只需要指定卷积核大小即可,不需要管其中内容
torch.nn.Conv2d(in_channels, 
                out_channels, 
                kernel_size, 
                stride=1, 
                padding=0, 
                dilation=1, 
                groups=1, 
                bias=True, 
                padding_mode='zeros')
  • in_channels:参数代表输入特征矩阵的深度即channel,比如输入一张RGB彩色图像,那in_channels=3

  • out_channels:参数代表卷积核的个数,使用n个卷积核输出的特征矩阵深度即channel就是n

  • kernel_size:参数代表卷积核的尺寸,输入可以是int类型如3,代表卷积核的height=width=3,也可以是tuple类型如(3, 5)代表卷积核的height=3,width=5

  • stride:参数代表卷积核的步距,默认为1,和kernel_size一样输入可以是int类型,也可以是tuple类型【传入若为(2,3),即卷积核每次向右移动2格,右边不够位后回到起点向下移动3格重新开始】

  • padding:参数代表在输入特征矩阵四周补零的情况默认为0【上图👆就在外围补了一圈0】,同样输入可以为int型如1代表上下方向各补一行0元素,左右方向各补一列0像素

    如果输入为tuple型如(2, 1)代表在上方补2行下方补2行,左边补1列,右边补1列。padding[0]是在H高度方向两侧填充,padding[1]是在W宽度方向两侧填充

  • bias:参数表示是否使用偏置,默认使用

  • 其余参数较少使用,此处省略

1.1 张量卷积后的尺寸

在卷积操作过程中,我们知道矩阵经卷积操作后的尺寸由以下👇几个因素决定:

  • 输入图片的大小 W × W W \times W W×W

    若大小为 H × W H \times W H×W,则用下边公式👇分别计算得到新的HW,二者相乘为矩阵尺寸N

  • 卷积核kernel_size大小 K × K K \times K K×K

  • 步长stride大小S

  • 填充padding大小P

矩阵尺寸  N = ⌊ W − K + 2 P S ⌋ + 1 如下代码经过卷积得到的矩阵尺寸为 N = ⌊ 5 − 2 + 2 × 1 2 ⌋ + 1 = 3 矩阵尺寸\ N = \left \lfloor \dfrac{W − K + 2P }{S} \right \rfloor + 1\\ \\ 如下代码经过卷积得到的矩阵尺寸为N = \left \lfloor \dfrac{5 − 2 + 2\times 1 }{2} \right \rfloor + 1=3 矩阵尺寸 N=SWK+2P+1如下代码经过卷积得到的矩阵尺寸为N=252+2×1+1=3

import torch
import torch.nn as nn
# 利用标准正态分布填充
# 四维分别对应:(batch_size,channel,H,W)
im = torch.randn(1, 1, 5, 5)
c = nn.Conv2d(in_channels=1, out_channels=1,
              kernel_size=2, stride=2, padding=1)
output = c(im)
print("原(1,1,5,5)张量:")
print(im)
print("经卷积处理后的张量:")
print(output)

1.2 对 channel 的理解

具体可看此博客👉:理解卷积神经网络中的通道channel

  1. 最初输入的图片样本的 channels ,即in_channels,取决于图片类型,比如RGB图像作为输入时channels=3

  2. 卷积操作完成后输出的 out_channels ,取决于卷积核【可以理解为每个卷积核通过计算会得到 “一层” 结果,层数即为通道数】的数量。此时的 out_channels 也会作为下一次卷积时的卷积核的 in_channels

多层的卷积核叫做过滤器

  • 卷积核就是由长和宽来指定的,是一个二维的概念
  • 过滤器是是由长、宽和深度指定的,是一个三维的概念
  • 过滤器可以看做是卷积核的集合
  • 过滤器比卷积核高一个维度,即深度

2. 池化

池化层的作用是对卷积层中提取的特征进行挑选

常见的池化操作有最大池化和平均池化,池化层是由 n × n n\times n n×n 大小的矩阵窗口滑动来进行计算的,类似于卷积层,只不过不是做互相关运算,而是求 n × n n\times n n×n 大小的矩阵中的最大值、平均值等

池化层主要有以下👇几个作用:

  1. 挑选不受位置干扰的图像信息
  2. 对特征进行降维【但是不变通道数】,提高后续特征的感受野,也就是让池化后的一个像素对应前面图片中的一个区域
  3. 池化层是不进行反向传播的,而且池化层减少了特征图的变量个数,因此池化层可以减少计算量

池化后图片尺寸

  • 输入图像尺寸为WxH
  • 卷积核kernel_size的尺寸FxF
  • 步长stride的大小S
  • 池化一般不使用填充padding【如果传入参数使用了padding参数,则理解为输入图像WH多了 2 × p a d d i n g 2\times padding 2×padding 即可】

W = ⌊ W − F S + 1 ⌋ H = ⌊ H − F S + 1 ⌋ \begin{aligned} W & =\left \lfloor \frac{W-F}{S}+1 \right \rfloor \\ H & =\left \lfloor \frac{\mathrm{H}-\mathrm{F}}{\mathrm{S}}+1 \right \rfloor \end{aligned} WH=SWF+1=SHF+1

池化不改变通道数,因此若输入图像通道数为D,则经过池化后通道数仍然为D

import torch
import torch.nn as nn
# 四维分别对应:(batch_size,channel,H,W)
im = torch.randn(1, 64, 112, 112)
# 卷积核为3*3,步长为2,上下左右各填充1行
# 原图像W=H=112,由于padding=1,因此最后图像大小应为W=H= 112 + 2*1 =114
# 代入公式时 W= H= 114
c = nn.MaxPool2d(kernel_size=3, stride=2, padding=1)
output = c(im)
print("原张量尺寸:")
print(im.shape)
print("经最大池化处理后的张量尺寸:")
print(output.shape)

池化后图像大小的计算公式,# Pytorch,深度学习,计算机视觉,python文章来源地址https://www.toymoban.com/news/detail-668764.html

到了这里,关于图片经卷积或池化后尺寸大小计算的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 卷积层输出大小尺寸计算

    卷积之后的尺寸大小计算公式为: 输入图片大小 W×W Filter大小 F×F 步长strides S padding的像素数 P 输出大小为NxN 我们可以得出 (公式1) 长宽不等时,卷积之后的计算公式也是如此,只需分别计算即可。 在实际操作时,我们还会碰到 padding的两种方式 “SAME” 和 “VALID”,pa

    2024年02月06日
    浏览(36)
  • python操作pptx设置title字体大小插入全屏图片A4尺寸实例一枚

    安装好pptx,设置标题最大的作用是ppt里面的摘要视图显示摘要文字 参考:https://python-pptx.readthedocs.io/en/latest/    

    2023年04月20日
    浏览(41)
  • OpenCV [C++]-图像大小计算以及获取图像的尺寸和通道数

    后续继续记录opencv新学习的知识。

    2024年02月15日
    浏览(45)
  • web前端之行为验证码、不同设备和屏幕尺寸呈现不同大小、元素宽度根据视口宽度进行调整、元素或图片裁剪、图片验证码

    1、版本一的样式比较齐全; 2、版本二的JS逻辑和功能效果比较完善,且是别人的代码,后续会对样式进行完善。[Gitee | 哔哩哔哩]; 3、两个版本各有千秋,主要学习里面的一些技巧,这里主要介绍版本一的样式技巧; 4、行为验证码一般是后端实现,而且大概率是使用第三方

    2024年04月17日
    浏览(73)
  • 经过卷积神经网络之后的图片的尺寸如何计算

    经过卷积神经网络(Convolutional Neural Network,CNN)处理后,图片的尺寸会发生变化,这是由于卷积层、池化层等操作引起的。计算图片经过卷积神经网络后的尺寸变化通常需要考虑卷积核大小、步幅(stride)、填充(padding)以及池化操作等因素。以下是计算过程的一般步骤:

    2024年02月10日
    浏览(38)
  • python基于OpenCV预测图片中目标的实际尺寸(计算机视觉)

    本次实验需要根据已知的硬币的直径,预测图片中书本的长与宽以及书本右上方用铅笔画的圆圈的外圆直径。可以先对图片进行矫正,找到硬币的轮廓并计算硬币直径占据的像素大小,进而得到实际尺寸和像素的比例系数,然后找到书本和铅笔绘制的圆圈的轮廓,再根据它们

    2024年02月03日
    浏览(56)
  • 通过图片像素计算图片大小的方法

    备注:一般,保存为灰度图,位深为8;保存为彩色图,位深为24;具体可以在电脑上右键属性查看 公式中的两个1024是为了把单位转换成MB(1MB = 1024KB)

    2024年02月13日
    浏览(35)
  • 怎么高效批量调整视频的尺寸大小

    大家平时在剪辑视频的过程中,是否会遇到视频尺寸大小不合适的情况,当我们遇到这种情况时,如何才能快速批量地解决呢?有没有什么方法可以快速批量修改视频尺寸大小呢?跟着小编一起来看看我平时批量修改视频尺寸的方法。 首先我们在“固乔科技”的官网上下载安

    2024年02月11日
    浏览(65)
  • 怎么裁剪视频大小尺寸?简单的裁剪方法分享

    怎么裁剪视频的画面大小尺寸呢?有时当我们下载下来一段视频,由于视频的画面大小比例不同,会有很多的黑边,我们不管是观看还是进行二次编辑都非常影响体验,而调整视频画面比例以适应观众的设备或平台,比如将横向视频裁剪成竖向视频,就可以很好的解决这一问

    2024年02月13日
    浏览(55)
  • 前端设置页面字体尺寸跟随屏幕大小而进行变化

    越来越多的前端项目现在需要这个操作,其操作的原因很简单,你的项目可能跑在小尺寸分辨率的电脑上,也有可能在大尺寸的会议平板上,更有甚者是在LED上。那么如何让你的项目根据屏幕分辨率的大小而自动变化,修改页面展示字体以及调整尺寸呢? 按照我们所需功能,

    2023年04月12日
    浏览(59)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包