YOLOv5 - Concat() 问题。 RuntimeError:张量的大小必须匹配,但维度 1

问题描述 投票:0回答:1

代码:

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])

为什么会这样? 任何提示表示赞赏。

deep-learning pytorch yolov5
1个回答
0
投票

我用过这个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,那对未来来说会很棒。期待评论。

© www.soinside.com 2019 - 2024. All rights reserved.