PVNet的demo报错解决方案(win10)

PVNet的demo报错解决方案:CUDA error: initialization error when calling cusparseCreate(handle)

主文件:PVNet的demo(win10)

win10下运行PVNet的demo时报错:

RuntimeError: CUDA error: initialization error when calling `cusparseCreate(handle)

报错全文如下:

Traceback (most recent call last):
  File "D:/E20220227/B015_00_PV_Net/tools/demo_feng.py", line 191, in <module>
    demo()
  File "D:/E20220227/B015_00_PV_Net/tools/demo_feng.py", line 177, in demo
    corner_pred = eval_net(seg_pred, vertex_pred).cpu().detach().numpy()[0]
  File "C:\Users\26735\anaconda3\envs\python367\lib\site-packages\torch\nn\modules\module.py", line 1102, in _call_impl
    return forward_call(*input, **kwargs)
  File "C:\Users\26735\anaconda3\envs\python367\lib\site-packages\torch\nn\parallel\data_parallel.py", line 166, in forward
    return self.module(*inputs[0], **kwargs[0])
  File "C:\Users\26735\anaconda3\envs\python367\lib\site-packages\torch\nn\modules\module.py", line 1102, in _call_impl
    return forward_call(*input, **kwargs)
  File "D:/E20220227/B015_00_PV_Net/tools/demo_feng.py", line 57, in forward
    return ransac_voting_layer_v3(mask, vertex_pred, 512, inlier_thresh=0.99)
  File "D:\E20220227\B015_00_PV_Net\lib\ransac_voting_gpu_layer\ransac_voting_gpu.py", line 600, in ransac_voting_layer_v3
    all_win_pts=torch.matmul(b_inv(ATA),torch.unsqueeze(ATb,2)) # [vn,2,1]
  File "D:\E20220227\B015_00_PV_Net\lib\ransac_voting_gpu_layer\ransac_voting_gpu.py", line 516, in b_inv
    b_inv, _ = torch.linalg.solve(eye, b_mat)
RuntimeError: CUDA error: initialization error when calling `cusparseCreate(handle)`

定位到报错位置b_inv, _ = torch.linalg.solve(eye, b_mat)进行debug,发现eye.shape=torch.Size([9, 2, 2]), device=cuda:0,b_mat.shape=torch.Size([9, 2, 2]), device=cuda:0,而报错是由于CUDA,所以先把eye和 b_mat转成cpu,再计算结果,再把结果转换为cuda。代码修改后如下:

b_inv, _ = torch.linalg.solve(eye.cpu(), b_mat.cpu()).cuda()

运行继续报错:

ValueError: too many values to unpack (expected 2)

这是因为等号右侧结果只有1个,而等号左侧输出有2个,因此,删除不需要的输出"_",代码修改后如下:

b_inv = torch.linalg.solve(eye.cpu(), b_mat.cpu()).cuda()

再次运行,通过!!输出了和作者一样的demo结果,开心()!!
PVNet demo 运行结果

待填坑:一个没发现的问题

绿色框表示猫的边界框真值,蓝色框表示预测值,但是图里只有绿色框,没有蓝色框,待我查一查这是为什么。。。。

猜你喜欢

转载自blog.csdn.net/qq_36674060/article/details/129663313