I’m trying to use a torchvision.models model in my image segmentation project but can’t seem to get it working. Specifically I’m trying to use the deeplabv3_resnet101 model in my code since deeplabv3 is a segmentation specific model. I’ve gotten it working using the included resnet34 model within fastai:
learn = unet_learner(data, models.resnet34, metrics=accuracy)
but if I try to switch out resnet34 for deeplabv3_resnet101 I run into an error:
import torchvision.models as models dlv3 = models.segmentation.deeplabv3_resnet101(pretrained=False, progress=True) learn = unet_learner(data, dlv3, metrics=accuracy)
AttributeError Traceback (most recent call last) <ipython-input-22-bad08e2542b6> in <module> ----> 1 learn = unet_learner(data, dlv3, metrics=accuracy) 2 lr_find(learn) 3 learn.recorder.plot() 4 lr=1e-2 5 learn.fit_one_cycle(1, slice(lr)) ~/.local/lib/python3.7/site-packages/fastai/vision/learner.py in unet_learner(data, arch, pretrained, blur_final, norm_type, split_on, blur, self_attention, y_range, last_cross, bottle, cut, **learn_kwargs) 113 "Build Unet learner from `data` and `arch`." 114 meta = cnn_config(arch) --> 115 body = create_body(arch, pretrained, cut) 116 try: size = data.train_ds.size 117 except: size = next(iter(data.train_dl)).shape[-2:] ~/.local/lib/python3.7/site-packages/fastai/vision/learner.py in create_body(arch, pretrained, cut) 54 def create_body(arch:Callable, pretrained:bool=True, cut:Optional[Union[int, Callable]]=None): 55 "Cut off the body of a typically pretrained `model` at `cut` (int) or cut the model as specified by `cut(model)` (function)." ---> 56 model = arch(pretrained) 57 cut = ifnone(cut, cnn_config(arch)['cut']) 58 if cut is None: ~/.local/lib/python3.7/site-packages/torch/nn/modules/module.py in __call__(self, *input, **kwargs) 539 result = self._slow_forward(*input, **kwargs) 540 else: --> 541 result = self.forward(*input, **kwargs) 542 for hook in self._forward_hooks.values(): 543 hook_result = hook(self, input, result) ~/.local/lib/python3.7/site-packages/torchvision/models/segmentation/_utils.py in forward(self, x) 14 15 def forward(self, x): ---> 16 input_shape = x.shape[-2:] 17 # contract: features is a dict of tensors 18 features = self.backbone(x) AttributeError: 'bool' object has no attribute 'shape'
I’m pretty new to pytorch and fastai so it might be something pretty simple, but any guidance would be helpful to solve this issue.