Initialize DepthProEncoder. The framework 1. creates an image pyramid, 2. generates overlapping patches with a sliding window at each pyramid level, 3. creates batched encodings via vision transformer backbones, 4. produces multi-resolution en
(
self,
dims_encoder: Iterable[int],
patch_encoder: nn.Module,
image_encoder: nn.Module,
hook_block_ids: Iterable[int],
decoder_features: int,
)
| 18 | """ |
| 19 | |
| 20 | def __init__( |
| 21 | self, |
| 22 | dims_encoder: Iterable[int], |
| 23 | patch_encoder: nn.Module, |
| 24 | image_encoder: nn.Module, |
| 25 | hook_block_ids: Iterable[int], |
| 26 | decoder_features: int, |
| 27 | ): |
| 28 | """Initialize DepthProEncoder. |
| 29 | |
| 30 | The framework |
| 31 | 1. creates an image pyramid, |
| 32 | 2. generates overlapping patches with a sliding window at each pyramid level, |
| 33 | 3. creates batched encodings via vision transformer backbones, |
| 34 | 4. produces multi-resolution encodings. |
| 35 | |
| 36 | Args: |
| 37 | ---- |
| 38 | img_size: Backbone image resolution. |
| 39 | dims_encoder: Dimensions of the encoder at different layers. |
| 40 | patch_encoder: Backbone used for patches. |
| 41 | image_encoder: Backbone used for global image encoder. |
| 42 | hook_block_ids: Hooks to obtain intermediate features for the patch encoder model. |
| 43 | decoder_features: Number of feature output in the decoder. |
| 44 | |
| 45 | """ |
| 46 | super().__init__() |
| 47 | |
| 48 | self.dims_encoder = list(dims_encoder) |
| 49 | self.patch_encoder = patch_encoder |
| 50 | self.image_encoder = image_encoder |
| 51 | self.hook_block_ids = list(hook_block_ids) |
| 52 | |
| 53 | patch_encoder_embed_dim = patch_encoder.embed_dim |
| 54 | image_encoder_embed_dim = image_encoder.embed_dim |
| 55 | |
| 56 | self.out_size = int( |
| 57 | patch_encoder.patch_embed.img_size[0] // patch_encoder.patch_embed.patch_size[0] |
| 58 | ) |
| 59 | |
| 60 | def _create_project_upsample_block( |
| 61 | dim_in: int, |
| 62 | dim_out: int, |
| 63 | upsample_layers: int, |
| 64 | dim_int: Optional[int] = None, |
| 65 | ) -> nn.Module: |
| 66 | if dim_int is None: |
| 67 | dim_int = dim_out |
| 68 | # Projection. |
| 69 | blocks = [ |
| 70 | nn.Conv2d( |
| 71 | in_channels=dim_in, |
| 72 | out_channels=dim_int, |
| 73 | kernel_size=1, |
| 74 | stride=1, |
| 75 | padding=0, |
| 76 | bias=False, |
| 77 | ) |
nothing calls this directly
no outgoing calls
no test coverage detected