Spaces:
				
			
			
	
			
			
		Runtime error
		
	
	
	
			
			
	
	
	
	
		
		
		Runtime error
		
	Commit 
							
							·
						
						47e441f
	
1
								Parent(s):
							
							fe2cfb5
								
chore: Update SCHP model checkpoint loading logic
Browse files- .gitignore +2 -0
- model/SCHP/__init__.py +18 -2
- model/SCHP/__pycache__/__init__.cpython-39.pyc +0 -0
- model/SCHP/networks/AugmentCE2P.py +60 -35
- model/SCHP/networks/__pycache__/AugmentCE2P.cpython-39.pyc +0 -0
- model/SCHP/networks/__pycache__/__init__.cpython-39.pyc +0 -0
- model/SCHP/utils/__pycache__/transforms.cpython-39.pyc +0 -0
    	
        .gitignore
    ADDED
    
    | @@ -0,0 +1,2 @@ | |
|  | |
|  | 
|  | |
| 1 | 
            +
            playground.py
         | 
| 2 | 
            +
            __pycache__
         | 
    	
        model/SCHP/__init__.py
    CHANGED
    
    | @@ -81,12 +81,27 @@ class SCHP: | |
| 81 |  | 
| 82 |  | 
| 83 | 
             
                def load_ckpt(self, ckpt_path):
         | 
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
| 84 | 
             
                    state_dict = torch.load(ckpt_path, map_location='cpu')['state_dict']
         | 
| 85 | 
             
                    new_state_dict = OrderedDict()
         | 
| 86 | 
             
                    for k, v in state_dict.items():
         | 
| 87 | 
             
                        name = k[7:]  # remove `module.`
         | 
| 88 | 
             
                        new_state_dict[name] = v
         | 
| 89 | 
            -
                     | 
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
| 90 |  | 
| 91 | 
             
                def _box2cs(self, box):
         | 
| 92 | 
             
                    x, y, w, h = box[:4]
         | 
| @@ -148,7 +163,8 @@ class SCHP: | |
| 148 | 
             
                        meta_list = [meta]
         | 
| 149 |  | 
| 150 | 
             
                    output = self.model(image)
         | 
| 151 | 
            -
                    upsample_outputs = self.upsample(output[0][-1])
         | 
|  | |
| 152 | 
             
                    upsample_outputs = upsample_outputs.permute(0, 2, 3, 1)  # BCHW -> BHWC
         | 
| 153 |  | 
| 154 | 
             
                    output_img_list = []
         | 
|  | |
| 81 |  | 
| 82 |  | 
| 83 | 
             
                def load_ckpt(self, ckpt_path):
         | 
| 84 | 
            +
                    rename_map = {
         | 
| 85 | 
            +
                        "decoder.conv3.2.weight": "decoder.conv3.3.weight",
         | 
| 86 | 
            +
                        "decoder.conv3.3.weight": "decoder.conv3.4.weight",
         | 
| 87 | 
            +
                        "decoder.conv3.3.bias": "decoder.conv3.4.bias",
         | 
| 88 | 
            +
                        "decoder.conv3.3.running_mean": "decoder.conv3.4.running_mean",
         | 
| 89 | 
            +
                        "decoder.conv3.3.running_var": "decoder.conv3.4.running_var",
         | 
| 90 | 
            +
                        "fushion.3.weight": "fushion.4.weight",
         | 
| 91 | 
            +
                        "fushion.3.bias": "fushion.4.bias",
         | 
| 92 | 
            +
                    }
         | 
| 93 | 
             
                    state_dict = torch.load(ckpt_path, map_location='cpu')['state_dict']
         | 
| 94 | 
             
                    new_state_dict = OrderedDict()
         | 
| 95 | 
             
                    for k, v in state_dict.items():
         | 
| 96 | 
             
                        name = k[7:]  # remove `module.`
         | 
| 97 | 
             
                        new_state_dict[name] = v
         | 
| 98 | 
            +
                    new_state_dict_ = OrderedDict()
         | 
| 99 | 
            +
                    for k, v in list(new_state_dict.items()):
         | 
| 100 | 
            +
                        if k in rename_map:
         | 
| 101 | 
            +
                            new_state_dict_[rename_map[k]] = v
         | 
| 102 | 
            +
                        else:
         | 
| 103 | 
            +
                            new_state_dict_[k] = v
         | 
