in seamseg/modules/heads/fpn.py [0:0]
def __init__(self, in_channels, classes, roi_size, fc_hidden_channels=1024, conv_hidden_channels=256, norm_act=ABN):
super(FPNMaskHead, self).__init__()
# ROI section
self.fc = nn.Sequential(OrderedDict([
("fc1", nn.Linear(int(roi_size[0] * roi_size[1] * in_channels / 4), fc_hidden_channels, bias=False)),
("bn1", norm_act(fc_hidden_channels)),
("fc2", nn.Linear(fc_hidden_channels, fc_hidden_channels, bias=False)),
("bn2", norm_act(fc_hidden_channels))
]))
self.roi_cls = nn.Linear(fc_hidden_channels, classes["thing"] + 1)
self.roi_bbx = nn.Linear(fc_hidden_channels, classes["thing"] * 4)
# Mask section
self.conv = nn.Sequential(OrderedDict([
("conv1", nn.Conv2d(in_channels, conv_hidden_channels, 3, padding=1, bias=False)),
("bn1", norm_act(conv_hidden_channels)),
("conv2", nn.Conv2d(conv_hidden_channels, conv_hidden_channels, 3, padding=1, bias=False)),
("bn2", norm_act(conv_hidden_channels)),
("conv3", nn.Conv2d(conv_hidden_channels, conv_hidden_channels, 3, padding=1, bias=False)),
("bn3", norm_act(conv_hidden_channels)),
("conv4", nn.Conv2d(conv_hidden_channels, conv_hidden_channels, 3, padding=1, bias=False)),
("bn4", norm_act(conv_hidden_channels)),
("conv_up", nn.ConvTranspose2d(conv_hidden_channels, conv_hidden_channels, 2, stride=2, bias=False)),
("bn_up", norm_act(conv_hidden_channels))
]))
self.roi_msk = nn.Conv2d(conv_hidden_channels, classes["thing"], 1)
self.reset_parameters()