Skip to content

non_max_suppression结果size为0 #3

@linklist2

Description

@linklist2

请问我使用n系列的pt文件转为weights文件后,进行训练后,训练的过程是正常的,但是在进行val的时候,non_max_suppression后pds的size为0,后面的代码就报错了。

image

但是如果使用您提供的yolov5s.weights训练的话,就不会出现问题。

我转换的代码参考您提供的代码,如下所示:

from pathlib import Path

from models.common import DetectMultiBackend
import numpy as np
import torch
from utils.torch_utils import select_device

weights = 'yolov5s.weights'

pt_weights = 'yolov5s.pt'

device = select_device("cuda:0")
model = DetectMultiBackend(pt_weights, device=device, dnn=False, data='data/coco128.yaml', fp16=False)

# parms "model" is DetectMultiBackend's instance
ddd = model.model.state_dict()
i = 0
if Path(weights).exists():
    f = open(weights, 'rb')
    for k, v in ddd.items():
        if 'weight' in k or 'bias' in k or 'running_mean' in k or 'running_var' in k:
            # t = v.cpu().numpy()
            # if 'weight' in k or 'bias' in k:
            #     print(k, i)
            #     i += 1

            nb = v.element_size() * v.numel()
            data_ = f.read(nb)
            y = np.frombuffer(data_, np.float32).reshape(v.shape)
            y = torch.from_numpy(y).to(v.device)
            v[...] = torch.zeros(v.shape, device=v.device)[...]
            v[...] = y[...]
            print(i, k, v.shape, nb)
            i += 1
            # nb2 = t.nbytes
            # print(k, t.shape, t.dtype)
            # f.write(t.tobytes())
        # v[...] = torch.zeros(v.shape,device=v.device)[...]

    f.close()

else:
    f = open(weights, 'wb')
    for k, v in ddd.items():
        if 'weight' in k or 'bias' in k or 'running_mean' in k or 'running_var' in k:
            t = v.cpu().numpy()
            print(k, t.shape, t.dtype)
            f.write(t.tobytes())
        # v[...] = torch.zeros(v.shape,device=v.device)[...]

    f.close()

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions