内存泄漏的问题
收藏回复举报
内存泄漏的问题
发表于2026-05-14 21:56:35
0 查看
def model_pre(self):
    import torch
    import torch_npu
    from mindx.sdk.base import Tensor, Model

    self.model = Model(modelPath=self.yolo_weights, deviceId=self.device)
    img_info = np.array([[480, 640, 480, 640]], dtype=np.float32)


    while True:
        # 接收图片
        data = self.ProImgPip.get()
        AllIm = data[0]
        ImgLenList = data[1]
        split_list = [AllIm[i:i + 1] for i in range(0, len(AllIm), 1)]
        pred = []
        for step_img in split_list:
            step_img = Tensor(step_img)
            result = self.model.infer([step_img, img_info])
            if len(result) == 0:
                pred.append(None)
                continue
            result[0].to_host()
            result[1].to_host()
            box_out = np.array(result[0])
            box_out_num = np.array(result[1])
            for idx in range(len(box_out)):
                num_det = int(box_out_num[idx][0])
                boxout = box_out[idx][:num_det * 6].reshape(6, -1).transpose().astype(np.float16)  # 6xN -> Nx6
                pred.append(boxout)
        self.PredPip.put([pred, ImgLenList])


在执行上述代码时,发现对应进程占用的内存(不是npu内存)一直在缓慢增长,通过排查发现是 step_img = Tensor(step_img)这一行引起的,起初修改代码,不再每一帧都创建tensor,改用以下方式
input_buf = np.empty((1, 480, 640, 3),dtype=np.uint8)
input_tensor = Tensor(input_buf)

while True:
    data = self.ProImgPip.get()
    AllIm = data[0]
    ImgLenList = data[1]

    pred = []
    for i in range(len(AllIm)):
        img = AllIm[i]
        np.copyto(input_buf[0], img)
        result = self.model.infer([input_tensor,img_info])

使用这种昂方法之后,内存是不增长了,但是送入模型推理的图片不再变化,一直是同一张,推理结果也一直不变,这是怎么回事?有什么的解决办法吗,是只有我自己有这个问题吗?转换的YOLOv5模型添加了nms

我要发帖子