3D卷积学习笔记

本文探讨了2D和3D卷积的区别,并通过车牌识别应用实例解释3D卷积的使用。3D卷积在网络中用于处理具有深度维度的数据,如在深度方向上的扫描。卷积操作的具体细节包括滤波器的维度解析和滑动窗口的移动方式。
摘要由CSDN通过智能技术生成

2D维卷积核与三维卷积核有什么区别?

卷积神经网络中二维卷积核与三维卷积核有什么区别? - 知乎

车牌识别用到了3d卷积:

LPRNet_Pytorch/LPRNet.py at master · sirius-ai/LPRNet_Pytorch · GitHub

3d卷积详解:

3D卷积详解 - 知乎

f = nn.Conv3d(16, 33, 3, stride=2)
f = nn.Conv3d(2, 3, (2, 3, 3), stride=(1, 1, 1), padding=(0, 0, 0))
i = torch.Tensor(np.array(range(0,200)).reshape(1,2,4,5,5))
a = torch.Tensor(range(0,108)).reshape(3,2,2,3,3)

f.weight = torch.nn.Parameter(a)
output = f(i) #1x3x3x3x3



y01221 = torch.sum(a[1,:,:,:,:]*i[0,:,2:4,2:5,1:4])
g01221 = output[0,1,2,2,1]#1x3x3x3x3

从以上代码中可以看出:

  1. 输入i的维度为(1,2,4,5,5),表示batch=1,feature=2,depth=4,h=5,w=5。
  2. 滤波器f的维度为(3,2,2,3,3)表示:
  • 维度的第一个数字3由Conv3d的第二个参数决定,表示有3个(2,3,3)的滤波器,
  • 维度的第二个数字2由Conv3d的第一个参数决定,必须和输入i的feature维度相同,这里和Conv2D表示相同的含义,例如在2d中,卷积的尺寸是3x3,输入feature维度为5,那么就默认卷积的维度为(5,3,3),因为需要和输入的feature维度对应。
  • 剩下3个参数具有相同的含义,只不过维度不相同,分别为在depth维度一次扫描2格,在h维度一次扫描3格,在w维度一次扫描3格。

y01221 = torch.sum(a[1,:,:,:,:]*i[0,:,2:4,2:5,1:4])
g01221 = output[0,1,2,2,1]#1x3x3x3x3

根据输出 output[0,1,2,2,1]反推是输入的那一部分和滤波器反应,output.size[1]=1,说明这个是第2个3D滤波器,因此a的第一个参数填1来取出第2个3D滤波器的值。接下来要取出输入的值,由output.size(2)=2可以知道,该3D滤波器在depth维度滑到第3次停下(是这样滑动的:第一次滑动取出0:2,第二次1:3,第三次2:4),并且要取出所有feature维度的值,也就是concatenate((i[0,0,2:4,2:5,1:4],i[0,1,2:4,2:5,1:4]),0)=i[0,:,2:4,2:5,1:4].在h维度和w维度也是相同操作,h维度滑到第3次停下(2:5),w维度滑到第2次停下(1:4,因为一次滑动5格)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值