Exemplo n.º 1
0
    def __init__(self,cfg,feature_extracter,dynamic_seghead=DynamicSegHead(),freeze_bn=False):
        super(IntVOS,self).__init__()
        self.feature_extracter=feature_extracter
        self.feature_extracter.cls_conv=nn.Sequential()
        self.feature_extracter.upsample4=nn.Sequential()
        self.semantic_embedding=None
        self.seperate_conv=nn.Conv2d(cfg.MODEL_ASPP_OUTDIM,cfg.MODEL_ASPP_OUTDIM,kernel_size=3,stride=1,padding=1,groups=cfg.MODEL_ASPP_OUTDIM)
        self.bn1 = SynchronizedBatchNorm2d(cfg.MODEL_ASPP_OUTDIM, momentum=cfg.TRAIN_BN_MOM)
        self.relu1=nn.ReLU(True)
        self.embedding_conv = nn.Conv2d(cfg.MODEL_ASPP_OUTDIM,cfg.MODEL_SEMANTIC_EMBEDDING_DIM,1,1)
        self.relu2=nn.ReLU(True)
        self.bn2  = SynchronizedBatchNorm2d(cfg.MODEL_SEMANTIC_EMBEDDING_DIM, momentum=cfg.TRAIN_BN_MOM)
        self.semantic_embedding=nn.Sequential(*[self.seperate_conv,self.bn1,self.relu1,self.embedding_conv,self.bn2,self.relu2])
#        self.semantic_embedding=nn.Sequential(*[self.seperate_conv,self.relu1,self.embedding_conv,self.relu2])

        for m in self.semantic_embedding:
            if isinstance(m, nn.Conv2d):
                nn.init.kaiming_normal_(m.weight, mode='fan_out', nonlinearity='relu')

        
        #########################
        self.dynamic_seghead = DynamicSegHead()
        if cfg.MODEL_GLOBAL_ATTEN:
            self.global_atten=Global_Atten()
        if cfg.INTER_USE_GLOBAL:
            self.inter_seghead = IntSegHead2(in_dim=cfg.MODEL_SEMANTIC_EMBEDDING_DIM+4)
        else:
            self.inter_seghead = IntSegHead2(in_dim=cfg.MODEL_SEMANTIC_EMBEDDING_DIM+3)

        if freeze_bn:
            self.freeze_bn()
Exemplo n.º 2
0
 def __init__(self,in_dim,out_dim):
     super(_res_block,self).__init__()
     self.conv1=nn.Conv2d(in_dim,out_dim,kernel_size=3,stride=1,padding=1)
     self.relu1=nn.ReLU()
     self.bn1 = SynchronizedBatchNorm2d(out_dim, momentum=cfg.TRAIN_BN_MOM)
     self.conv2=nn.Conv2d(out_dim,out_dim,kernel_size=3,stride=1,padding=1)
     self.relu2=nn.ReLU()
     self.bn2 = SynchronizedBatchNorm2d(out_dim, momentum=cfg.TRAIN_BN_MOM)
Exemplo n.º 3
0
 def __init__(self,in_dim,out_dim,kernel_size=7):
     super(_split_separable_conv2d,self).__init__()
     self.conv1=nn.Conv2d(in_dim,in_dim,kernel_size=kernel_size,stride=1,padding=int((kernel_size-1)/2),groups=in_dim)
     self.relu1=nn.ReLU(True)
     self.bn1 = SynchronizedBatchNorm2d(in_dim, momentum=cfg.TRAIN_BN_MOM)
     self.conv2=nn.Conv2d(in_dim,out_dim,kernel_size=1,stride=1)
     self.relu2=nn.ReLU(True)
     self.bn2 = SynchronizedBatchNorm2d(out_dim, momentum=cfg.TRAIN_BN_MOM)
     nn.init.kaiming_normal_(self.conv1.weight,mode='fan_out',nonlinearity='relu')
     nn.init.kaiming_normal_(self.conv2.weight,mode='fan_out',nonlinearity='relu')
Exemplo n.º 4
0
    def __init__(self,in_dim=(cfg.MODEL_SEMANTIC_EMBEDDING_DIM+3),emb_dim=cfg.MODEL_HEAD_EMBEDDING_DIM):
        super(IntSegHead,self).__init__()
        self.conv1 = nn.Conv2d(in_dim,emb_dim,kernel_size=7,stride=1,padding=3)
        self.bn1 = SynchronizedBatchNorm2d(emb_dim, momentum=cfg.TRAIN_BN_MOM)
        self.relu1 = nn.ReLU()
        self.res1 = _res_block(emb_dim,emb_dim)
        self.res2 = _res_block(emb_dim,emb_dim)
