在使用keras-yolov3 + Kalman-Filter 进行人体多目标追踪(含代码)做实验时遇到问题
TypeError: loop of ufunc does not support argument 0 of type Tensor which has no callable arctan method
报错行
self.u = np.round(np.dot(self.F, self.u))
#或者
self.u = np.round(self.u + np.dot(K, (self.b - np.dot(self.A, self.u))))
断点可以看到传入的参数self.b为Tensor格式,其他都是ndarray。
这是由于我是用了tensorflow下的yolov3,使用了cuda。得到的box等参数为Tensor格式。
因此在计算中心点的函数
calc_center(bboxes, cls_ids, cls_confs, score_limit=0.5)
传递参数时,转换为Array即可:
转换方式为:
直接从 cuda 中取数据,如
var_tensor.cuda().data.cpu().numpy()
在参数转换为列表前转换:
bboxes.append([xyxy[0].cuda().data.cpu().numpy(),
xyxy[1].cuda().data.cpu().numpy(),
xyxy[2].cuda().data.cpu().numpy(),
xyxy[3].cuda().data.cpu().numpy()])
cls_confs.append(conf.cuda().data.cpu().numpy())
cls_ids.append(cls.cuda().data.cpu().numpy())
北风催呀催
原创文章 6获赞 3访问量 3689
关注
私信
展开阅读全文
作者:北风催呀催