few-shot-transformer项目中的I3D模型的预训练权重导入(基于K-400训练的)

few-shot-transformer这个项目中首先要将视频帧送入到I3D中进行特征提取,然后再把这些特征输入到后续网络。
整体框架图但是论文作者并没有在github项目中提供这个I3D的预训练模型,所以需要我们自己去找。然而I3D官方的github代码是基于TensorFlow写的,MMaction2框架中的I3D权重和本论文中的模型又不匹配,所以很难搞哦,I3D模型一直加载不上。

所幸,我找到了这个人的github,他提供的I3D预训练权重与本论文的I3D模型完全契合。
网址是:https://github.com/hassony2/kinetics_i3d_pytorch。权重文件是model/model_rgb.pth

论文中I3D模型结构

i3d模型: I3D(
(conv3d_1a_7x7): Unit3Dpy(
(pad): ConstantPad3d(padding=(2, 3, 2, 3, 2, 3), value=0)
(conv3d): Conv3d(3, 64, kernel_size=(7, 7, 7), stride=(2, 2, 2), bias=False)
(batch3d): BatchNorm3d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
)
(maxPool3d_2a_3x3): MaxPool3dTFPadding(
(pad): ConstantPad3d(padding=(0, 1, 0, 1, 0, 1), value=0)
(pool): MaxPool3d(kernel_size=(3, 3, 3), stride=(2, 2, 2), padding=0, dilation=1, ceil_mode=True)
)
(conv3d_2b_1x1): Unit3Dpy(
(conv3d): Conv3d(64, 64, kernel_size=(1, 1, 1), stride=(1, 1, 1), bias=False)
(batch3d): BatchNorm3d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
)
(conv3d_2c_3x3): Unit3Dpy(
(conv3d): Conv3d(64, 192, kernel_size=(3, 3, 3), stride=(1, 1, 1), padding=(1, 1, 1), bias=False)
(batch3d): BatchNorm3d(192, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
)
(maxPool3d_3a_3x3): MaxPool3dTFPadding(
(pad): ConstantPad3d(padding=(0, 1, 0, 1, 0, 1), value=0)
(pool): MaxPool3d(kernel_size=(3, 3, 3), stride=(2, 2, 2), padding=0, dilation=1, ceil_mode=True)
)
(mixed_3b): Mixed(
(branch_0): Unit3Dpy(
(conv3d): Conv3d(192, 64, kernel_size=(1, 1, 1), stride=(1, 1, 1), bias=False)
(batch3d): BatchNorm3d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
)
(branch_1): Sequential(
(0): Unit3Dpy(
(conv3d): Conv3d(192, 96, kernel_size=(1, 1, 1), stride=(1, 1, 1), bias=False)
(batch3d): BatchNorm3d(96, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
)
(1): Unit3Dpy(
(conv3d): Conv3d(96, 128, kernel_size=(3, 3, 3), stride=(1, 1, 1), padding=(1, 1, 1), bias=False)
(batch3d): BatchNorm3d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
)
)
(branch_2): Sequential(
(0): Unit3Dpy(
(conv3d): Conv3d(192, 16, kernel_size=(1, 1, 1), stride=(1, 1, 1), bias=False)
(batch3d): BatchNorm3d(16, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
)
(1): Unit3Dpy(
(conv3d): Conv3d(16, 32, kernel_size=(3, 3, 3), stride=(1, 1, 1), padding=(1, 1, 1), bias=False)
(batch3d): BatchNorm3d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
)
)
(branch_3): Sequential(
(0): MaxPool3dTFPadding(
(pad): ConstantPad3d(padding=(1, 1, 1, 1, 1, 1), value=0)
(pool): MaxPool3d(kernel_size=(3, 3, 3), stride=(1, 1, 1), padding=0, dilation=1, ceil_mode=True)
)
(1): Unit3Dpy(
(conv3d): Conv3d(192, 32, kernel_size=(1, 1, 1), stride=(1, 1, 1), bias=False)
(batch3d): BatchNorm3d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
)
)
)
(mixed_3c): Mixed(
(branch_0): Unit3Dpy(
(conv3d): Conv3d(256, 128, kernel_size=(1, 1, 1), stride=(1, 1, 1), bias=False)
(batch3d): BatchNorm3d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
)
(branch_1): Sequential(
(0): Unit3Dpy(
(conv3d): Conv3d(256, 128, kernel_size=(1, 1, 1), stride=(1, 1, 1), bias=False)
(batch3d): BatchNorm3d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
)
(1): Unit3Dpy(
(conv3d): Conv3d(128, 192, kernel_size=(3, 3, 3), stride=(1, 1, 1), padding=(1, 1, 1), bias=False)
(batch3d): BatchNorm3d(192, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
)
)
(branch_2): Sequential(
(0): Unit3Dpy(
(conv3d): Conv3d(256, 32, kernel_size=(1, 1, 1), stride=(1, 1, 1), bias=False)
(batch3d): BatchNorm3d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
)
(1): Unit3Dpy(
(conv3d): Conv3d(32, 96, kernel_size=(3, 3, 3), stride=(1, 1, 1), padding=(1, 1, 1), bias=False)
(batch3d): BatchNorm3d(96, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
)
)
(branch_3): Sequential(
(0): MaxPool3dTFPadding(
(pad): ConstantPad3d(padding=(1, 1, 1, 1, 1, 1), value=0)
(pool): MaxPool3d(kernel_size=(3, 3, 3), stride=(1, 1, 1), padding=0, dilation=1, ceil_mode=True)
)
(1): Unit3Dpy(
(conv3d): Conv3d(256, 64, kernel_size=(1, 1, 1), stride=(1, 1, 1), bias=False)
(batch3d): BatchNorm3d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
)
)
)
(maxPool3d_4a_3x3): MaxPool3dTFPadding(
(pad): ConstantPad3d(padding=(0, 1, 0, 1, 0, 1), value=0)
(pool): MaxPool3d(kernel_size=(3, 3, 3), stride=(2, 2, 2), padding=0, dilation=1, ceil_mode=True)
)
(mixed_4b): Mixed(
(branch_0): Unit3Dpy(
(conv3d): Conv3d(480, 192, kernel_size=(1, 1, 1), stride=(1, 1, 1), bias=False)
(batch3d): BatchNorm3d(192, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
)
(branch_1): Sequential(
(0): Unit3Dpy(
(conv3d): Conv3d(480, 96, kernel_size=(1, 1, 1), stride=(1, 1, 1), bias=False)
(batch3d): BatchNorm3d(96, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
)
(1): Unit3Dpy(
(conv3d): Conv3d(96, 208, kernel_size=(3, 3, 3), stride=(1, 1, 1), padding=(1, 1, 1), bias=False)
(batch3d): BatchNorm3d(208, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
)
)
(branch_2): Sequential(
(0): Unit3Dpy(
(conv3d): Conv3d(480, 16, kernel_size=(1, 1, 1), stride=(1, 1, 1), bias=False)
(batch3d): BatchNorm3d(16, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
)
(1): Unit3Dpy(
(conv3d): Conv3d(16, 48, kernel_size=(3, 3, 3), stride=(1, 1, 1), padding=(1, 1, 1), bias=False)
(batch3d): BatchNorm3d(48, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
)
)
(branch_3): Sequential(
(0): MaxPool3dTFPadding(
(pad): ConstantPad3d(padding=(1, 1, 1, 1, 1, 1), value=0)
(pool): MaxPool3d(kernel_size=(3, 3, 3), stride=(1, 1, 1), padding=0, dilation=1, ceil_mode=True)
)
(1): Unit3Dpy(
(conv3d): Conv3d(480, 64, kernel_size=(1, 1, 1), stride=(1, 1, 1), bias=False)
(batch3d): BatchNorm3d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
)
)
)
(mixed_4c): Mixed(
(branch_0): Unit3Dpy(
(conv3d): Conv3d(512, 160, kernel_size=(1, 1, 1), stride=(1, 1, 1), bias=False)
(batch3d): BatchNorm3d(160, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
)
(branch_1): Sequential(
(0): Unit3Dpy(
(conv3d): Conv3d(512, 112, kernel_size=(1, 1, 1), stride=(1, 1, 1), bias=False)
(batch3d): BatchNorm3d(112, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
)
(1): Unit3Dpy(
(conv3d): Conv3d(112, 224, kernel_size=(3, 3, 3), stride=(1, 1, 1), padding=(1, 1, 1), bias=False)
(batch3d): BatchNorm3d(224, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
)
)
(branch_2): Sequential(
(0): Unit3Dpy(
(conv3d): Conv3d(512, 24, kernel_size=(1, 1, 1), stride=(1, 1, 1), bias=False)
(batch3d): BatchNorm3d(24, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
)
(1): Unit3Dpy(
(conv3d): Conv3d(24, 64, kernel_size=(3, 3, 3), stride=(1, 1, 1), padding=(1, 1, 1), bias=False)
(batch3d): BatchNorm3d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
)
)
(branch_3): Sequential(
(0): MaxPool3dTFPadding(
(pad): ConstantPad3d(padding=(1, 1, 1, 1, 1, 1), value=0)
(pool): MaxPool3d(kernel_size=(3, 3, 3), stride=(1, 1, 1), padding=0, dilation=1, ceil_mode=True)
)
(1): Unit3Dpy(
(conv3d): Conv3d(512, 64, kernel_size=(1, 1, 1), stride=(1, 1, 1), bias=False)
(batch3d): BatchNorm3d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
)
)
)
(mixed_4d): Mixed(
(branch_0): Unit3Dpy(
(conv3d): Conv3d(512, 128, kernel_size=(1, 1, 1), stride=(1, 1, 1), bias=False)
(batch3d): BatchNorm3d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
)
(branch_1): Sequential(
(0): Unit3Dpy(
(conv3d): Conv3d(512, 128, kernel_size=(1, 1, 1), stride=(1, 1, 1), bias=False)
(batch3d): BatchNorm3d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
)
(1): Unit3Dpy(
(conv3d): Conv3d(128, 256, kernel_size=(3, 3, 3), stride=(1, 1, 1), padding=(1, 1, 1), bias=False)
(batch3d): BatchNorm3d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
)
)
(branch_2): Sequential(
(0): Unit3Dpy(
(conv3d): Conv3d(512, 24, kernel_size=(1, 1, 1), stride=(1, 1, 1), bias=False)
(batch3d): BatchNorm3d(24, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
)
(1): Unit3Dpy(
(conv3d): Conv3d(24, 64, kernel_size=(3, 3, 3), stride=(1, 1, 1), padding=(1, 1, 1), bias=False)
(batch3d): BatchNorm3d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
)
)
(branch_3): Sequential(
(0): MaxPool3dTFPadding(
(pad): ConstantPad3d(padding=(1, 1, 1, 1, 1, 1), value=0)
(pool): MaxPool3d(kernel_size=(3, 3, 3), stride=(1, 1, 1), padding=0, dilation=1, ceil_mode=True)
)
(1): Unit3Dpy(
(conv3d): Conv3d(512, 64, kernel_size=(1, 1, 1), stride=(1, 1, 1), bias=False)
(batch3d): BatchNorm3d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
)
)
)
(mixed_4e): Mixed(
(branch_0): Unit3Dpy(
(conv3d): Conv3d(512, 112, kernel_size=(1, 1, 1), stride=(1, 1, 1), bias=False)
(batch3d): BatchNorm3d(112, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
)
(branch_1): Sequential(
(0): Unit3Dpy(
(conv3d): Conv3d(512, 144, kernel_size=(1, 1, 1), stride=(1, 1, 1), bias=False)
(batch3d): BatchNorm3d(144, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
)
(1): Unit3Dpy(
(conv3d): Conv3d(144, 288, kernel_size=(3, 3, 3), stride=(1, 1, 1), padding=(1, 1, 1), bias=False)
(batch3d): BatchNorm3d(288, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
)
)
(branch_2): Sequential(
(0): Unit3Dpy(
(conv3d): Conv3d(512, 32, kernel_size=(1, 1, 1), stride=(1, 1, 1), bias=False)
(batch3d): BatchNorm3d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
)
(1): Unit3Dpy(
(conv3d): Conv3d(32, 64, kernel_size=(3, 3, 3), stride=(1, 1, 1), padding=(1, 1, 1), bias=False)
(batch3d): BatchNorm3d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
)
)
(branch_3): Sequential(
(0): MaxPool3dTFPadding(
(pad): ConstantPad3d(padding=(1, 1, 1, 1, 1, 1), value=0)
(pool): MaxPool3d(kernel_size=(3, 3, 3), stride=(1, 1, 1), padding=0, dilation=1, ceil_mode=True)
)
(1): Unit3Dpy(
(conv3d): Conv3d(512, 64, kernel_size=(1, 1, 1), stride=(1, 1, 1), bias=False)
(batch3d): BatchNorm3d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
)
)
)
(mixed_4f): Mixed(
(branch_0): Unit3Dpy(
(conv3d): Conv3d(528, 256, kernel_size=(1, 1, 1), stride=(1, 1, 1), bias=False)
(batch3d): BatchNorm3d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
)
(branch_1): Sequential(
(0): Unit3Dpy(
(conv3d): Conv3d(528, 160, kernel_size=(1, 1, 1), stride=(1, 1, 1), bias=False)
(batch3d): BatchNorm3d(160, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
)
(1): Unit3Dpy(
(conv3d): Conv3d(160, 320, kernel_size=(3, 3, 3), stride=(1, 1, 1), padding=(1, 1, 1), bias=False)
(batch3d): BatchNorm3d(320, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
)
)
(branch_2): Sequential(
(0): Unit3Dpy(
(conv3d): Conv3d(528, 32, kernel_size=(1, 1, 1), stride=(1, 1, 1), bias=False)
(batch3d): BatchNorm3d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
)
(1): Unit3Dpy(
(conv3d): Conv3d(32, 128, kernel_size=(3, 3, 3), stride=(1, 1, 1), padding=(1, 1, 1), bias=False)
(batch3d): BatchNorm3d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
)
)
(branch_3): Sequential(
(0): MaxPool3dTFPadding(
(pad): ConstantPad3d(padding=(1, 1, 1, 1, 1, 1), value=0)
(pool): MaxPool3d(kernel_size=(3, 3, 3), stride=(1, 1, 1), padding=0, dilation=1, ceil_mode=True)
)
(1): Unit3Dpy(
(conv3d): Conv3d(528, 128, kernel_size=(1, 1, 1), stride=(1, 1, 1), bias=False)
(batch3d): BatchNorm3d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
)
)
)
(maxPool3d_5a_2x2): MaxPool3dTFPadding(
(pad): ConstantPad3d(padding=(0, 0, 0, 0, 0, 0), value=0)
(pool): MaxPool3d(kernel_size=(2, 2, 2), stride=(2, 2, 2), padding=0, dilation=1, ceil_mode=True)
)
(mixed_5b): Mixed(
(branch_0): Unit3Dpy(
(conv3d): Conv3d(832, 256, kernel_size=(1, 1, 1), stride=(1, 1, 1), bias=False)
(batch3d): BatchNorm3d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
)
(branch_1): Sequential(
(0): Unit3Dpy(
(conv3d): Conv3d(832, 160, kernel_size=(1, 1, 1), stride=(1, 1, 1), bias=False)
(batch3d): BatchNorm3d(160, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
)
(1): Unit3Dpy(
(conv3d): Conv3d(160, 320, kernel_size=(3, 3, 3), stride=(1, 1, 1), padding=(1, 1, 1), bias=False)
(batch3d): BatchNorm3d(320, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
)
)
(branch_2): Sequential(
(0): Unit3Dpy(
(conv3d): Conv3d(832, 32, kernel_size=(1, 1, 1), stride=(1, 1, 1), bias=False)
(batch3d): BatchNorm3d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
)
(1): Unit3Dpy(
(conv3d): Conv3d(32, 128, kernel_size=(3, 3, 3), stride=(1, 1, 1), padding=(1, 1, 1), bias=False)
(batch3d): BatchNorm3d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
)
)
(branch_3): Sequential(
(0): MaxPool3dTFPadding(
(pad): ConstantPad3d(padding=(1, 1, 1, 1, 1, 1), value=0)
(pool): MaxPool3d(kernel_size=(3, 3, 3), stride=(1, 1, 1), padding=0, dilation=1, ceil_mode=True)
)
(1): Unit3Dpy(
(conv3d): Conv3d(832, 128, kernel_size=(1, 1, 1), stride=(1, 1, 1), bias=False)
(batch3d): BatchNorm3d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
)
)
)
(mixed_5c): Mixed(
(branch_0): Unit3Dpy(
(conv3d): Conv3d(832, 384, kernel_size=(1, 1, 1), stride=(1, 1, 1), bias=False)
(batch3d): BatchNorm3d(384, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
)
(branch_1): Sequential(
(0): Unit3Dpy(
(conv3d): Conv3d(832, 192, kernel_size=(1, 1, 1), stride=(1, 1, 1), bias=False)
(batch3d): BatchNorm3d(192, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
)
(1): Unit3Dpy(
(conv3d): Conv3d(192, 384, kernel_size=(3, 3, 3), stride=(1, 1, 1), padding=(1, 1, 1), bias=False)
(batch3d): BatchNorm3d(384, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
)
)
(branch_2): Sequential(
(0): Unit3Dpy(
(conv3d): Conv3d(832, 48, kernel_size=(1, 1, 1), stride=(1, 1, 1), bias=False)
(batch3d): BatchNorm3d(48, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
)
(1): Unit3Dpy(
(conv3d): Conv3d(48, 128, kernel_size=(3, 3, 3), stride=(1, 1, 1), padding=(1, 1, 1), bias=False)
(batch3d): BatchNorm3d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
)
)
(branch_3): Sequential(
(0): MaxPool3dTFPadding(
(pad): ConstantPad3d(padding=(1, 1, 1, 1, 1, 1), value=0)
(pool): MaxPool3d(kernel_size=(3, 3, 3), stride=(1, 1, 1), padding=0, dilation=1, ceil_mode=True)
)
(1): Unit3Dpy(
(conv3d): Conv3d(832, 128, kernel_size=(1, 1, 1), stride=(1, 1, 1), bias=False)
(batch3d): BatchNorm3d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
)
)
)
(avg_pool): AvgPool3d(kernel_size=(2, 7, 7), stride=(1, 1, 1), padding=0)
(dropout): Dropout(p=0, inplace=False)
(conv3d_0c_1x1): Unit3Dpy(
(conv3d): Conv3d(1024, 400, kernel_size=(1, 1, 1), stride=(1, 1, 1))
)
(softmax): Softmax(dim=1)
)

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值