in lib/models/resnet_video.py [0:0]
def obtain_arc(arc_type):
"""
Architecture definition.
This function defines the temporal kernel radius and temporal strides for
each layer in a ResNet.
For example, use_temp_convs = 1 stands for a temporal kernel size of 3.
In ResNet50, it has (3, 4, 6, 3) blocks in conv2, 3, 4, 5.
so the lengths of the corresponding lists are (3, 4, 6, 3).
"""
pool_stride = 1
# C2D, ResNet50.
if arc_type == 1:
use_temp_convs_1 = [0]
temp_strides_1 = [1]
use_temp_convs_2 = [0, 0, 0]
temp_strides_2 = [1, 1, 1]
use_temp_convs_3 = [0, 0, 0, 0]
temp_strides_3 = [1, 1, 1, 1]
use_temp_convs_4 = [0, ] * 6
temp_strides_4 = [1, ] * 6
use_temp_convs_5 = [0, 0, 0]
temp_strides_5 = [1, 1, 1]
pool_stride = int(cfg.TRAIN.VIDEO_LENGTH / 2)
# I3D, ResNet50.
if arc_type == 2:
use_temp_convs_1 = [2]
temp_strides_1 = [1]
use_temp_convs_2 = [1, 1, 1]
temp_strides_2 = [1, 1, 1]
use_temp_convs_3 = [1, 0, 1, 0]
temp_strides_3 = [1, 1, 1, 1]
use_temp_convs_4 = [1, 0, 1, 0, 1, 0]
temp_strides_4 = [1, 1, 1, 1, 1, 1]
use_temp_convs_5 = [0, 1, 0]
temp_strides_5 = [1, 1, 1]
pool_stride = int(cfg.TRAIN.VIDEO_LENGTH / 2)
# C2D, ResNet101.
if arc_type == 3:
use_temp_convs_1 = [0]
temp_strides_1 = [1]
use_temp_convs_2 = [0, 0, 0]
temp_strides_2 = [1, 1, 1]
use_temp_convs_3 = [0, 0, 0, 0]
temp_strides_3 = [1, 1, 1, 1]
use_temp_convs_4 = [0, ] * 23
temp_strides_4 = [1, ] * 23
use_temp_convs_5 = [0, 0, 0]
temp_strides_5 = [1, 1, 1]
pool_stride = int(cfg.TRAIN.VIDEO_LENGTH / 2)
# I3D, ResNet101.
if arc_type == 4:
use_temp_convs_1 = [2]
temp_strides_1 = [1]
use_temp_convs_2 = [1, 1, 1]
temp_strides_2 = [1, 1, 1]
use_temp_convs_3 = [1, 0, 1, 0]
temp_strides_3 = [1, 1, 1, 1]
use_temp_convs_4 = []
for i in range(23):
if i % 2 == 0:
use_temp_convs_4.append(1)
else:
use_temp_convs_4.append(0)
temp_strides_4 = [1, ] * 23
use_temp_convs_5 = [0, 1, 0]
temp_strides_5 = [1, 1, 1]
pool_stride = int(cfg.TRAIN.VIDEO_LENGTH / 2)
use_temp_convs_set = [
use_temp_convs_1,
use_temp_convs_2,
use_temp_convs_3,
use_temp_convs_4,
use_temp_convs_5
]
temp_strides_set = [
temp_strides_1,
temp_strides_2,
temp_strides_3,
temp_strides_4,
temp_strides_5
]
return use_temp_convs_set, temp_strides_set, pool_stride