#        self.aspp = ASPP(emb_dim,SynchronizedBatchNorm2d)
        self.conv2 = nn.Conv2d(256,emb_dim,kernel_size=3,stride=1,padding=1)
        self.bn2 = SynchronizedBatchNorm2d(emb_dim, momentum=cfg.TRAIN_BN_MOM)
        self.relu2 = nn.ReLU()
        self.conv3 = nn.Conv2d(emb_dim,1,1,1)
Exemplo n.º 5
0
    def __init__(self,in_dim,out_dim=256):
        super(InterFuse,self).__init__()
        self.conv1 = nn.Conv2d(cfg.MODEL_SEMANTIC_EMBEDDING_DIM,256,1,1)
        self.conv2 = nn.Conv2d(256,256,1,1)
        self.conv3 = nn.Conv2d(in_dim,256,1,1)
        self.conv4 = nn.Conv2d(256,out_dim,1,1)
        self.relu = nn.ReLU()
        self.sigmoid = nn.Sigmoid()
        self.bn1 = SynchronizedBatchNorm2d(256, momentum=cfg.TRAIN_BN_MOM)
        self.bn2 = SynchronizedBatchNorm2d(256, momentum=cfg.TRAIN_BN_MOM)

        nn.init.kaiming_normal_(self.conv1.weight,mode='fan_out',nonlinearity='relu')
        nn.init.kaiming_normal_(self.conv2.weight,mode='fan_out',nonlinearity='relu')
        nn.init.kaiming_normal_(self.conv3.weight,mode='fan_out',nonlinearity='relu')
        nn.init.kaiming_normal_(self.conv4.weight,mode='fan_out',nonlinearity='relu')
Exemplo n.º 6
0
 def __init__(self,in_dim=(cfg.MODEL_SEMANTIC_EMBEDDING_DIM+1),out_dim=cfg.MODEL_HEAD_EMBEDDING_DIM,kernel_size=7):
     super(Global_Atten,self).__init__()
     self.conv1 = nn.Conv2d(in_dim,out_dim,kernel_size=kernel_size,stride=1,padding=int((kernel_size-1)/2))
     self.relu1=nn.ReLU(True)
     self.bn1 = SynchronizedBatchNorm2d(out_dim, momentum=cfg.TRAIN_BN_MOM)
     self.conv2 = nn.Conv2d(out_dim,1,kernel_size=1,stride=1)
     nn.init.kaiming_normal_(self.conv1.weight,mode='fan_out',nonlinearity='relu')
     nn.init.kaiming_normal_(self.conv2.weight,mode='fan_out',nonlinearity='relu')
