用jsp做婚纱网站的流程,hyperx wordpress 汉化,网站制作交易流程,临淄区住房和城乡建设局网站240627_关于CNN中图像维度变化问题
在学习一些经典模型时#xff0c;其中得维度变化关系总搞不太明白#xff0c;集中学习了以下#xff0c;在此作以梳理总结#xff1a;
一般来说涉及到的维度变换都是四个维度#xff0c;当batch size4#xff0c;图像尺寸为640*640其中得维度变化关系总搞不太明白集中学习了以下在此作以梳理总结
一般来说涉及到的维度变换都是四个维度当batch size4图像尺寸为640*640RGB三通道时此时维度就是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网络的简单结构就写了一层其他同理
block1block_down(3,64)
x1_useblock1(x) # torch.Size([3, 64, 568, 568])
x1self.maxpool(x1_use) # torch.Size([3, 64, 284, 284])
block down中卷积核的定义为
self.conv1 nn.Conv2d(inp_channel, out_channel, kernel_size3, stride1,padding_modereflect)
self.conv2 nn.Conv2d(out_channel, out_channel, kernel_size3, stride1,padding_modereflect)卷积输出的计算公式为 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 heightoutstride(heightin−heightkernel2∗padding)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 widthoutstride(widthin−widthkernel2∗padding)1
输入3张572572的RGB图像3×3×572×572经过3×3卷积padding0,stride1此时的计算公式为 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-32*0)}{1}1570 heightoutwidthout1(572−32∗0)1570 一共经过两层之后尺寸为568568因为kernel的out_channel定义的是64所以一共有64个卷积核输出通道为64此时维度为3×64×568×568。
然后经过最大池化层尺寸除以2通道数不变此时维度为3×64×284×284
其余层数同理
batch_sizeheightwidthin_channelout_channelInput35725723Kernel33364Output357057064
1×1卷积
以ResNet50为例 我们看shortcuts分支右半弧线分支这个分支输入一张维度为1×256×56×56的图像经过一个1×1卷积stride2,padding0此时经过上述公式计算尺寸为28输出通道数为512。
batch_sizeheightwidthin_channelout_channelInput15656256Kernel11256512Output12828512
当然也有特殊情况1×1卷积卷积核尺寸为1步长为1padding0通过以上公式可以计算出来尺寸不会发生变化但通道数可以发生改变由卷积核数量决定。
全连接层
全连接层就是把所有的像素点都摊开摊成尺寸为1×1通道数好多好多其卷积核尺寸和输入尺寸一致输出 通道数就是卷积核个数
batch_sizeheightwidthin_channelout_channelInput15656256Kernel5656256512Output111512
总结
输出通道数就是卷积核个数
卷积后尺寸计算公式就是 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 heightoutstride(heightin−heightkernel2∗padding)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 widthoutstride(widthin−widthkernel2∗padding)1