| 104 | 
            +
                    self.model.load_state_dict(new_state_dict_, strict=False)
         | 
| 105 |  | 
| 106 | 
             
                def _box2cs(self, box):
         | 
| 107 | 
             
                    x, y, w, h = box[:4]
         | 
|  | |
| 163 | 
             
                        meta_list = [meta]
         | 
| 164 |  | 
| 165 | 
             
                    output = self.model(image)
         | 
| 166 | 
            +
                    # upsample_outputs = self.upsample(output[0][-1])
         | 
| 167 | 
            +
                    upsample_outputs = self.upsample(output)
         | 
| 168 | 
             
                    upsample_outputs = upsample_outputs.permute(0, 2, 3, 1)  # BCHW -> BHWC
         | 
| 169 |  | 
| 170 | 
             
                    output_img_list = []
         | 
    	
        model/SCHP/__pycache__/__init__.cpython-39.pyc
    CHANGED
    
    | Binary files a/model/SCHP/__pycache__/__init__.cpython-39.pyc and b/model/SCHP/__pycache__/__init__.cpython-39.pyc differ | 
|  | 
    	
        model/SCHP/networks/AugmentCE2P.py
    CHANGED
    
    | @@ -11,19 +11,13 @@ | |
| 11 | 
             
                         LICENSE file in the root directory of this source tree.
         | 
