AttributeError: 'Upsample' object has no attribute 'recompute_scale_factor'


PS D:\Anaconda3\envs\yolov5-6.0\mytrain\yolov5-6.0> python detect.py
detect: weights=runs\train\exp0404\weights\last.pt, source=datasets\ship571\images\train, imgsz=[640, 640], conf_thres=0.25, iou_thres=0.45, max_det=1000, device=, view_img=False, save_txt=False, save_conf=False, save_crop=False, nosave=False, class
es=None, agnostic_nms=False, augment=False, visualize=False, update=False, project=runs\detect, name=exp, exist_ok=False, line_thickness=3, hide_labels=False, hide_conf=False, half=False, dnn=False
YOLOv5 2021-10-12 torch 1.11.0 CUDA:0 (Quadro P2200, 5120.0MB)

Fusing layers...
Model Summary: 290 layers, 20897385 parameters, 0 gradients
Traceback (most recent call last):
File "detect.py", line 309, in
main(opt)
File "detect.py", line 304, in main
run(**vars(opt))
File "D:\Anaconda3\envs\yolov5-6.0\lib\site-packages\torch\autograd\grad_mode.py", line 27, in decorate_context
return func(*args, **kwargs)
File "detect.py", line 133, in run
model(torch.zeros(1, 3, *imgsz).to(device).type_as(next(model.parameters()))) # run once
File "D:\Anaconda3\envs\yolov5-6.0\lib\site-packages\torch\nn\modules\module.py", line 1110, in _call_impl
return forward_call(*input, **kwargs)
File "D:\Anaconda3\envs\yolov5-6.0\mytrain\yolov5-6.0\models\yolo.py", line 126, in forward
return self._forward_once(x, profile, visualize) # single-scale inference, train
File "D:\Anaconda3\envs\yolov5-6.0\mytrain\yolov5-6.0\models\yolo.py", line 149, in _forward_once
x = m(x) # run
File "D:\Anaconda3\envs\yolov5-6.0\lib\site-packages\torch\nn\modules\module.py", line 1110, in _call_impl
return forward_call(*input, **kwargs)
File "D:\Anaconda3\envs\yolov5-6.0\lib\site-packages\torch\nn\modules\upsampling.py", line 154, in forward
recompute_scale_factor=self.recompute_scale_factor)
File "D:\Anaconda3\envs\yolov5-6.0\lib\site-packages\torch\nn\modules\module.py", line 1186, in __getattr__
type(self).__name__, name))
AttributeError: 'Upsample' object has no attribute 'recompute_scale_factor'

解决方法

打开D:\Anaconda3\envs\yolov5-6.0\lib\site-packages\torch\nn\modules\upsampling.py

修改代码

def forward(self, input: Tensor) -> Tensor:
return F.interpolate(input, self.size, self.scale_factor, self.mode, self.align_corners)

# return F.interpolate(input, self.size, self.scale_factor, self.mode, self.align_corners,
# recompute_scale_factor=self.recompute_scale_factor)