|
import warnings |
|
|
|
import torch.hub |
|
import torch.nn as nn |
|
from torchvision.models.video.resnet import BasicStem, BasicBlock, Bottleneck |
|
|
|
from .utils import _generic_resnet, Conv3DDepthwise, BasicStem_Pool, IPConv3DDepthwise |
|
|
|
|
|
__all__ = ["ir_csn_152", "ip_csn_152"] |
|
|
|
|
|
def ir_csn_152(pretraining="", use_pool1=True, progress=False, **kwargs): |
|
avail_pretrainings = [ |
|
"ig65m_32frms", |
|
"ig_ft_kinetics_32frms", |
|
"sports1m_32frms", |
|
"sports1m_ft_kinetics_32frms", |
|
] |
|
|
|
if pretraining in avail_pretrainings: |
|
arch = "ir_csn_152_" + pretraining |
|
pretrained = True |
|
else: |
|
arch = "ir_csn_152" |
|
pretrained = False |
|
|
|
model = _generic_resnet( |
|
arch, |
|
pretrained, |
|
progress, |
|
block=Bottleneck, |
|
conv_makers=[Conv3DDepthwise] * 4, |
|
layers=[3, 8, 36, 3], |
|
stem=BasicStem_Pool if use_pool1 else BasicStem, |
|
**kwargs, |
|
) |
|
|
|
return model |
|
|
|
|
|
def ip_csn_152(pretraining="", use_pool1=True, progress=False, **kwargs): |
|
avail_pretrainings = [ |
|
"ig65m_32frms", |
|
"ig_ft_kinetics_32frms", |
|
"sports1m_32frms", |
|
"sports1m_ft_kinetics_32frms", |
|
] |
|
|
|
if pretraining in avail_pretrainings: |
|
arch = "ip_csn_152_" + pretraining |
|
pretrained = True |
|
else: |
|
arch = "ip_csn_152" |
|
pretrained = False |
|
|
|
model = _generic_resnet( |
|
arch, |
|
pretrained, |
|
progress, |
|
block=Bottleneck, |
|
conv_makers=[IPConv3DDepthwise] * 4, |
|
layers=[3, 8, 36, 3], |
|
stem=BasicStem_Pool if use_pool1 else BasicStem, |
|
**kwargs, |
|
) |
|
|
|
return model |
|
|