def __init__(self):
    super().__init__()
    filters = [64, 128, 256, 512]
    self.resnet = models.resnet34(pretrained=True)
    self.encoder1 = nn.Sequential(nn.Conv2d(3, 64, kernel_size=7, stride=1, padding=3, bias=False), nn.BatchNorm2d(64), nn.ReLU(inplace=True))
    self.encoder2 = nn.Sequential(nn.MaxPool2d(kernel_size=2, stride=2), self.resnet.layer1)
    self.encoder3 = self.resnet.layer2
    self.encoder4 = self.resnet.layer3
    self.encoder5 = self.resnet.layer4
    self.center = nn.Sequential(ConvBn2d(512, 256, kernel_size=3, padding=1), nn.ReLU(inplace=True), ConvBn2d(256, 256, kernel_size=3, padding=1), nn.ReLU(inplace=True))
    self.decoder5 = DecoderBlockH((filters[3] + filters[2]), filters[2], 64)
    self.se5 = SCSEBlock(64)
    self.decoder4 = DecoderBlockH((filters[2] + 64), filters[1], 64)
    self.se4 = SCSEBlock(64)
    self.decoder3 = DecoderBlockH((filters[1] + 64), filters[1], 64)
    self.se3 = SCSEBlock(64)
    self.decoder2 = DecoderBlockH((filters[0] + 64), filters[0], 64)
    self.se2 = SCSEBlock(64)
    self.decoder1 = DecoderBlockH(filters[0], (filters[0] // 2), 64)
    self.se1 = SCSEBlock(64)
    self.fuse_pixel = nn.Sequential(nn.Conv2d(320, 64, kernel_size=3, padding=1))
    self.logit_pixel = nn.Sequential(nn.ReLU(inplace=True), nn.Conv2d(64, 1, kernel_size=1, padding=0))
    self.logit_image = nn.Sequential(nn.ReLU(inplace=True), nn.Linear(64, 1))
    self.fuse_image = nn.Sequential(nn.Linear(512, 64))
    self.fuse = nn.Sequential(nn.ReLU(inplace=True))
    self.logit = nn.Sequential(nn.Conv2d(128, 1, kernel_size=1, padding=0))
def __init__(self):
    super().__init__()
    filters = [64, 128, 256, 512]
    self.resnet = models.resnet34(pretrained=True)
    self.encoder1 = nn.Sequential(nn.Conv2d(3, 64, kernel_size=7, stride=1, padding=3, bias=False), nn.BatchNorm2d(64), nn.ReLU(inplace=True))
    self.encoder2 = nn.Sequential(nn.MaxPool2d(kernel_size=2, stride=2), self.resnet.layer1)
    self.encoder3 = self.resnet.layer2
    self.encoder4 = self.resnet.layer3
    self.encoder5 = self.resnet.layer4
    self.center = nn.Sequential(ConvBn2d(512, 256, kernel_size=3, padding=1), nn.ReLU(inplace=True), ConvBn2d(256, 256, kernel_size=3, padding=1), nn.ReLU(inplace=True))
    self.decoder5 = DecoderBlockH((filters[3] + filters[2]), filters[2], 64)
    self.se5 = SCSEBlock(64)
    self.decoder4 = DecoderBlockH((filters[2] + 64), filters[1], 64)
    self.se4 = SCSEBlock(64)
    self.decoder3 = DecoderBlockH((filters[1] + 64), filters[1], 64)
    self.se3 = SCSEBlock(64)
    self.decoder2 = DecoderBlockH((filters[0] + 64), filters[0], 64)
    self.se2 = SCSEBlock(64)
    self.decoder1 = DecoderBlockH(filters[0], (filters[0] // 2), 64)
    self.se1 = SCSEBlock(64)
    self.fuse_pixel = nn.Sequential(nn.Conv2d(320, 64, kernel_size=3, padding=1))
    self.logit_pixel = nn.Sequential(nn.ReLU(inplace=True), nn.Conv2d(64, 1, kernel_size=1, padding=0))
    self.logit_image = nn.Sequential(nn.ReLU(inplace=True), nn.Linear(64, 1))
    self.fuse_image = nn.Sequential(nn.Linear(512, 64))
    self.fuse = nn.Sequential(nn.ReLU(inplace=True))
    self.logit = nn.Sequential(nn.Conv2d(128, 1, kernel_size=1, padding=0))