From 7efdf026a341b5d9862ca419f9c5e08a3acc0577 Mon Sep 17 00:00:00 2001 From: Martin Hahner <14181188+MartinHahner@users.noreply.github.com> Date: Sat, 22 May 2021 11:19:01 +0200 Subject: [PATCH] Fix issues with CaDDN (#542) * Download DeepLabV3 if not available yet * Fix dtype issue Fix RuntimeError: expected backend CPU and dtype Float but got backend CPU and dtype Long --- .../image_vfe_modules/f2v/frustum_grid_generator.py | 2 +- .../vfe/image_vfe_modules/ffn/ddn/ddn_template.py | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/pcdet/models/backbones_3d/vfe/image_vfe_modules/f2v/frustum_grid_generator.py b/pcdet/models/backbones_3d/vfe/image_vfe_modules/f2v/frustum_grid_generator.py index 2d74f8056..963b70280 100644 --- a/pcdet/models/backbones_3d/vfe/image_vfe_modules/f2v/frustum_grid_generator.py +++ b/pcdet/models/backbones_3d/vfe/image_vfe_modules/f2v/frustum_grid_generator.py @@ -17,7 +17,7 @@ def __init__(self, grid_size, pc_range, disc_cfg): """ super().__init__() self.dtype = torch.float32 - self.grid_size = torch.as_tensor(grid_size) + self.grid_size = torch.as_tensor(grid_size, dtype=self.dtype) self.pc_range = pc_range self.out_of_bounds_val = -2 self.disc_cfg = disc_cfg diff --git a/pcdet/models/backbones_3d/vfe/image_vfe_modules/ffn/ddn/ddn_template.py b/pcdet/models/backbones_3d/vfe/image_vfe_modules/ffn/ddn/ddn_template.py index a2f6c22e4..fcee05975 100644 --- a/pcdet/models/backbones_3d/vfe/image_vfe_modules/ffn/ddn/ddn_template.py +++ b/pcdet/models/backbones_3d/vfe/image_vfe_modules/ffn/ddn/ddn_template.py @@ -1,4 +1,6 @@ from collections import OrderedDict +from pathlib import Path +from torch import hub import numpy as np import torch @@ -56,6 +58,15 @@ def get_model(self, constructor): # Update weights if self.pretrained_path is not None: model_dict = model.state_dict() + + # Download pretrained model if not available yet + checkpoint_path = Path(self.pretrained_path) + if not checkpoint_path.exists(): + checkpoint = checkpoint_path.name + save_dir = checkpoint_path.parent + save_dir.mkdir(parents=True) + url = f'https://download.pytorch.org/models/{checkpoint}' + hub.load_state_dict_from_url(url, save_dir) # Get pretrained state dict pretrained_dict = torch.load(self.pretrained_path)