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()
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)
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')
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)
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')
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')
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()
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)
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