Commit 7425ad37 authored by Sugon_ldc's avatar Sugon_ldc
Browse files

modify issue AttributeError: Upsample object has no attribute...

modify issue AttributeError: Upsample object has no attribute recompute_scale_factor,torch version>1.10 will get the issue,and pillow version will got some issue
parent 97157175
...@@ -92,22 +92,33 @@ def attempt_load(weights, map_location=None, inplace=True, fuse=True): ...@@ -92,22 +92,33 @@ def attempt_load(weights, map_location=None, inplace=True, fuse=True):
model = Ensemble() model = Ensemble()
for w in weights if isinstance(weights, list) else [weights]: for w in weights if isinstance(weights, list) else [weights]:
ckpt = torch.load(attempt_download(w), map_location=map_location) # load ckpt = torch.load(attempt_download(w), map_location=map_location) # load
if fuse: #if fuse:
model.append(ckpt['ema' if ckpt.get('ema') else 'model'].float().fuse().eval()) # FP32 model # model.append(ckpt['ema' if ckpt.get('ema') else 'model'].float().fuse().eval()) # FP32 model
else: #else:
model.append(ckpt['ema' if ckpt.get('ema') else 'model'].float().eval()) # without layer fuse # model.append(ckpt['ema' if ckpt.get('ema') else 'model'].float().eval()) # without layer fuse
ckpt = (ckpt['ema'] or ckpt['model']).float() # FP32 model
model.append(ckpt.fuse().eval() if fuse else ckpt.eval()) # fused or un-fused model in eval mode
# Compatibility updates # Compatibility updates
for m in model.modules(): for m in model.modules():
if type(m) in [nn.Hardswish, nn.LeakyReLU, nn.ReLU, nn.ReLU6, nn.SiLU, Detect, Model]: #if type(m) in [nn.Hardswish, nn.LeakyReLU, nn.ReLU, nn.ReLU6, nn.SiLU, Detect, Model]:
m.inplace = inplace # pytorch 1.7.0 compatibility # m.inplace = inplace # pytorch 1.7.0 compatibility
if type(m) is Detect: # if type(m) is Detect:
t = type(m)
if t in (nn.Hardswish, nn.LeakyReLU, nn.ReLU, nn.ReLU6, nn.SiLU, Detect, Model):
m.inplace = inplace # torch 1.7.0 compatibility
if t is Detect:
if not isinstance(m.anchor_grid, list): # new Detect Layer compatibility if not isinstance(m.anchor_grid, list): # new Detect Layer compatibility
delattr(m, 'anchor_grid') delattr(m, 'anchor_grid')
setattr(m, 'anchor_grid', [torch.zeros(1)] * m.nl) setattr(m, 'anchor_grid', [torch.zeros(1)] * m.nl)
elif type(m) is Conv: #elif type(m) is Conv:
m._non_persistent_buffers_set = set() # pytorch 1.6.0 compatibility # m._non_persistent_buffers_set = set() # pytorch 1.6.0 compatibility
elif t is nn.Upsample:
m.recompute_scale_factor = None # torch 1.11.0 compatibility
elif t is Conv:
m._non_persistent_buffers_set = set() # torch 1.6.0 compatibility
if len(model) == 1: if len(model) == 1:
return model[-1] # return model return model[-1] # return model
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
matplotlib>=3.2.2 matplotlib>=3.2.2
numpy>=1.18.5 numpy>=1.18.5
opencv-python>=4.1.2 opencv-python>=4.1.2
Pillow>=7.1.2 Pillow==9.5.0
PyYAML>=5.3.1 PyYAML>=5.3.1
requests>=2.23.0 requests>=2.23.0
scipy>=1.4.1 scipy>=1.4.1
...@@ -12,6 +12,7 @@ scipy>=1.4.1 ...@@ -12,6 +12,7 @@ scipy>=1.4.1
#torchvision>=0.8.1 #torchvision>=0.8.1
tqdm>=4.41.0 tqdm>=4.41.0
# Logging ------------------------------------- # Logging -------------------------------------
tensorboard>=2.4.1 tensorboard>=2.4.1
# wandb # wandb
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment