240627_关于CNN中图像维度变化问题

240627_关于CNN中图像维度变化问题

在学习一些经典模型时,其中得维度变化关系总搞不太明白,集中学习了以下,在此作以梳理总结:

一般来说涉及到的维度变换都是四个维度,当batch size=4,图像尺寸为640*640,RGB三通道时,此时维度就是4×3×640×640。3的意思是RGB三通道,如果你传入的图像是单通道图像,此时维度就是4×1×640×640。

当然有些图你看着是一个黑白图,但是他还是有可能是一张RGB三通道图,具体怎么区分呢。右击图片打开属性,打开详细信息,里面可以看到位深度,位深度为24,则为RGB图,位深度为8,则为单通道图。此处就是一个坑,图像分割任务中,标签往往是单通道图,但是有时从网上找到的数据集看起来是黑白的,但是实际训练就会报错,查看了才发现位深度是24,需要用python代码进行修改,具体跳转240627_图像24位深度(RGB图)转为8位深度(单通道图)-CSDN博客。

当维度是三维时,就是没有batch size这个维度,可以理解为这个维度指的是其中一张图。

标准卷积

以U_Net为例

在这里插入图片描述

# U_Net网络的简单结构,就写了一层,其他同理
block1=block_down(3,64)
x1_use=block1(x) # torch.Size([3, 64, 568, 568])
x1=self.maxpool(x1_use) # torch.Size([3, 64, 284, 284])'''
block down中卷积核的定义为
self.conv1 = nn.Conv2d(inp_channel, out_channel, kernel_size=3, stride=1,padding_mode='reflect')
self.conv2 = nn.Conv2d(out_channel, out_channel, kernel_size=3, stride=1,padding_mode='reflect')
'''

卷积输出的计算公式为

h e i g h t o u t = ( h e i g h t i n − h e i g h t k e r n e l + 2 ∗ p a d d i n g ) s t r i d e + 1 height_{out}=\frac{(height_{in}-height_{kernel}+2*padding)}{stride}+1 heightout=stride(heightinheightkernel+2padding)+1

w i d t h o u t = ( w i d t h i n − w i d t h k e r n e l + 2 ∗ p a d d i n g ) s t r i d e + 1 width_{out}=\frac{(width_{in}-width_{kernel}+2*padding)}{stride}+1 widthout=stride(widthinwidthkernel+2padding)+1

输入3张572572的RGB图像(3×3×572×572),经过3×3卷积(padding=0,stride=1),此时的计算公式为
h e i g h t o u t = w i d t h o u t = ( 572 − 3 + 2 ∗ 0 ) 1 + 1 = 570 height_{out}=width_{out}=\frac{(572-3+2*0)}{1}+1=570 heightout=widthout=1(5723+20)+1=570
一共经过两层之后尺寸为568
568,因为kernel的out_channel定义的是64,所以一共有64个卷积核,输出通道为64,此时维度为3×64×568×568。

然后经过最大池化层,尺寸除以2,通道数不变,此时维度为3×64×284×284

其余层数同理

batch_sizeheightwidthin_channelout_channel
Input35725723
Kernel33364
Output357057064

1×1卷积

以ResNet50为例

image-20240627202246263

我们看shortcuts分支(右半弧线分支),这个分支输入一张维度为1×256×56×56的图像,经过一个1×1卷积(stride=2,padding=0),此时经过上述公式计算,尺寸为28,输出通道数为512。

batch_sizeheightwidthin_channelout_channel
Input15656256
Kernel11256512
Output12828512

当然也有特殊情况,1×1卷积,卷积核尺寸为1,步长为1,padding=0,通过以上公式可以计算出来尺寸不会发生变化,但通道数可以发生改变,由卷积核数量决定。

全连接层

全连接层就是把所有的像素点都摊开,摊成尺寸为1×1,通道数好多好多,其卷积核尺寸和输入尺寸一致,输出 通道数就是卷积核个数

batch_sizeheightwidthin_channelout_channel
Input15656256
Kernel5656256512
Output111512

总结

输出通道数就是卷积核个数

卷积后尺寸计算公式就是

h e i g h t o u t = ( h e i g h t i n − h e i g h t k e r n e l + 2 ∗ p a d d i n g ) s t r i d e + 1 height_{out}=\frac{(height_{in}-height_{kernel}+2*padding)}{stride}+1 heightout=stride(heightinheightkernel+2padding)+1

w i d t h o u t = ( w i d t h i n − w i d t h k e r n e l + 2 ∗ p a d d i n g ) s t r i d e + 1 width_{out}=\frac{(width_{in}-width_{kernel}+2*padding)}{stride}+1 widthout=stride(widthinwidthkernel+2padding)+1

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/36495.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

kylin v10 离线安装chrome centos离线安装chrome linux离线安装谷歌浏览器

1. 先用自己联网的计算机,下载离线安装包,浏览器输入链接下载安装包: https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm 1.2. 信创环境不用执行下面,因为没网 1.3. 若为阿里云服务器,或服…

AR导航技术加持,图书馆阅读体验智慧升级

在信息爆炸的今天,图书馆作为知识的宝库,其藏书量和种类日益增多。然而,传统的图书馆导航方式已逐渐无法满足用户对快速、准确定位图书的需求。本文将探讨图书馆AR地图导航的实现原理、技术优势、功能特点以及市场前景,揭示为何AR…

VS studio2019配置远程连接Ubuntu

VS studio2019配置远程连接Ubuntu 1、网络配置 (1)获取主机IP (2)获取Ubuntu的IP (3)在 windows 的控制台中 ping 虚拟机的 ipv4 地址,在 Ubuntu 中 ping 主机的 ipv4 地址。 ubuntu: ping…

【Linux】对共享库加载问题的深入理解——基本原理概述

原理概述 【linux】详解——库-CSDN博客 共享库被加载后,系统会为该共享库创建一个结构,这个结构体中的字段描述了库的各种属性。在内存中可能会加载很多库,每一个库都用一个结构体描述。把这些结构体用一些数据结构管理起来,系…

WordPress Dokan Pro插件 SQL注入漏洞复现(CVE-2024-3922)

0x01 产品简介 WordPress Dokan Pro插件是一款功能强大的多供应商电子商务市场解决方案,功能全面、易于使用的多供应商电子商务平台解决方案,适合各种规模的电商项目。允许管理员创建一个多卖家平台,卖家可以注册账户并在平台上创建自己的店铺,展示和销售自己的产品。提供…

kali下安装使用蚁剑(AntSword)

目录 0x00 介绍0x01 安装0x02 使用1. 设置代理2. 请求头配置3. 编码器 0x00 介绍 蚁剑(AntSword)是一个webshell管理工具。 官方文档:https://www.yuque.com/antswordproject/antsword 0x01 安装 在kali中安装蚁剑,分为两部分&am…

Zabbix 监控系统部署

Zabbix 监控系统部署 Zabbix是一个企业级开源分布式监控解决方案,可监控网络的众多参数以及服务器、虚拟机、应用程序、服务、数据库、网站、云等的运行状况和完整性。 Zabbix 使用灵活的通知机制,允许用户为几乎任何事件配置基于电子邮件的警报。这允许…

java发送图文到公众号

这两天接到了一个新任务,通过后台管理编写文章,发送到官网的同时,推送一份到公众号,研究了一下微信的文档,发现不难,只需要有几个注意点就可以了。 注意: 微信公众号只能访问微信自己上传的图片…

STM32单片机实现串口IAP升级

一.概述 1.要实现串口IAP升级,首先要编写一个bootloader程序,然后再写支持IAP的app程序; 2.keil下bootloader的程序rom和ram设置 3.app程序要用bin文件 注:本文以STM32H743举例,其他stm32单片机IAP升级原理类似。 …

达梦数据库的系统视图v$database

达梦数据库的系统视图v$database 基础信息 OS版本: Red Hat Enterprise Linux Server release 7.9 (Maipo) DB版本: DM Database Server 64 V8 DB Version: 0x7000c 03134284132-20240115-215128-20081在达梦数据库(Dameng Database&#xf…

Java——Lambda表达式

1. 背景 Lambda表达式是JavaSE 8中一个重要的新特性。Lambda表达式允许你通过表达式来代替功能接口。 Lambda表达式就和方法一样,它提供了一个正常的参数列表和一个使用这些参数的主体(body,可以是一个表达式或一个代码块)。 Lambda 表达式(…

C# YoloV8 模型效果验证工具(OnnxRuntime+ByteTrack推理)

C# YoloV8 模型效果验证工具(OnnxRuntimeByteTrack推理) 目录 效果 项目 代码 下载 效果 模型效果验证工具 项目 代码 using ByteTrack; using OpenCvSharp; using System; using System.Collections.Generic; using System.Diagnostics; using System.Drawing; using Sys…

【win11】Mouse without Borders安装问题以管理员权限安装msi文件

【win11】Mouse without Borders安装问题&以管理员权限安装msi文件 Mouse without Borders安装问题解决&以管理员权限安装msi文件启动Windows Installer服务以管理员权限安装msi文件 参考文献 Mouse without Borders安装问题 在win11下我双击MouseWithoutBorders2.2.1…

由监官要求下架docker hub镜像导致无法正常拉取镜像

问题:下载docker镜像超时 error pulling image configuration: download failed after attempts6: dial tcp 202.160.128.205:443: i/o timeout解决办法:配置daemon.json [rootbogon aihuidi]# cat /etc/docker/daemon.json {"registry-mirrors&qu…

20240628 每日AI必读资讯

📚 Hugging Face 推出新版开源大模型排行榜,中国模型 Qwen-72B 夺冠 - 阿里Qwen-2-72B指令微调版本问鼎全球开源大模型排行榜榜首 - Llama-3-70B 微调版本排名第二,而 Mixtral-8x22B 微调版本位居第四。 - 另外,微软的 Phi-3-M…

三种分布式锁实现方式

目录 1、数据库自增 2、Redis自增 3、Zookeeper 4、其他 4.1、雪花算法 4.2、Tinyid 4.3、Leaf 4.4、数据库号段 1、数据库自增 利用数据库表的自增特性,或主键唯一性,实现分布式ID REPLACE INTO id_table (stub) values (’a‘) ; SELECT LA…

社交App广告优化新篇章:Xinstall引领用户体验升级,助力买量效果提升

随着移动互联网的快速发展,社交App已经成为人们生活中不可或缺的一部分。然而,在竞争激烈的市场环境下,如何有效地进行广告投放,吸引并留住用户,成为了每个社交App运营者面临的重大挑战。今天,我们就来谈谈…

自费5K,测评安德迈、小米、希喂三款宠物空气净化器谁才是高性价比之王

最近,家里的猫咪掉毛严重,简直成了一个活生生的蒲公英,家中、空气中各处都弥漫着猫浮毛甚至所有衣物都覆盖着一层厚厚的猫毛。令人难以置信的是,有时我甚至在抠出的眼屎中都能发现夹杂着几根猫毛。真的超级困扰了。但其实最空气中…

Packer-Fuzzer一款好用的前端高效安全扫描工具

★★免责声明★★ 文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与学习之用,读者将信息做其他用途,由Ta承担全部法律及连带责任,文章作者不承担任何法律及连带责任。 1、Packer Fuzzer介绍 Packer Fuzzer是一款针对Webpack…

麒麟系统安装MySQL

搞了一整天,终于搞定了,记录一下。 一、背景 项目的原因,基于JeecgBoot开发的系统需要国产化支持,这就需要在电脑上安装MySQL等支撑软件。 国产化项目的操作系统多是麒麟系统,我的系统如下: arm64架构。…