• Pointnet++训练记录——Partseg


    **参考文章:**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.
    
    • 1
    • 2
    • 3

    实在是崩溃。

    还是先按照博主那样, num_class=2,num_part =4
    重新修改了数据集,再运行。
    报错:

    cuDNN error: CUDNN_STATUS_INTERNAL_ERROR
    
    • 1

    百度回答: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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36

    不懂怎么操作,添加到 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
    
    • 1
    • 2
    • 3

    在前面添加定义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
    
    • 1
    • 2
    • 3

    打印结果
    在这里插入图片描述

    哎,不知道怎么继续

  • 相关阅读:
    2022年全国最新消防设施操作员模拟真题题库及答案
    修复bug的成本
    LeetCode-2760. 最长奇偶子数组-滑动窗口暴力
    常见的软件测试面试题,千万别答错了
    限时开源,来自大佬汇总的Kafka限量笔记,绝对不会后悔!
    SSM之spring注解式缓存redis->redis整合,redis的注解式开发及应用场景,redis的击穿穿透雪崩
    Linux面试题2:网络IO模型 & IO多路复用
    虚拟机桥接模式连接失败解决方案
    Python学习:json对象与string相互转换教程
    项目管理如何有效进行?看这篇就够了
  • 原文地址:https://blog.csdn.net/Amelie_11/article/details/125633322