解决yolov3_object_tracking中loop of ufunc does not support argument 0 of type Tensor which has问题

在使用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())

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值