MCPcopy Create free account
hub / github.com/WeChatCV/WeVisionOne / MaskDINODecoder

Class MaskDINODecoder

WeVisionOne/transformer_decoder/maskdino_decoder.py:45–261  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

43
44@TRANSFORMER_DECODER_REGISTRY.register()
45class MaskDINODecoder(nn.Module):
46 @configurable
47 def __init__(
48 self,
49 in_channels,
50 mask_classification=True,
51 *,
52 num_classes: int,
53 hidden_dim: int,
54 num_queries: int,
55 nheads: int,
56 dim_feedforward: int,
57 dec_layers: int,
58 mask_dim: int,
59 enforce_input_project: bool,
60 learn_tgt: bool,
61 total_num_feature_levels: int = 4,
62 dropout: float = 0.0,
63 activation: str = 'relu',
64 nhead: int = 8,
65 dec_n_points: int = 4,
66 return_intermediate_dec: bool = True,
67 query_dim: int = 4,
68 dec_layer_share: bool = False,
69 ):
70 super().__init__()
71 self.num_feature_levels = total_num_feature_levels
72 self.num_layers = dec_layers
73 self.num_queries = num_queries
74 self.learn_tgt = learn_tgt
75 self.num_classes = num_classes
76
77 self.enc_output = nn.Linear(hidden_dim, hidden_dim)
78 self.enc_output_norm = nn.LayerNorm(hidden_dim)
79
80 self.decoder_norm = decoder_norm = nn.LayerNorm(hidden_dim)
81 decoder_layer = DeformableTransformerDecoderLayer(hidden_dim, dim_feedforward,
82 dropout, activation,
83 self.num_feature_levels, nhead, dec_n_points)
84
85 self.decoder = TransformerDecoder(decoder_layer, self.num_layers, decoder_norm,
86 return_intermediate=return_intermediate_dec,
87 d_model=hidden_dim, query_dim=query_dim,
88 num_feature_levels=self.num_feature_levels,
89 dec_layer_share=dec_layer_share,
90 )
91 self.hidden_dim = hidden_dim
92 self._bbox_embed = _bbox_embed = MLP(hidden_dim, hidden_dim, 4, 3)
93 box_embed_layerlist = [_bbox_embed for i in range(self.num_layers)] # share box prediction each layer
94 self.bbox_embed = nn.ModuleList(box_embed_layerlist)
95 self.decoder.bbox_embed = self.bbox_embed
96
97 self.mask_embed = MLP(hidden_dim, hidden_dim, mask_dim, 3)
98
99 if learn_tgt:
100 self.query_feat = nn.Embedding(num_queries, hidden_dim)
101
102 self.class_embed = nn.Linear(hidden_dim, num_classes)

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected