Ejemplo n.º 1
0
 def _make_deblock(self, num_out_filters, idx):
     print("CUSTOM MAKE DEBLOCK")
     stride = self._upsample_strides[idx - self._upsample_start_idx]
     if self._use_norm:
         if self._use_groupnorm:
             SparseBatchNorm2d = change_default_args(
                 num_groups=self._num_groups, eps=1e-3)(GroupNorm)
             DenseBatchNorm2d = change_default_args(
                 num_groups=self._num_groups, eps=1e-3)(GroupNorm)
         else:
             SparseBatchNorm2d = change_default_args(
             eps=1e-3, momentum=0.01)(ME.MinkowskiBatchNorm)
             DenseBatchNorm2d = change_default_args(
                 eps=1e-3, momentum=0.01)(nn.BatchNorm2d)
         SparseConvTranspose2d = change_default_args(bias=False, dimension=2)(
             ME.MinkowskiConvolutionTranspose)
         DenseConvTranspose2d = change_default_args(bias=False)(
             nn.ConvTranspose2d)
     else:
         SparseBatchNorm2d = Empty
         DenseBatchNorm2d = Empty
         SparseConvTranspose2d = change_default_args(bias=True, dimension=2)(
             ME.MinkowskiConvolutionTranspose)
         DenseConvTranspose2d = change_default_args(bias=True)(
             nn.ConvTranspose2d)
     ReLU = ME.MinkowskiReLU()
     stride = np.round(stride).astype(np.int64)
     if (idx <= LAST_SPARSE_IDX):
         deblock = Sequential(
             SparseConvTranspose2d(
                 num_out_filters,
                 self._num_upsample_filters[idx - self._upsample_start_idx],
                 stride,
                 stride=stride),
             SparseBatchNorm2d(
                 self._num_upsample_filters[idx -
                                         self._upsample_start_idx]),
             ReLU,
             ME.ToDense()
         )
     else:
         stride = np.round(stride).astype(np.int64)
         deblock = Sequential(
             DenseConvTranspose2d(
                 num_out_filters,
                 self._num_upsample_filters[idx - self._upsample_start_idx],
                 stride,
                 stride=stride),
             DenseBatchNorm2d(
                 self._num_upsample_filters[idx -
                                         self._upsample_start_idx]),
             ReLU,
         )
     return deblock