如何在运行 Ultralytic yolo 模型时修复运行时错误?

问题描述

我想为 YOLO 生成分析,我正在使用 yolo.pyultralytics/yolov5 他们已经预先构建了所有内容来运行分析,从而获得每一层的延迟。

所以我运行以下命令来获取输出

import torch
import torchvision

device = torch.device("cuda:0")

model = torch.hub.load('ultralytics/yolov5','yolov5s',force_reload=True)

img = torch.rand(8 if torch.cuda.is_available() else 1,3,320,320).to(device) 
y = model(img,profile=True)

所以当我运行它时,我得到以下运行时错误和一些输出

time (ms)     GFLOPS     params  module
      1.25       1.44       3520  models.common.Focus
      0.66       1.90      18560  models.common.Conv
      1.72       1.93      18816  models.common.C3
      0.46       1.89      73984  models.common.Conv
      1.95       4.02     156928  models.common.C3
      0.33       1.89     295424  models.common.Conv
      1.31       4.00     625152  models.common.C3
      0.39       1.89    1180672  models.common.Conv
      0.68       1.05     656896  models.common.SPP
      0.69       1.89    1182720  models.common.C3
      0.20       0.21     131584  models.common.Conv
      0.05       0.00          0  torch.nn.modules.upsampling.Upsample
      0.06       0.00          0  models.common.Concat
      0.70       2.32     361984  models.common.C3
      0.17       0.21      33024  models.common.Conv
      0.06       0.00          0  torch.nn.modules.upsampling.Upsample
      0.10       0.00          0  models.common.Concat
      0.80       2.33      90880  models.common.C3
      0.27       0.95     147712  models.common.Conv
      0.03       0.00          0  models.common.Concat
      0.68       1.90     296448  models.common.C3
      0.26       0.94     590336  models.common.Conv
      0.03       0.00          0  models.common.Concat
      0.60       1.89    1182720  models.common.C3
---------------------------------------------------------------------------
RuntimeError                              Traceback (most recent call last)
<ipython-input-7-f21874f58c27> in <module>()
      1 img = torch.rand(8 if torch.cuda.is_available() else 1,320).to(device)
----> 2 y = model(img,profile=True)

10 frames
/usr/local/lib/python3.7/dist-packages/torch/nn/modules/module.py in _call_impl(self,*input,**kwargs)
    887             result = self._slow_forward(*input,**kwargs)
    888         else:
--> 889             result = self.forward(*input,**kwargs)
    890         for hook in itertools.chain(
    891                 _global_forward_hooks.values(),/usr/local/lib/python3.7/dist-packages/torch/autograd/grad_mode.py in decorate_context(*args,**kwargs)
     25         def decorate_context(*args,**kwargs):
     26             with self.__class__():
---> 27                 return func(*args,**kwargs)
     28         return cast(F,decorate_context)
     29 

/root/.cache/torch/hub/ultralytics_yolov5_master/models/common.py in forward(self,imgs,size,augment,profile)
    253         if isinstance(imgs,torch.Tensor):  # torch
    254             with amp.autocast(enabled=p.device.type != 'cpu'):
--> 255                 return self.model(imgs.to(p.device).type_as(p),profile)  # inference
    256 
    257         # Pre-process

/usr/local/lib/python3.7/dist-packages/torch/nn/modules/module.py in _call_impl(self,/root/.cache/torch/hub/ultralytics_yolov5_master/models/yolo.py in forward(self,x,profile)
    122             return torch.cat(y,1),None  # augmented inference,train
    123         else:
--> 124             return self.forward_once(x,profile)  # single-scale inference,train
    125 
    126     def forward_once(self,profile=False):

/root/.cache/torch/hub/ultralytics_yolov5_master/models/yolo.py in forward_once(self,profile)
    134                 t = time_synchronized()
    135                 for _ in range(10):
--> 136                     _ = m(x)
    137                 dt.append((time_synchronized() - t) * 100)
    138                 if m == self.model[0]:

/usr/local/lib/python3.7/dist-packages/torch/nn/modules/module.py in _call_impl(self,x)
     44         self.training |= self.export
     45         for i in range(self.nl):
---> 46             x[i] = self.m[i](x[i])  # conv
     47             bs,_,ny,nx = x[i].shape  # x(bs,255,20,20) to x(bs,85)
     48             x[i] = x[i].view(bs,self.na,self.no,nx).permute(0,1,4,2).contiguous()

/usr/local/lib/python3.7/dist-packages/torch/nn/modules/module.py in _call_impl(self,/usr/local/lib/python3.7/dist-packages/torch/nn/modules/conv.py in forward(self,input)
    397 
    398     def forward(self,input: Tensor) -> Tensor:
--> 399         return self._conv_forward(input,self.weight,self.bias)
    400 
    401 class Conv3d(_ConvNd):

/usr/local/lib/python3.7/dist-packages/torch/nn/modules/conv.py in _conv_forward(self,input,weight,bias)
    394                             _pair(0),self.dilation,self.groups)
    395         return F.conv2d(input,bias,self.stride,--> 396                         self.padding,self.groups)
    397 
    398     def forward(self,input: Tensor) -> Tensor:

RuntimeError: Expected 4-dimensional input for 4-dimensional weight [255,128,1],but got 5-dimensional input of size [8,40,85] instead

你能告诉我如何才能无错误地获得这个输出吗? 要接收的输出

 time (ms)     GFLOPS     params  module
      0.93       1.44       3520  models.common.Focus
      0.52       1.90      18560  models.common.Conv
      1.31       1.93      18816  models.common.C3
      0.38       1.89      73984  models.common.Conv
      1.58       4.02     156928  models.common.C3
      0.37       1.89     295424  models.common.Conv
      1.48       4.00     625152  models.common.C3
      0.51       1.89    1180672  models.common.Conv
      0.79       1.05     656896  models.common.SPP
      0.98       1.89    1182720  models.common.C3
      0.18       0.21     131584  models.common.Conv
      0.03       0.00          0  torch.nn.modules.upsampling.Upsample
      0.05       0.00          0  models.common.Concat
      0.87       2.32     361984  models.common.C3
      0.16       0.21      33024  models.common.Conv
      0.05       0.00          0  torch.nn.modules.upsampling.Upsample
      0.09       0.00          0  models.common.Concat
      0.81       2.33      90880  models.common.C3
      0.35       0.95     147712  models.common.Conv
      0.03       0.00          0  models.common.Concat
      0.80       1.90     296448  models.common.C3
      0.35       0.94     590336  models.common.Conv
      0.03       0.00          0  models.common.Concat
      1.04       1.89    1182720  models.common.C3
      0.69       1.47     229245  Detect
14.4 ms total

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)