Source code for towhee.models.movinet.config

# Copyright 2022 Zilliz. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the 'License');
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an 'AS IS' BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# Inspired by https://github.com/PeizeSun/SparseR-CNN/blob/dff4c43a9526a6d0d2480abc833e78a7c29ddb1a/detectron2/config/defaults.py
#
# Original code from https://github.com/Atze00/MoViNet-pytorch
#
# Modified by Zilliz.

import os
try:
    from fvcore.common.config import CfgNode as CN
except ModuleNotFoundError:
    os.system("pip install fvcore")
    from fvcore.common.config import CfgNode as CN

[docs]def fill_se_config(conf, input_channels, out_channels, expanded_channels, kernel_size, stride, padding, padding_avg, ): conf.expanded_channels =expanded_channels conf.padding_avg= padding_avg fill_conv(conf,input_channels, out_channels, kernel_size, stride, padding, )
[docs]def fill_conv(conf, input_channels, out_channels, kernel_size, stride, padding,): conf.input_channels = input_channels conf.out_channels = out_channels conf.kernel_size = kernel_size conf.stride = stride conf.padding = padding
_C = CN() _C.MODEL = CN() ################### #### MoViNetA0 #### ################### _C.MODEL.MoViNetA0 = CN() _C.MODEL.MoViNetA0.name = "A0" _C.MODEL.MoViNetA0.weights = "https://github.com/Atze00/MoViNet-pytorch/blob/main/weights/modelA0_statedict_v3?raw=true" _C.MODEL.MoViNetA0.stream_weights = "https://github.com/Atze00/MoViNet-pytorch/blob/main/weights/modelA0_stream_statedict_v3?raw=true" _C.MODEL.MoViNetA0.conv1 = CN() fill_conv(_C.MODEL.MoViNetA0.conv1, 3,8,(1,3,3),(1,2,2),(0,1,1)) _C.MODEL.MoViNetA0.blocks = [ [CN()], [CN() for _ in range(3)], [CN() for _ in range(3)], [CN() for _ in range(4)], [CN() for _ in range(4)]] #Block2 fill_se_config(_C.MODEL.MoViNetA0.blocks[0][0], 8, 8, 24, (1,5,5), (1,2,2), (0,2,2), (0,1,1)) #block 3 fill_se_config(_C.MODEL.MoViNetA0.blocks[1][0], 8, 32, 80, (3,3,3), (1,2,2), (1,0,0), (0,0,0)) fill_se_config(_C.MODEL.MoViNetA0.blocks[1][1], 32, 32, 80, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA0.blocks[1][2], 32, 32, 80, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) #block 4 fill_se_config(_C.MODEL.MoViNetA0.blocks[2][0], 32, 56, 184, (5,3,3), (1,2,2), (2,0,0), (0,0,0)) fill_se_config(_C.MODEL.MoViNetA0.blocks[2][1], 56, 56, 112, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA0.blocks[2][2], 56, 56, 184, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) #block 5 fill_se_config(_C.MODEL.MoViNetA0.blocks[3][0], 56, 56, 184, (5,3,3), (1,1,1), (2,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA0.blocks[3][1], 56, 56, 184, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA0.blocks[3][2], 56, 56, 184, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA0.blocks[3][3], 56, 56, 184, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) #block 6 fill_se_config(_C.MODEL.MoViNetA0.blocks[4][0], 56, 104, 384, (5,3,3), (1,2,2), (2,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA0.blocks[4][1], 104, 104, 280, (1,5,5), (1,1,1), (0,2,2), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA0.blocks[4][2], 104, 104, 280, (1,5,5), (1,1,1), (0,2,2), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA0.blocks[4][3], 104, 104, 344, (1,5,5), (1,1,1), (0,2,2), (0,1,1)) _C.MODEL.MoViNetA0.conv7= CN() fill_conv(_C.MODEL.MoViNetA0.conv7, 104,480,(1,1,1),(1,1,1),(0,0,0)) _C.MODEL.MoViNetA0.dense9= CN() _C.MODEL.MoViNetA0.dense9.hidden_dim = 2048 ################### #### MoViNetA1 #### ################### _C.MODEL.MoViNetA1 = CN() _C.MODEL.MoViNetA1.name = "A1" _C.MODEL.MoViNetA1.weights = "https://github.com/Atze00/MoViNet-pytorch/blob/main/weights/modelA1_statedict_v3?raw=true" _C.MODEL.MoViNetA1.stream_weights = "https://github.com/Atze00/MoViNet-pytorch/blob/main/weights/modelA1_stream_statedict_v3?raw=true" _C.MODEL.MoViNetA1.conv1 = CN() fill_conv(_C.MODEL.MoViNetA1.conv1, 3, 16,(1,3,3),(1,2,2),(0,1,1)) _C.MODEL.MoViNetA1.blocks = [ [CN() for _ in range(2)], [CN() for _ in range(4)], [CN() for _ in range(5)], [CN() for _ in range(6)], [CN() for _ in range(7)]] #Block2 fill_se_config(_C.MODEL.MoViNetA1.blocks[0][0], 16, 16, 40, (1,5,5), (1,2,2), (0,2,2), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA1.blocks[0][1], 16, 16, 40, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) #block 3 fill_se_config(_C.MODEL.MoViNetA1.blocks[1][0], 16, 40, 96, (3,3,3), (1,2,2), (1,0,0), (0,0,0)) fill_se_config(_C.MODEL.MoViNetA1.blocks[1][1], 40, 40, 120, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA1.blocks[1][2], 40, 40, 96, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA1.blocks[1][3], 40, 40, 96, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) #block 4 fill_se_config(_C.MODEL.MoViNetA1.blocks[2][0], 40, 64, 216, (5,3,3), (1,2,2), (2,0,0), (0,0,0)) fill_se_config(_C.MODEL.MoViNetA1.blocks[2][1], 64, 64, 128, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA1.blocks[2][2], 64, 64, 216, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA1.blocks[2][3], 64, 64, 168, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA1.blocks[2][4], 64, 64, 216, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) #block 5 fill_se_config(_C.MODEL.MoViNetA1.blocks[3][0], 64, 64, 216, (5,3,3), (1,1,1), (2,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA1.blocks[3][1], 64, 64, 216, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA1.blocks[3][2], 64, 64, 216, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA1.blocks[3][3], 64, 64, 128, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA1.blocks[3][4], 64, 64, 128, (1,5,5), (1,1,1), (0,2,2), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA1.blocks[3][5], 64, 64, 216, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) #block 6 fill_se_config(_C.MODEL.MoViNetA1.blocks[4][0], 64 , 136, 456, (5,3,3), (1,2,2), (2,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA1.blocks[4][1], 136, 136, 360, (1,5,5), (1,1,1), (0,2,2), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA1.blocks[4][2], 136, 136, 360, (1,5,5), (1,1,1), (0,2,2), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA1.blocks[4][3], 136, 136, 360, (1,5,5), (1,1,1), (0,2,2), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA1.blocks[4][4], 136, 136, 456, (1,5,5), (1,1,1), (0,2,2), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA1.blocks[4][5], 136, 136, 456, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA1.blocks[4][6], 136, 136, 544, (1,3,3), (1,1,1), (0,1,1), (0,1,1)) _C.MODEL.MoViNetA1.conv7= CN() fill_conv(_C.MODEL.MoViNetA1.conv7, 136,600,(1,1,1),(1,1,1),(0,0,0)) _C.MODEL.MoViNetA1.dense9= CN() _C.MODEL.MoViNetA1.dense9.hidden_dim = 2048 ################### #### MoViNetA2 #### ################### _C.MODEL.MoViNetA2 = CN() _C.MODEL.MoViNetA2.name = "A2" _C.MODEL.MoViNetA2.weights = "https://github.com/Atze00/MoViNet-pytorch/blob/main/weights/modelA2_statedict_v3?raw=true" _C.MODEL.MoViNetA2.stream_weights = "https://github.com/Atze00/MoViNet-pytorch/blob/main/weights/modelA2_stream_statedict_v3?raw=true" _C.MODEL.MoViNetA2.conv1 = CN() fill_conv(_C.MODEL.MoViNetA2.conv1, 3,16,(1,3,3),(1,2,2),(0,1,1)) _C.MODEL.MoViNetA2.blocks = [ [CN() for _ in range(3)], [CN() for _ in range(5)], [CN() for _ in range(5)], [CN() for _ in range(6)], [CN() for _ in range(7)]] #Block2 fill_se_config(_C.MODEL.MoViNetA2.blocks[0][0], 16, 16, 40, (1,5,5), (1,2,2), (0,2,2), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA2.blocks[0][1], 16, 16, 40, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA2.blocks[0][2], 16, 16, 64, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) #block 3 fill_se_config(_C.MODEL.MoViNetA2.blocks[1][0], 16, 40, 96, (3,3,3), (1,2,2), (1,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA2.blocks[1][1], 40, 40, 120, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA2.blocks[1][2], 40, 40, 96, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA2.blocks[1][3], 40, 40, 96, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA2.blocks[1][4], 40, 40, 120, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) #block 4 fill_se_config(_C.MODEL.MoViNetA2.blocks[2][0], 40, 72, 240, (5,3,3), (1,2,2), (2,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA2.blocks[2][1], 72, 72, 160, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA2.blocks[2][2], 72, 72, 240, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA2.blocks[2][3], 72, 72, 192, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA2.blocks[2][4], 72, 72, 240, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) #block 5 fill_se_config(_C.MODEL.MoViNetA2.blocks[3][0], 72, 72, 240, (5,3,3), (1,1,1), (2,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA2.blocks[3][1], 72, 72, 240, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA2.blocks[3][2], 72, 72, 240, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA2.blocks[3][3], 72, 72, 240, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA2.blocks[3][4], 72, 72, 144, (1,5,5), (1,1,1), (0,2,2), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA2.blocks[3][5], 72, 72, 240, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) #block 6 fill_se_config(_C.MODEL.MoViNetA2.blocks[4][0], 72 , 144, 480, (5,3,3), (1,2,2), (2,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA2.blocks[4][1], 144, 144, 384, (1,5,5), (1,1,1), (0,2,2), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA2.blocks[4][2], 144, 144, 384, (1,5,5), (1,1,1), (0,2,2), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA2.blocks[4][3], 144, 144, 480, (1,5,5), (1,1,1), (0,2,2), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA2.blocks[4][4], 144, 144, 480, (1,5,5), (1,1,1), (0,2,2), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA2.blocks[4][5], 144, 144, 480, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA2.blocks[4][6], 144, 144, 576, (1,3,3), (1,1,1), (0,1,1), (0,1,1)) _C.MODEL.MoViNetA2.conv7= CN() fill_conv(_C.MODEL.MoViNetA2.conv7, 144,640,(1,1,1),(1,1,1),(0,0,0)) _C.MODEL.MoViNetA2.dense9= CN() _C.MODEL.MoViNetA2.dense9.hidden_dim = 2048 ################### #### MoViNetA3 #### ################### _C.MODEL.MoViNetA3 = CN() _C.MODEL.MoViNetA3.name = "A3" _C.MODEL.MoViNetA3.weights = "https://github.com/Atze00/MoViNet-pytorch/blob/main/weights/modelA3_statedict_v3?raw=true" _C.MODEL.MoViNetA3.conv1 = CN() fill_conv(_C.MODEL.MoViNetA3.conv1, 3,16,(1,3,3),(1,2,2),(0,1,1)) _C.MODEL.MoViNetA3.blocks = [ [CN() for _ in range(4)], [CN() for _ in range(6)], [CN() for _ in range(5)], [CN() for _ in range(8)], [CN() for _ in range(10)]] #Block2 fill_se_config(_C.MODEL.MoViNetA3.blocks[0][0], 16, 16, 40, (1,5,5), (1,2,2), (0,2,2), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA3.blocks[0][1], 16, 16, 40, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA3.blocks[0][2], 16, 16, 64, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA3.blocks[0][3], 16, 16, 40, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) #block 3 fill_se_config(_C.MODEL.MoViNetA3.blocks[1][0], 16, 48, 112, (3,3,3), (1,2,2), (1,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA3.blocks[1][1], 48, 48, 144, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA3.blocks[1][2], 48, 48, 112, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA3.blocks[1][3], 48, 48, 112, (1,5,5), (1,1,1), (0,2,2), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA3.blocks[1][4], 48, 48, 144, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA3.blocks[1][5], 48, 48, 144, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) #block 4 fill_se_config(_C.MODEL.MoViNetA3.blocks[2][0], 48, 80, 240, (5,3,3), (1,2,2), (2,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA3.blocks[2][1], 80, 80, 152, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA3.blocks[2][2], 80, 80, 240, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA3.blocks[2][3], 80, 80, 192, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA3.blocks[2][4], 80, 80, 240, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) #block 5 fill_se_config(_C.MODEL.MoViNetA3.blocks[3][0], 80, 88, 264, (5,3,3), (1,1,1), (2,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA3.blocks[3][1], 88, 88, 264, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA3.blocks[3][2], 88, 88, 264, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA3.blocks[3][3], 88, 88, 264, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA3.blocks[3][4], 88, 88, 160, (1,5,5), (1,1,1), (0,2,2), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA3.blocks[3][5], 88, 88, 264, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA3.blocks[3][6], 88, 88, 264, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA3.blocks[3][7], 88, 88, 264, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) #block 6 fill_se_config(_C.MODEL.MoViNetA3.blocks[4][0], 88 , 168, 560, (5,3,3), (1,2,2), (2,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA3.blocks[4][1], 168, 168, 448, (1,5,5), (1,1,1), (0,2,2), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA3.blocks[4][2], 168, 168, 448, (1,5,5), (1,1,1), (0,2,2), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA3.blocks[4][3], 168, 168, 560, (1,5,5), (1,1,1), (0,2,2), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA3.blocks[4][4], 168, 168, 560, (1,5,5), (1,1,1), (0,2,2), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA3.blocks[4][5], 168, 168, 560, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA3.blocks[4][6], 168, 168, 448, (1,5,5), (1,1,1), (0,2,2), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA3.blocks[4][7], 168, 168, 448, (1,5,5), (1,1,1), (0,2,2), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA3.blocks[4][8], 168, 168, 560, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA3.blocks[4][9], 168, 168, 672, (1,3,3), (1,1,1), (0,1,1), (0,1,1)) _C.MODEL.MoViNetA3.conv7= CN() fill_conv(_C.MODEL.MoViNetA3.conv7, 168,744,(1,1,1),(1,1,1),(0,0,0)) _C.MODEL.MoViNetA3.dense9= CN() _C.MODEL.MoViNetA3.dense9.hidden_dim = 2048 ################### #### MoViNetA4 #### ################### _C.MODEL.MoViNetA4 = CN() _C.MODEL.MoViNetA4.name = "A4" _C.MODEL.MoViNetA4.weights = "https://github.com/Atze00/MoViNet-pytorch/blob/main/weights/modelA4_statedict_v3?raw=true" _C.MODEL.MoViNetA4.conv1 = CN() fill_conv(_C.MODEL.MoViNetA4.conv1, 3,24,(1,3,3),(1,2,2),(0,1,1)) _C.MODEL.MoViNetA4.blocks = [ [CN() for _ in range(6)], [CN() for _ in range(9)], [CN() for _ in range(9)], [CN() for _ in range(10)], [CN() for _ in range(13)]] #Block2 fill_se_config(_C.MODEL.MoViNetA4.blocks[0][0], 24, 24, 64, (1,5,5), (1,2,2), (0,1,1), (0,0,0)) fill_se_config(_C.MODEL.MoViNetA4.blocks[0][1], 24, 24, 64, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA4.blocks[0][2], 24, 24, 96, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA4.blocks[0][3], 24, 24, 64, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA4.blocks[0][4], 24, 24, 96, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA4.blocks[0][5], 24, 24, 64, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) #block 3 fill_se_config(_C.MODEL.MoViNetA4.blocks[1][0], 24, 56, 168, (3,3,3), (1,2,2), (1,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA4.blocks[1][1], 56, 56, 168, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA4.blocks[1][2], 56, 56, 136, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA4.blocks[1][3], 56, 56, 136, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA4.blocks[1][4], 56, 56, 168, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA4.blocks[1][5], 56, 56, 168, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA4.blocks[1][6], 56, 56, 168, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA4.blocks[1][7], 56, 56, 136, (1,5,5), (1,1,1), (0,2,2), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA4.blocks[1][8], 56, 56, 136, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) #block 4 fill_se_config(_C.MODEL.MoViNetA4.blocks[2][0], 56, 96, 320, (5,3,3), (1,2,2), (2,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA4.blocks[2][1], 96, 96, 160, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA4.blocks[2][2], 96, 96, 320, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA4.blocks[2][3], 96, 96, 192, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA4.blocks[2][4], 96, 96, 320, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA4.blocks[2][5], 96, 96, 160, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA4.blocks[2][6], 96, 96, 320, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA4.blocks[2][7], 96, 96, 256, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA4.blocks[2][8], 96, 96, 320, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) #block 5 fill_se_config(_C.MODEL.MoViNetA4.blocks[3][0], 96, 96, 320, (5,3,3), (1,1,1), (2,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA4.blocks[3][1], 96, 96, 320, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA4.blocks[3][2], 96, 96, 320, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA4.blocks[3][3], 96, 96, 320, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA4.blocks[3][4], 96, 96, 192, (1,5,5), (1,1,1), (0,2,2), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA4.blocks[3][5], 96, 96, 320, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA4.blocks[3][6], 96, 96, 320, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA4.blocks[3][7], 96, 96, 192, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA4.blocks[3][8], 96, 96, 320, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA4.blocks[3][9], 96, 96, 320, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) #block 6 fill_se_config(_C.MODEL.MoViNetA4.blocks[4][0], 96 , 192, 640, (5,3,3), (1,2,2), (2,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA4.blocks[4][1], 192, 192, 512, (1,5,5), (1,1,1), (0,2,2), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA4.blocks[4][2], 192, 192, 512, (1,5,5), (1,1,1), (0,2,2), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA4.blocks[4][3], 192, 192, 640, (1,5,5), (1,1,1), (0,2,2), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA4.blocks[4][4], 192, 192, 640, (1,5,5), (1,1,1), (0,2,2), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA4.blocks[4][5], 192, 192, 640, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA4.blocks[4][6], 192, 192, 512, (1,5,5), (1,1,1), (0,2,2), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA4.blocks[4][7], 192, 192, 512, (1,5,5), (1,1,1), (0,2,2), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA4.blocks[4][8], 192, 192, 640, (1,5,5), (1,1,1), (0,2,2), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA4.blocks[4][9], 192, 192, 768, (1,5,5), (1,1,1), (0,2,2), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA4.blocks[4][10], 192, 192, 640, (1,5,5), (1,1,1), (0,2,2), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA4.blocks[4][11], 192, 192, 640, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA4.blocks[4][12], 192, 192, 768, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) _C.MODEL.MoViNetA4.conv7= CN() fill_conv(_C.MODEL.MoViNetA4.conv7, 192,856,(1,1,1),(1,1,1),(0,0,0)) _C.MODEL.MoViNetA4.dense9= CN() _C.MODEL.MoViNetA4.dense9.hidden_dim = 2048 ################### #### MoViNetA5 #### ################### _C.MODEL.MoViNetA5 = CN() _C.MODEL.MoViNetA5.name = "A5" _C.MODEL.MoViNetA5.weights = "https://github.com/Atze00/MoViNet-pytorch/blob/main/weights/modelA5_statedict_v3?raw=true" _C.MODEL.MoViNetA5.conv1 = CN() fill_conv(_C.MODEL.MoViNetA5.conv1, 3,24,(1,3,3),(1,2,2),(0,1,1)) _C.MODEL.MoViNetA5.blocks = [ [CN() for _ in range(6)], [CN() for _ in range(11)], [CN() for _ in range(13)], [CN() for _ in range(11)], [CN() for _ in range(18)]] #Block2 fill_se_config(_C.MODEL.MoViNetA5.blocks[0][0], 24, 24, 64, (1,5,5), (1,2,2), (0,2,2), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA5.blocks[0][1], 24, 24, 64, (1,5,5), (1,1,1), (0,2,2), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA5.blocks[0][2], 24, 24, 96, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA5.blocks[0][3], 24, 24, 64, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA5.blocks[0][4], 24, 24, 96, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA5.blocks[0][5], 24, 24, 64, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) #block 3 fill_se_config(_C.MODEL.MoViNetA5.blocks[1][0], 24, 64, 192, (5,3,3), (1,2,2), (2,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA5.blocks[1][1], 64, 64, 152, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA5.blocks[1][2], 64, 64, 152, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA5.blocks[1][3], 64, 64, 152, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA5.blocks[1][4], 64, 64, 192, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA5.blocks[1][5], 64, 64, 192, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA5.blocks[1][6], 64, 64, 192, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA5.blocks[1][7], 64, 64, 152, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA5.blocks[1][8], 64, 64, 152, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA5.blocks[1][9], 64, 64, 192, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA5.blocks[1][10], 64, 64, 192, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) #block 4 fill_se_config(_C.MODEL.MoViNetA5.blocks[2][0], 64, 112, 376, (5,3,3), (1,2,2), (2,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA5.blocks[2][1], 112, 112, 224, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA5.blocks[2][2], 112, 112, 376, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA5.blocks[2][3], 112, 112, 376, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA5.blocks[2][4], 112, 112, 296, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA5.blocks[2][5], 112, 112, 376, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA5.blocks[2][6], 112, 112, 224, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA5.blocks[2][7], 112, 112, 376, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA5.blocks[2][8], 112, 112, 376, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA5.blocks[2][9], 112, 112, 296, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA5.blocks[2][10], 112, 112, 376, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA5.blocks[2][11], 112, 112, 376, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA5.blocks[2][12], 112, 112, 376, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) #block 5 fill_se_config(_C.MODEL.MoViNetA5.blocks[3][0], 112, 120, 376, (5,3,3), (1,1,1), (2,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA5.blocks[3][1], 120, 120, 376, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA5.blocks[3][2], 120, 120, 376, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA5.blocks[3][3], 120, 120, 376, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA5.blocks[3][4], 120, 120, 224, (1,5,5), (1,1,1), (0,2,2), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA5.blocks[3][5], 120, 120, 376, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA5.blocks[3][6], 120, 120, 376, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA5.blocks[3][7], 120, 120, 224, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA5.blocks[3][8], 120, 120, 376, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA5.blocks[3][9], 120, 120, 376, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA5.blocks[3][10], 120, 120, 376, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) #block 6 fill_se_config(_C.MODEL.MoViNetA5.blocks[4][0], 120 , 224, 744, (5,3,3), (1,2,2), (2,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA5.blocks[4][1], 224, 224, 744, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA5.blocks[4][2], 224, 224, 600, (1,5,5), (1,1,1), (0,2,2), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA5.blocks[4][3], 224, 224, 600, (1,5,5), (1,1,1), (0,2,2), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA5.blocks[4][4], 224, 224, 744, (1,5,5), (1,1,1), (0,2,2), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA5.blocks[4][5], 224, 224, 744, (1,5,5), (1,1,1), (0,2,2), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA5.blocks[4][6], 224, 224, 744, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA5.blocks[4][7], 224, 224, 896, (1,5,5), (1,1,1), (0,2,2), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA5.blocks[4][8], 224, 224, 600, (1,5,5), (1,1,1), (0,2,2), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA5.blocks[4][9], 224, 224, 600, (1,5,5), (1,1,1), (0,2,2), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA5.blocks[4][10], 224, 224, 896, (1,5,5), (1,1,1), (0,2,2), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA5.blocks[4][11], 224, 224, 744, (1,5,5), (1,1,1), (0,2,2), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA5.blocks[4][12], 224, 224, 744, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA5.blocks[4][13], 224, 224, 896, (1,5,5), (1,1,1), (0,2,2), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA5.blocks[4][14], 224, 224, 600, (1,5,5), (1,1,1), (0,2,2), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA5.blocks[4][15], 224, 224, 600, (1,5,5), (1,1,1), (0,2,2), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA5.blocks[4][16], 224, 224, 744, (1,5,5), (1,1,1), (0,2,2), (0,1,1)) fill_se_config(_C.MODEL.MoViNetA5.blocks[4][17], 224, 224, 744, (3,3,3), (1,1,1), (1,1,1), (0,1,1)) _C.MODEL.MoViNetA5.conv7= CN() fill_conv(_C.MODEL.MoViNetA5.conv7, 224,992,(1,1,1),(1,1,1),(0,0,0)) _C.MODEL.MoViNetA5.dense9= CN() _C.MODEL.MoViNetA5.dense9.hidden_dim = 2048