代码:
import torch
yolo_ = torch.hub.load('ultralytics/yolov5', 'yolov5x', pretrained=True, force_reload=True)
yolo_(torch.rand((2,3,1280,720)))
退货:
RuntimeError: Sizes of tensors must match except in dimension 1. Expected size 46 but got size 45 for tensor number 1 in the list.
来自:
~/.cache/torch/hub/ultralytics_yolov5_master/models/common.py in forward(self, x)
310
311 def forward(self, x):
--> 312 return torch.cat(x, self.d)
这个问题是在尝试将 yolo 集成到更大的分类器中时提出的。我将其缩小到上面的代码。据我所知,这个错误在模型中。我尝试了不同的输入形状,但得到了相同的结果。我也试过yolo5s,同样的交易。这是错误来源的yolo github代码。 https://github.com/ultralytics/yolov5/blob/master/models/common.py
连接是在 2 个张量的列表
x
上完成的:
x[0].shape=
torch.Size([2, 640, 80, 46])
x[1].shape=
torch.Size([2, 640, 80, 45])
为什么会这样? 任何提示表示赞赏。
我用过这个ref。重塑输入并传递一个 numpy 数组而不是张量。
yolo_(torch.rand((1280,720,3,2)).numpy())
结果:
YOLOv5 <class 'models.common.Detections'> instance
image 1/1: 1280x720 (no detections)
Speed: 7.1ms pre-process, 31.9ms inference, 1.0ms NMS per image at shape (1, 3, 640, 384)
如果有人知道为什么我们需要一个 numpy,那对未来来说会很棒。期待评论。