| 12 | 
             
            """
         | 
| 13 |  | 
| 14 | 
            -
            import functools
         | 
| 15 | 
            -
             | 
| 16 | 
             
            import torch
         | 
| 17 | 
             
            import torch.nn as nn
         | 
| 18 | 
             
            from torch.nn import functional as F
         | 
| 19 | 
            -
            # Note here we adopt the InplaceABNSync implementation from https://github.com/mapillary/inplace_abn
         | 
| 20 | 
            -
            # By default, the InplaceABNSync module contains a BatchNorm Layer and a LeakyReLu layer
         | 
| 21 | 
            -
            from inplace_abn import InPlaceABNSync
         | 
| 22 |  | 
| 23 | 
            -
             | 
| 24 |  | 
| 25 | 
             
            affine_par = True
         | 
| 26 | 
            -
             | 
| 27 | 
             
            pretrained_settings = {
         | 
| 28 | 
             
                'resnet101': {
         | 
| 29 | 
             
                    'imagenet': {
         | 
| @@ -99,14 +93,20 @@ class PSPModule(nn.Module): | |
| 99 | 
             
                    self.bottleneck = nn.Sequential(
         | 
| 100 | 
             
                        nn.Conv2d(features + len(sizes) * out_features, out_features, kernel_size=3, padding=1, dilation=1,
         | 
| 101 | 
             
                                  bias=False),
         | 
| 102 | 
            -
                         | 
|  | |
| 103 | 
             
                    )
         | 
| 104 |  | 
| 105 | 
             
                def _make_stage(self, features, out_features, size):
         | 
| 106 | 
             
                    prior = nn.AdaptiveAvgPool2d(output_size=(size, size))
         | 
| 107 | 
             
                    conv = nn.Conv2d(features, out_features, kernel_size=1, bias=False)
         | 
| 108 | 
            -
                     | 
| 109 | 
            -
             | 
|  | |
|  | |
|  | |
|  | |
|  | |
| 110 |  | 
| 111 | 
             
                def forward(self, feats):
         | 
| 112 | 
             
                    h, w = feats.size(2), feats.size(3)
         | 
| @@ -128,23 +128,35 @@ class ASPPModule(nn.Module): | |
| 128 | 
             
                    self.conv1 = nn.Sequential(nn.AdaptiveAvgPool2d((1, 1)),
         | 
| 129 | 
             
                                               nn.Conv2d(features, inner_features, kernel_size=1, padding=0, dilation=1,
         | 
| 130 | 
             
                                                         bias=False),
         | 
| 131 | 
            -
             | 
|  | |
|  | |
|  | |
| 132 | 
             
                    self.conv2 = nn.Sequential(
         | 
| 133 | 
             
                        nn.Conv2d(features, inner_features, kernel_size=1, padding=0, dilation=1, bias=False),
         | 
| 134 | 
            -
                         | 
|  | |
|  | |
| 135 | 
             
                    self.conv3 = nn.Sequential(
         | 
| 136 | 
             
                        nn.Conv2d(features, inner_features, kernel_size=3, padding=dilations[0], dilation=dilations[0], bias=False),
         | 
| 137 | 
            -
                         | 
|  | |
|  | |
| 138 | 
             
                    self.conv4 = nn.Sequential(
         | 
| 139 | 
             
                        nn.Conv2d(features, inner_features, kernel_size=3, padding=dilations[1], dilation=dilations[1], bias=False),
         | 
| 140 | 
            -
                         | 
|  | |
|  | |
| 141 | 
             
                    self.conv5 = nn.Sequential(
         | 
| 142 | 
             
                        nn.Conv2d(features, inner_features, kernel_size=3, padding=dilations[2], dilation=dilations[2], bias=False),
         | 
| 143 | 
            -
                         | 
|  | |
|  | |
| 144 |  | 
| 145 | 
             
                    self.bottleneck = nn.Sequential(
         | 
| 146 | 
             
                        nn.Conv2d(inner_features * 5, out_features, kernel_size=1, padding=0, dilation=1, bias=False),
         | 
| 147 | 
            -
                         | 
|  | |
| 148 | 
             
                        nn.Dropout2d(0.1)
         | 
| 149 | 
             
                    )
         | 
| 150 |  | 
| @@ -173,24 +185,27 @@ class Edge_Module(nn.Module): | |
| 173 |  | 
| 174 | 
             
                    self.conv1 = nn.Sequential(
         | 
| 175 | 
             
                        nn.Conv2d(in_fea[0], mid_fea, kernel_size=1, padding=0, dilation=1, bias=False),
         | 
| 176 | 
            -
                         | 
|  | |
| 177 | 
             
                    )
         | 
| 178 | 
             
                    self.conv2 = nn.Sequential(
         | 
| 179 | 
             
                        nn.Conv2d(in_fea[1], mid_fea, kernel_size=1, padding=0, dilation=1, bias=False),
         | 
| 180 | 
            -
                         | 
|  | |
| 181 | 
             
                    )
         | 
| 182 | 
             
                    self.conv3 = nn.Sequential(
         | 
| 183 | 
             
                        nn.Conv2d(in_fea[2], mid_fea, kernel_size=1, padding=0, dilation=1, bias=False),
         | 
| 184 | 
            -
                         | 
|  | |
| 185 | 
             
                    )
         | 
| 186 | 
             
                    self.conv4 = nn.Conv2d(mid_fea, out_fea, kernel_size=3, padding=1, dilation=1, bias=True)
         | 
| 187 | 
            -
                    self.conv5 = nn.Conv2d(out_fea * 3, out_fea, kernel_size=1, padding=0, dilation=1, bias=True)
         | 
| 188 |  | 
| 189 | 
             
                def forward(self, x1, x2, x3):
         | 
| 190 | 
             
                    _, _, h, w = x1.size()
         | 
| 191 |  | 
| 192 | 
             
                    edge1_fea = self.conv1(x1)
         | 
| 193 | 
            -
                    edge1 = self.conv4(edge1_fea)
         | 
| 194 | 
             
                    edge2_fea = self.conv2(x2)
         | 
| 195 | 
             
                    edge2 = self.conv4(edge2_fea)
         | 
| 196 | 
             
                    edge3_fea = self.conv3(x3)
         | 
| @@ -201,11 +216,12 @@ class Edge_Module(nn.Module): | |
| 201 | 
             
                    edge2 = F.interpolate(edge2, size=(h, w), mode='bilinear', align_corners=True)
         | 
| 202 | 
             
                    edge3 = F.interpolate(edge3, size=(h, w), mode='bilinear', align_corners=True)
         | 
| 203 |  | 
| 204 | 
            -
                    edge = torch.cat([edge1, edge2, edge3], dim=1)
         | 
| 205 | 
             
                    edge_fea = torch.cat([edge1_fea, edge2_fea, edge3_fea], dim=1)
         | 
| 206 | 
            -
                    edge = self.conv5(edge)
         | 
| 207 |  | 
| 208 | 
            -
                    return edge, edge_fea
         | 
|  | |
| 209 |  | 
| 210 |  | 
| 211 | 
             
            class Decoder_Module(nn.Module):
         | 
| @@ -217,20 +233,24 @@ class Decoder_Module(nn.Module): | |
| 217 | 
             
                    super(Decoder_Module, self).__init__()
         | 
| 218 | 
             
                    self.conv1 = nn.Sequential(
         | 
| 219 | 
             
                        nn.Conv2d(512, 256, kernel_size=1, padding=0, dilation=1, bias=False),
         | 
| 220 | 
            -
                         | 
|  | |
| 221 | 
             
                    )
         | 
| 222 | 
             
                    self.conv2 = nn.Sequential(
         | 
| 223 | 
             
                        nn.Conv2d(256, 48, kernel_size=1, stride=1, padding=0, dilation=1, bias=False),
         | 
| 224 | 
            -
                         | 
|  | |
| 225 | 
             
                    )
         | 
| 226 | 
             
                    self.conv3 = nn.Sequential(
         | 
| 227 | 
             
                        nn.Conv2d(304, 256, kernel_size=1, padding=0, dilation=1, bias=False),
         | 
| 228 | 
            -
                         | 
|  | |
| 229 | 
             
                        nn.Conv2d(256, 256, kernel_size=1, padding=0, dilation=1, bias=False),
         | 
| 230 | 
            -
                         | 
|  | |
| 231 | 
             
                    )
         | 
| 232 |  | 
| 233 | 
            -
                    self.conv4 = nn.Conv2d(256, num_classes, kernel_size=1, padding=0, dilation=1, bias=True)
         | 
| 234 |  | 
| 235 | 
             
                def forward(self, xt, xl):
         | 
| 236 | 
             
                    _, _, h, w = xl.size()
         | 
| @@ -238,8 +258,9 @@ class Decoder_Module(nn.Module): | |
| 238 | 
             
                    xl = self.conv2(xl)
         | 
| 239 | 
             
                    x = torch.cat([xt, xl], dim=1)
         | 
| 240 | 
             
                    x = self.conv3(x)
         | 
| 241 | 
            -
                    seg = self.conv4(x)
         | 
| 242 | 
            -
                    return seg, x
         | 
|  | |
| 243 |  | 
| 244 |  | 
| 245 | 
             
            class ResNet(nn.Module):
         | 
| @@ -270,7 +291,8 @@ class ResNet(nn.Module): | |
| 270 |  | 
| 271 | 
             
                    self.fushion = nn.Sequential(
         | 
| 272 | 
             
                        nn.Conv2d(1024, 256, kernel_size=1, padding=0, dilation=1, bias=False),
         | 
| 273 | 
            -
                         | 
|  | |
| 274 | 
             
                        nn.Dropout2d(0.1),
         | 
| 275 | 
             
                        nn.Conv2d(256, num_classes, kernel_size=1, padding=0, dilation=1, bias=True)
         | 
| 276 | 
             
                    )
         | 
| @@ -304,13 +326,16 @@ class ResNet(nn.Module): | |
| 304 | 
             
                    x4 = self.layer3(x3)
         | 
| 305 | 
             
                    x5 = self.layer4(x4)
         | 
| 306 | 
             
                    x = self.context_encoding(x5)
         | 
| 307 | 
            -
                    parsing_result, parsing_fea = self.decoder(x, x2)
         | 
|  | |
| 308 | 
             
                    # Edge Branch
         | 
| 309 | 
            -
                    edge_result, edge_fea = self.edge(x2, x3, x4)
         | 
|  | |
| 310 | 
             
                    # Fusion Branch
         | 
| 311 | 
             
                    x = torch.cat([parsing_fea, edge_fea], dim=1)
         | 
| 312 | 
             
                    fusion_result = self.fushion(x)
         | 
| 313 | 
            -
                    return [[parsing_result, fusion_result], [edge_result]]
         | 
|  | |
| 314 |  | 
| 315 |  | 
| 316 | 
             
            def initialize_pretrained_model(model, settings, pretrained='./models/resnet101-imagenet.pth'):
         | 
|  | |
| 11 | 
             
                         LICENSE file in the root directory of this source tree.
         | 
| 12 | 
             
            """
         | 
