Spaces:
Runtime error
Runtime error
| from annotator.uniformer.mmcv.cnn import build_conv_layer, build_norm_layer | |
| from torch import nn as nn | |
| class ResLayer(nn.Sequential): | |
| """ResLayer to build ResNet style backbone. | |
| Args: | |
| block (nn.Module): block used to build ResLayer. | |
| inplanes (int): inplanes of block. | |
| planes (int): planes of block. | |
| num_blocks (int): number of blocks. | |
| stride (int): stride of the first block. Default: 1 | |
| avg_down (bool): Use AvgPool instead of stride conv when | |
| downsampling in the bottleneck. Default: False | |
| conv_cfg (dict): dictionary to construct and config conv layer. | |
| Default: None | |
| norm_cfg (dict): dictionary to construct and config norm layer. | |
| Default: dict(type='BN') | |
| multi_grid (int | None): Multi grid dilation rates of last | |
| stage. Default: None | |
| contract_dilation (bool): Whether contract first dilation of each layer | |
| Default: False | |
| """ | |
| def __init__(self, | |
| block, | |
| inplanes, | |
| planes, | |
| num_blocks, | |
| stride=1, | |
| dilation=1, | |
| avg_down=False, | |
| conv_cfg=None, | |
| norm_cfg=dict(type='BN'), | |
| multi_grid=None, | |
| contract_dilation=False, | |
| **kwargs): | |
| self.block = block | |
| downsample = None | |
| if stride != 1 or inplanes != planes * block.expansion: | |
| downsample = [] | |
| conv_stride = stride | |
| if avg_down: | |
| conv_stride = 1 | |
| downsample.append( | |
| nn.AvgPool2d( | |
| kernel_size=stride, | |
| stride=stride, | |
| ceil_mode=True, | |
| count_include_pad=False)) | |
| downsample.extend([ | |
| build_conv_layer( | |
| conv_cfg, | |
| inplanes, | |
| planes * block.expansion, | |
| kernel_size=1, | |
| stride=conv_stride, | |
| bias=False), | |
| build_norm_layer(norm_cfg, planes * block.expansion)[1] | |
| ]) | |
| downsample = nn.Sequential(*downsample) | |
| layers = [] | |
| if multi_grid is None: | |
| if dilation > 1 and contract_dilation: | |
| first_dilation = dilation // 2 | |
| else: | |
| first_dilation = dilation | |
| else: | |
| first_dilation = multi_grid[0] | |
| layers.append( | |
| block( | |
| inplanes=inplanes, | |
| planes=planes, | |
| stride=stride, | |
| dilation=first_dilation, | |
| downsample=downsample, | |
| conv_cfg=conv_cfg, | |
| norm_cfg=norm_cfg, | |
| **kwargs)) | |
| inplanes = planes * block.expansion | |
| for i in range(1, num_blocks): | |
| layers.append( | |
| block( | |
| inplanes=inplanes, | |
| planes=planes, | |
| stride=1, | |
| dilation=dilation if multi_grid is None else multi_grid[i], | |
| conv_cfg=conv_cfg, | |
| norm_cfg=norm_cfg, | |
| **kwargs)) | |
| super(ResLayer, self).__init__(*layers) | |