The basic network (supernet) is defined by the unified framework with the structure info list. CnnNet is the overall backbone network, which is composed of differet downsample stages with structure info list. A stage is composed of several blocks, such as Resnet bottleneck block, MobileV2 Depthwise block. Basic block is composed of 2D convolutions.
cnnnet.py
: Define the backbone network for CnnNet, such as classification and detection.
[{'class': 'ConvKXBNRELU', 'in': 3, 'out': 32, 's': 2, 'k': 3},
{'class': 'SuperResK1KXK1', 'in': 32, 'out': 256, 's': 2, 'k': 3, 'L': 1, 'btn': 64},
{'class': 'SuperResK1KXK1', 'in': 256, 'out': 512, 's': 2, 'k': 3, 'L': 1, 'btn': 128},
{'class': 'SuperResK1KXK1', 'in': 512, 'out': 1024, 's': 2, 'k': 3, 'L': 1, 'btn': 256},
{'class': 'SuperResK1KXK1', 'in': 1024, 'out': 2048, 's': 2, 'k': 3, 'L': 1, 'btn': 512}, ]
Supported 2D CNN blocks:
__all_blocks__ = {
'ConvKXBN': ConvKXBN,
'ConvKXBNRELU': ConvKXBNRELU,
'BaseSuperBlock': BaseSuperBlock,
'ResK1KXK1': ResK1KXK1,
'ResK1KX': ResK1KX,
'ResKXKX': ResKXKX,
'ResK1DWK1': ResK1DWK1,
'ResK1DWSEK1': ResK1DWSEK1,
'SuperResK1KXK1': SuperResK1KXK1,
'SuperResK1KX': SuperResK1KX,
'SuperResKXKX': SuperResKXKX,
'SuperResK1DWK1': SuperResK1DWK1,
'SuperResK1DWSEK1': SuperResK1DWSEK1,
'SuperQuantResK1DWK1': SuperQuantResK1DWK1,
}
Supported 3D CNN blocks:
__all_blocks_3D__ = {
'Conv3DKXBN': Conv3DKXBN,
'Conv3DKXBNRELU': Conv3DKXBNRELU,
'BaseSuperBlock3D': BaseSuperBlock3D,
'Res3DK1DWK1': Res3DK1DWK1,
'SuperRes3DK1DWK1': SuperRes3DK1DWK1,
}
Note:
BaseSuperBlock
is the basic class for super block.SuperResK1KXK1
is the derived class fromBaseSuperBlock
to unitL
classResK1KXK1
.SuperResK1DWK1
is the derived class fromBaseSuperBlock
to unitL
classResK1DWK1
.SuperResK1DWSEK1
is the derived class fromBaseSuperBlock
to unitL
classResK1DWSEK1
.SuperResK1KX
is the derived class fromBaseSuperBlock
to unitL
classResK1KX
.SuperResKXKX
is the derived class fromBaseSuperBlock
to unitL
classResKXKX
.SuperQuantResK1DWK1
is the derived class fromSuperResK1DWK1
.SuperRes3DK1DWK1
is the derived class fromBaseSuperBlock
to unitL
classRes3DK1DWK1
.
get_model_size
: Get the number of parameters of the network
get_flops
: Get the FLOPs of the network
get_layers
: Get the Conv layers of the network
get_latency
: Get the latency from predictor or benchmark
get_params_for_trt
: Get the paramters of the network for latency prediction.
get_max_feature
: Get the number of max feature map for MCU.
get_efficient_score
: Get efficient_score of the network.
madnas_forward_pre_GAP
: Get the madnas score of the network, which does not need forward on GPU and has very fast speed .
deepmad_forward_pre_GAP
: Get the deepmad score of the network, which does not need forward on GPU and has very fast speed.
stentr_forward_pre_GAP
: Get the spatio-temporal entropy score of the network, which does not need forward on GPU and has very fast speed.