**参考文章:**https://blog.csdn.net/weixin_44603934/article/details/123589948?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522164844688816782089349638%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=164844688816782089349638&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allfirst_rank_ecpm_v1~rank_v31_ecpm-29-123589948.142v5pc_search_result_control_group,143v6control&utm_term=pointnet%2B%2B%E5%88%86%E7%B1%BB&spm=1018.2226.3001.4187
下载代码,运行案例数据集,没有报错。开始训练自己的数据集。
按照参考文章,进行数据标注。链接:https://blog.csdn.net/weixin_44603934/article/details/123591370?spm=1001.2014.3001.5501
但发现Cloudcompare 导出txt文件时,有的label在第四列,有的在第五列;因此在用作者所给的脚本全部去除第四列数据是有问题的。
由于标注的数据量较少,在进行一个个检查,分为删除第四列、第五列数据后再删除该列。
一开始,我的数据集是 num_class=1,num_part =2,但是运行之后,就会各种报错。
报错1:expected input[16, 135, 2048] to have 130 channels, but got 135 channels instead
修改in_channel = 135后,
报错:
json.decoder.JSONDecodeError: Extra data: line 11 column 1 (char 609);
raise JSONDecodeError("Expecting value", s, err.value) from None json.decoder.JSONDecodeError: E
block: [0,0,0], thread: [0,0,0] Assertion `t >= 0 && t < n_classes` failed.
实在是崩溃。
还是先按照博主那样, num_class=2,num_part =4
重新修改了数据集,再运行。
报错:
cuDNN error: CUDNN_STATUS_INTERNAL_ERROR
百度回答:https://blog.csdn.net/liaoningxinmin/article/details/119139840
回答指向:第一种情况是cuda和pytorch版本不匹配(源代码能成功运行,排除这种情况);第二种情况模型预测值与真实标签和真实标签不一致。
果然,seg_classes = {‘Circle’: [0, 1], ‘Rectangular’: [2, 3]}
而我在标注的时候,rectangular分类的是[3,4]
修改之后,成功运行!
以下是博主提供的打印的部分代码,链接:https://blog.csdn.net/weixin_44603934/article/details/123589948?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522164844688816782089349638%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=164844688816782089349638&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allfirst_rank_ecpm_v1~rank_v31_ecpm-29-123589948.142v5pc_search_result_control_group,143v6control&utm_term=pointnet%2B%2B%E5%88%86%E7%B1%BB&spm=1018.2226.3001.4187
for i in range(cur_batch_size):
aaa = np.argwhere(cur_pred_val[i] == 0)
for j in aaa:
# print(points1[i,j])
res1 = open(r'F:\pointnet_pointnet2_pytorch-master\print\05123456_0_' + str(i) + '.txt', 'a')
res1.write('\n' + str(points[i, j]).strip('[]'))
res1.close()
xxxxxx = xxxxxx + 1
bbb = np.argwhere(cur_pred_val[i] == 1)
for j in bbb:
# print(points1[i, j])
res2 = open(r'F:\pointnet_pointnet2_pytorch-master\print\05123456_1_' + str(i) + '.txt', 'a')
res2.write('\n' + str(points[i, j]).strip('[]'))
res2.close()
xxxxxx = xxxxxx + 1
ccc = np.argwhere(cur_pred_val[i] == 2)
for j in ccc:
# print(points1[i, j])
res3 = open(r'F:\pointnet_pointnet2_pytorch-master\print\05654321_2_' + str(i) + '.txt', 'a')
res3.write('\n' + str(points[i, j]).strip('[]'))
res3.close()
xxxxxx = xxxxxx + 1
ddd = np.argwhere(cur_pred_val[i] == 3)
for j in ddd:
# print(points1[i, j])
res4 = open(r'F:\pointnet_pointnet2_pytorch-master\print\05654321_3_' + str(i) + '.txt', 'a')
res4.write('\n' + str(points[i, j]).strip('[]'))
res4.close()
xxxxxx = xxxxxx + 1
不懂怎么操作,添加到 for i in range(cur_batch_size):后;
报错
File "test_partseg.py", line 143, in main
xxxxxx = xxxxxx + 1
UnboundLocalError: local variable 'xxxxxx' referenced before assignment
在前面添加定义xxxxxx =0,继续跑,出错了:
File "test_partseg.py", line 142, in main
res3.write('\n' + str(points[i, j]).strip('[]'))
RuntimeError: CUDA error: device-side assert triggered
打印结果

哎,不知道怎么继续