| 13 |  | 
|  | |
|  | |
| 14 | 
             
            import torch
         | 
| 15 | 
             
            import torch.nn as nn
         | 
| 16 | 
             
            from torch.nn import functional as F
         | 
|  | |
|  | |
|  | |
| 17 |  | 
| 18 | 
            +
            from torch.nn import BatchNorm2d, LeakyReLU
         | 
| 19 |  | 
| 20 | 
             
            affine_par = True
         | 
|  | |
| 21 | 
             
            pretrained_settings = {
         | 
| 22 | 
             
                'resnet101': {
         | 
| 23 | 
             
                    'imagenet': {
         | 
|  | |
| 93 | 
             
                    self.bottleneck = nn.Sequential(
         | 
| 94 | 
             
                        nn.Conv2d(features + len(sizes) * out_features, out_features, kernel_size=3, padding=1, dilation=1,
         | 
| 95 | 
             
                                  bias=False),
         | 
| 96 | 
            +
                        BatchNorm2d(out_features),
         | 
| 97 | 
            +
                        LeakyReLU(),
         | 
| 98 | 
             
                    )
         | 
| 99 |  | 
| 100 | 
             
                def _make_stage(self, features, out_features, size):
         | 
| 101 | 
             
                    prior = nn.AdaptiveAvgPool2d(output_size=(size, size))
         | 
| 102 | 
             
                    conv = nn.Conv2d(features, out_features, kernel_size=1, bias=False)
         | 
| 103 | 
            +
                    return nn.Sequential(
         | 
| 104 | 
            +
                        prior, 
         | 
| 105 | 
            +
                        conv, 
         | 
| 106 | 
            +
                        # bn
         | 
| 107 | 
            +
                        BatchNorm2d(out_features),
         | 
| 108 | 
            +
                        LeakyReLU(),
         | 
| 109 | 
            +
                    )
         | 
| 110 |  | 
| 111 | 
             
                def forward(self, feats):
         | 
| 112 | 
             
                    h, w = feats.size(2), feats.size(3)
         | 
|  | |
| 128 | 
             
                    self.conv1 = nn.Sequential(nn.AdaptiveAvgPool2d((1, 1)),
         | 
| 129 | 
             
                                               nn.Conv2d(features, inner_features, kernel_size=1, padding=0, dilation=1,
         | 
| 130 | 
             
                                                         bias=False),
         | 
| 131 | 
            +
                                            #    InPlaceABNSync(inner_features)
         | 
| 132 | 
            +
                                                BatchNorm2d(inner_features),
         | 
| 133 | 
            +
                                                LeakyReLU(),
         | 
| 134 | 
            +
                                            )
         | 
| 135 | 
             
                    self.conv2 = nn.Sequential(
         | 
| 136 | 
             
                        nn.Conv2d(features, inner_features, kernel_size=1, padding=0, dilation=1, bias=False),
         | 
| 137 | 
            +
                        BatchNorm2d(inner_features),
         | 
| 138 | 
            +
                        LeakyReLU(),
         | 
| 139 | 
            +
                        )
         | 
| 140 | 
             
                    self.conv3 = nn.Sequential(
         | 
| 141 | 
             
                        nn.Conv2d(features, inner_features, kernel_size=3, padding=dilations[0], dilation=dilations[0], bias=False),
         | 
| 142 | 
            +
                        BatchNorm2d(inner_features),
         | 
| 143 | 
            +
                        LeakyReLU(),
         | 
| 144 | 
            +
                        )
         | 
| 145 | 
             
                    self.conv4 = nn.Sequential(
         | 
| 146 | 
             
                        nn.Conv2d(features, inner_features, kernel_size=3, padding=dilations[1], dilation=dilations[1], bias=False),
         | 
| 147 | 
            +
                        BatchNorm2d(inner_features),
         | 
| 148 | 
            +
                        LeakyReLU(),
         | 
| 149 | 
            +
                        )
         | 
| 150 | 
             
                    self.conv5 = nn.Sequential(
         | 
| 151 | 
             
                        nn.Conv2d(features, inner_features, kernel_size=3, padding=dilations[2], dilation=dilations[2], bias=False),
         | 
| 152 | 
            +
                        BatchNorm2d(inner_features),
         | 
| 153 | 
            +
                        LeakyReLU(),
         | 
| 154 | 
            +
                        )
         | 
| 155 |  | 
| 156 | 
             
                    self.bottleneck = nn.Sequential(
         | 
| 157 | 
             
                        nn.Conv2d(inner_features * 5, out_features, kernel_size=1, padding=0, dilation=1, bias=False),
         | 
| 158 | 
            +
                        BatchNorm2d(inner_features),
         | 
| 159 | 
            +
                        LeakyReLU(),
         | 
| 160 | 
             
                        nn.Dropout2d(0.1)
         | 
| 161 | 
             
                    )
         | 
| 162 |  | 
|  | |
| 185 |  | 
| 186 | 
             
                    self.conv1 = nn.Sequential(
         | 
| 187 | 
             
                        nn.Conv2d(in_fea[0], mid_fea, kernel_size=1, padding=0, dilation=1, bias=False),
         | 
| 188 | 
            +
                        BatchNorm2d(mid_fea),
         | 
| 189 | 
            +
                        LeakyReLU(),
         | 
| 190 | 
             
                    )
         | 
| 191 | 
             
                    self.conv2 = nn.Sequential(
         | 
| 192 | 
             
                        nn.Conv2d(in_fea[1], mid_fea, kernel_size=1, padding=0, dilation=1, bias=False),
         | 
| 193 | 
            +
                        BatchNorm2d(mid_fea),
         | 
| 194 | 
            +
                        LeakyReLU(),
         | 
| 195 | 
             
                    )
         | 
| 196 | 
             
                    self.conv3 = nn.Sequential(
         | 
| 197 | 
             
                        nn.Conv2d(in_fea[2], mid_fea, kernel_size=1, padding=0, dilation=1, bias=False),
         | 
| 198 | 
            +
                        BatchNorm2d(mid_fea),
         | 
| 199 | 
            +
                        LeakyReLU(),
         | 
| 200 | 
             
                    )
         | 
| 201 | 
             
                    self.conv4 = nn.Conv2d(mid_fea, out_fea, kernel_size=3, padding=1, dilation=1, bias=True)
         | 
| 202 | 
            +
                    # self.conv5 = nn.Conv2d(out_fea * 3, out_fea, kernel_size=1, padding=0, dilation=1, bias=True)
         | 
| 203 |  | 
| 204 | 
             
                def forward(self, x1, x2, x3):
         | 
| 205 | 
             
                    _, _, h, w = x1.size()
         | 
| 206 |  | 
| 207 | 
             
                    edge1_fea = self.conv1(x1)
         | 
| 208 | 
            +
                    # edge1 = self.conv4(edge1_fea)
         | 
| 209 | 
             
                    edge2_fea = self.conv2(x2)
         | 
| 210 | 
             
                    edge2 = self.conv4(edge2_fea)
         | 
| 211 | 
             
                    edge3_fea = self.conv3(x3)
         | 
|  | |
| 216 | 
             
                    edge2 = F.interpolate(edge2, size=(h, w), mode='bilinear', align_corners=True)
         | 
| 217 | 
             
                    edge3 = F.interpolate(edge3, size=(h, w), mode='bilinear', align_corners=True)
         | 
| 218 |  | 
| 219 | 
            +
                    # edge = torch.cat([edge1, edge2, edge3], dim=1)
         | 
| 220 | 
             
                    edge_fea = torch.cat([edge1_fea, edge2_fea, edge3_fea], dim=1)
         | 
| 221 | 
            +
                    # edge = self.conv5(edge)
         | 
| 222 |  | 
| 223 | 
            +
                    # return edge, edge_fea
         | 
| 224 | 
            +
                    return edge_fea
         | 
| 225 |  | 
| 226 |  | 
| 227 | 
             
            class Decoder_Module(nn.Module):
         | 
|  | |
| 233 | 
             
                    super(Decoder_Module, self).__init__()
         | 
| 234 | 
             
                    self.conv1 = nn.Sequential(
         | 
| 235 | 
             
                        nn.Conv2d(512, 256, kernel_size=1, padding=0, dilation=1, bias=False),
         | 
| 236 | 
            +
                        BatchNorm2d(256),
         | 
| 237 | 
            +
                        LeakyReLU(),
         | 
| 238 | 
             
                    )
         | 
| 239 | 
             
                    self.conv2 = nn.Sequential(
         | 
| 240 | 
             
                        nn.Conv2d(256, 48, kernel_size=1, stride=1, padding=0, dilation=1, bias=False),
         | 
| 241 | 
            +
                        BatchNorm2d(48),
         | 
| 242 | 
            +
                        LeakyReLU(),
         | 
| 243 | 
             
                    )
         | 
| 244 | 
             
                    self.conv3 = nn.Sequential(
         | 
| 245 | 
             
                        nn.Conv2d(304, 256, kernel_size=1, padding=0, dilation=1, bias=False),
         | 
| 246 | 
            +
                        BatchNorm2d(256),
         | 
| 247 | 
            +
                        LeakyReLU(),
         | 
| 248 | 
             
                        nn.Conv2d(256, 256, kernel_size=1, padding=0, dilation=1, bias=False),
         | 
| 249 | 
            +
                        BatchNorm2d(256),
         | 
| 250 | 
            +
                        LeakyReLU(),
         | 
| 251 | 
             
                    )
         | 
| 252 |  | 
| 253 | 
            +
                    # self.conv4 = nn.Conv2d(256, num_classes, kernel_size=1, padding=0, dilation=1, bias=True)
         | 
| 254 |  | 
| 255 | 
             
                def forward(self, xt, xl):
         | 
| 256 | 
             
                    _, _, h, w = xl.size()
         | 
|  | |
| 258 | 
             
                    xl = self.conv2(xl)
         | 
| 259 | 
             
                    x = torch.cat([xt, xl], dim=1)
         | 
| 260 | 
             
                    x = self.conv3(x)
         | 
| 261 | 
            +
                    # seg = self.conv4(x)
         | 
| 262 | 
            +
                    # return seg, x
         | 
| 263 | 
            +
                    return x
         | 
| 264 |  | 
| 265 |  | 
| 266 | 
             
            class ResNet(nn.Module):
         | 
|  | |
| 291 |  | 
| 292 | 
             
                    self.fushion = nn.Sequential(
         | 
| 293 | 
             
                        nn.Conv2d(1024, 256, kernel_size=1, padding=0, dilation=1, bias=False),
         | 
| 294 | 
            +
                        BatchNorm2d(256),
         | 
| 295 | 
            +
                        LeakyReLU(),
         | 
| 296 | 
             
                        nn.Dropout2d(0.1),
         | 
| 297 | 
             
                        nn.Conv2d(256, num_classes, kernel_size=1, padding=0, dilation=1, bias=True)
         | 
| 298 | 
             
                    )
         | 
|  | |
| 326 | 
             
                    x4 = self.layer3(x3)
         | 
| 327 | 
             
                    x5 = self.layer4(x4)
         | 
| 328 | 
             
                    x = self.context_encoding(x5)
         | 
| 329 | 
            +
                    # parsing_result, parsing_fea = self.decoder(x, x2)
         | 
| 330 | 
            +
                    parsing_fea = self.decoder(x, x2)
         | 
| 331 | 
             
                    # Edge Branch
         | 
| 332 | 
            +
                    # edge_result, edge_fea = self.edge(x2, x3, x4)
         | 
| 333 | 
            +
                    edge_fea = self.edge(x2, x3, x4)
         | 
| 334 | 
             
                    # Fusion Branch
         | 
| 335 | 
             
                    x = torch.cat([parsing_fea, edge_fea], dim=1)
         | 
| 336 | 
             
                    fusion_result = self.fushion(x)
         | 
| 337 | 
            +
                    # return [[parsing_result, fusion_result], [edge_result]]
         | 
| 338 | 
            +
                    return fusion_result
         | 
| 339 |  | 
| 340 |  | 
| 341 | 
             
            def initialize_pretrained_model(model, settings, pretrained='./models/resnet101-imagenet.pth'):
         | 
    	
        model/SCHP/networks/__pycache__/AugmentCE2P.cpython-39.pyc
    CHANGED
    
    | Binary files a/model/SCHP/networks/__pycache__/AugmentCE2P.cpython-39.pyc and b/model/SCHP/networks/__pycache__/AugmentCE2P.cpython-39.pyc differ | 
|  | 
    	
        model/SCHP/networks/__pycache__/__init__.cpython-39.pyc
    CHANGED
    
    | Binary files a/model/SCHP/networks/__pycache__/__init__.cpython-39.pyc and b/model/SCHP/networks/__pycache__/__init__.cpython-39.pyc differ | 
|  | 
    	
        model/SCHP/utils/__pycache__/transforms.cpython-39.pyc
    CHANGED
    
    | Binary files a/model/SCHP/utils/__pycache__/transforms.cpython-39.pyc and b/model/SCHP/utils/__pycache__/transforms.cpython-39.pyc differ | 
|  | 
 
			

