class_docstr: Descriptor decoder based on the SuperPoint arcihtecture.
  
  Args:
      input_feat_dim: channel size of the input features.
  Returns:
      the semi-dense descriptors with shape (B, 128, H/4, W/4).
class_docstr_tok: ["Descriptor","decoder","based","on","the","SuperPoint","arcihtecture",".","Args",":","input_feat_dim",":","channel","size","of","the","input","features",".","Returns",":","the","semi-dense","descriptors","with","shape","(","B",",","128",",","H\/4",",","W\/4",")","."]
code: def __init__(self, input_feat_dim: int = 128) -> None:
      super().__init__()
      self.relu = nn.ReLU(inplace=True)
      self.convPa = nn.Conv2d(
          input_feat_dim, 256, kernel_size=3, stride=1, padding=1
      )
      self.convPb = nn.Conv2d(
          256, 128, kernel_size=1, stride=1, padding=0
      )
  
imports: from typing import Any, Dict, List, NamedTuple, Optional, Tuple, Type, Union
  import torch
  import torch.nn.functional
  from torch import nn
  from torch.nn.functional import pixel_shuffle, softmax
  from kornia.core import Module, Tensor
label_desc: Use image node_id 1 to create a new SuperpointDescriptor object from inherited base classes: Module with example: obj = SuperpointDescriptor(input_feat_dim)