Exemplo n.º 7
0
 def __init__(self, cfg):
     super(deeplabv3plus, self).__init__()
     self.cfg=cfg
     self.backbone = None            
     self.backbone_layers = None
     input_channel = 2048            
     self.aspp = ASPP(dim_in=input_channel, 
                     dim_out=cfg.MODEL_ASPP_OUTDIM, 
                     rate=16//cfg.MODEL_OUTPUT_STRIDE,
                     bn_mom = cfg.TRAIN_BN_MOM)
     self.dropout1 = nn.Dropout(0.5)
     #self.upsample4 = nn.UpsamplingBilinear2d(scale_factor=4)
     #self.upsample_sub = nn.UpsamplingBilinear2d(scale_factor=cfg.MODEL_OUTPUT_STRIDE//4)
     self.upsample4 = nn.functional.interpolate
     self.upsample_sub=nn.functional.interpolate
     indim = 256
     self.shortcut_conv = nn.Sequential(
                     nn.Conv2d(indim, cfg.MODEL_SHORTCUT_DIM, cfg.MODEL_SHORTCUT_KERNEL, 1, padding=cfg.MODEL_SHORTCUT_KERNEL//2,bias=True),
                     SynchronizedBatchNorm2d(cfg.MODEL_SHORTCUT_DIM, momentum=cfg.TRAIN_BN_MOM),
                     nn.ReLU(inplace=True),          
     )               
     self.cat_conv = nn.Sequential(
                     nn.Conv2d(cfg.MODEL_ASPP_OUTDIM+cfg.MODEL_SHORTCUT_DIM, cfg.MODEL_ASPP_OUTDIM, 3, 1, padding=1,bias=True),
                     SynchronizedBatchNorm2d(cfg.MODEL_ASPP_OUTDIM, momentum=cfg.TRAIN_BN_MOM),
                     nn.ReLU(inplace=True),
                     nn.Dropout(0.5),
                     nn.Conv2d(cfg.MODEL_ASPP_OUTDIM, cfg.MODEL_ASPP_OUTDIM, 3, 1, padding=1,bias=True),
                     SynchronizedBatchNorm2d(cfg.MODEL_ASPP_OUTDIM, momentum=cfg.TRAIN_BN_MOM),
                     nn.ReLU(inplace=True),
                     nn.Dropout(0.1),
     )
     self.cls_conv = nn.Conv2d(cfg.MODEL_ASPP_OUTDIM, cfg.MODEL_NUM_CLASSES, 1, 1, padding=0)
     for m in self.modules():
         if isinstance(m, nn.Conv2d):
             nn.init.kaiming_normal_(m.weight, mode='fan_out', nonlinearity='relu')
         elif isinstance(m, SynchronizedBatchNorm2d):
             nn.init.constant_(m.weight, 1)
             nn.init.constant_(m.bias, 0)
     self.backbone = build_backbone(cfg.MODEL_BACKBONE, os=cfg.MODEL_OUTPUT_STRIDE)
     self.backbone_layers = self.backbone.get_layers()
Exemplo n.º 8
0
    def __init__(self, in_fea=[256, 512, 1024], mid_fea=256, out_fea=1):
        super(Edge_Module, self).__init__()
        self.conv1 = nn.Sequential(
            nn.Conv2d(in_fea[0],
                      mid_fea,
                      kernel_size=1,
                      padding=0,
                      dilation=1,
                      bias=False),
            SynchronizedBatchNorm2d(mid_fea, momentum=cfg.TRAIN_BN_MOM))
        self.conv2 = nn.Sequential(
            nn.Conv2d(in_fea[1],
                      mid_fea,
                      kernel_size=1,
                      padding=0,
                      dilation=1,
                      bias=False),
            SynchronizedBatchNorm2d(mid_fea, momentum=cfg.TRAIN_BN_MOM))

        self.conv3 = nn.Sequential(
            nn.Conv2d(in_fea[2],
                      mid_fea,
                      kernel_size=1,
                      padding=0,
                      dilation=1,
                      bias=False),
            SynchronizedBatchNorm2d(mid_fea, momentum=cfg.TRAIN_BN_MOM))
        self.conv4 = nn.Conv2d(mid_fea,
                               out_fea,
                               kernel_size=3,
                               padding=1,
                               dilation=1,
                               bias=True)
        self.conv5 = nn.Conv2d(out_fea * 3,
                               out_fea,
                               kernel_size=1,
                               padding=0,
                               dilation=1,
                               bias=True)
Exemplo n.º 9
0
    def __init__(self, cfg, feature_extracter):
        super(IntVOS, self).__init__()
        self.feature_extracter = feature_extracter  ##embedding extractor
        self.feature_extracter.cls_conv = nn.Sequential()
        self.feature_extracter.upsample4 = nn.Sequential()
        self.semantic_embedding = None
        self.seperate_conv = nn.Conv2d(cfg.MODEL_ASPP_OUTDIM,
                                       cfg.MODEL_ASPP_OUTDIM,
                                       kernel_size=3,
                                       stride=1,
                                       padding=1,
                                       groups=cfg.MODEL_ASPP_OUTDIM)
        self.bn1 = SynchronizedBatchNorm2d(cfg.MODEL_ASPP_OUTDIM,
                                           momentum=cfg.TRAIN_BN_MOM)
        self.relu1 = nn.ReLU(True)
        self.embedding_conv = nn.Conv2d(cfg.MODEL_ASPP_OUTDIM,
                                        cfg.MODEL_SEMANTIC_EMBEDDING_DIM, 1, 1)
        self.relu2 = nn.ReLU(True)
        self.bn2 = SynchronizedBatchNorm2d(cfg.MODEL_SEMANTIC_EMBEDDING_DIM,
                                           momentum=cfg.TRAIN_BN_MOM)
        self.semantic_embedding = nn.Sequential(*[
            self.seperate_conv, self.bn1, self.relu1, self.embedding_conv,
            self.bn2, self.relu2
        ])

        for m in self.semantic_embedding:
            if isinstance(m, nn.Conv2d):
                nn.init.kaiming_normal_(m.weight,
                                        mode='fan_out',
                                        nonlinearity='relu')

        self.dynamic_seghead = DynamicSegHead()  #propagation segm head
        if cfg.MODEL_USEIntSeg:
            self.inter_seghead = IntSegHead(
                in_dim=cfg.MODEL_SEMANTIC_EMBEDDING_DIM + 3)
        else:
            self.inter_seghead = DynamicSegHead(
                in_dim=cfg.MODEL_SEMANTIC_EMBEDDING_DIM +
                2)  #interaction segm head