PointNet训练与测试github开源代码(PointNet实现第5步骤pytorch版)

PointNet第5步——PointNet训练与测试github开源代码

在运行github上的代码时,经常版本不匹配会出现大量的不同,或者报错,这篇主要记录我解决相关报错的方法。

本次测试的是github上的yanx27Pointnet_Pointnet2_pytorch
源码资源【点击此处】在此,感激git主的贡献。

第一步:下载代码

本次程序不太适合用自己笔记本的cpu还跑,还是比较适合用服务器。
下载代码链接如上源码资源
在这里插入图片描述

第2步:下载保存数据集

改源码数据集,源码作者已经给出1.59GB
数据集链接【点击此处下载

下载建议通过服务器来实现,服务器如何下载,命令行直接输入下面:

wget https://shapenet.cs.stanford.edu/media/modelnet40_normal_resampled.zip

将下载后的数据集解压保存在代码文件目录下data/modelnet40_normal_resampled/
解压保存(服务器端口操纵)如下:

unzip -d 源代码路径+/data modelnet40_normal_resampled.zip

在这里插入图片描述

其他后台操作可参考我的【这篇博客

第3步:实现与调错

cd 到源码保存的文件路径下,然后
在这里插入图片描述

报错1:no model ‘ModelNetDataLoader’

代码路径的问题
报错点在train_cls.py第5行
from data_utils.ModelNetDataLoader import ModelNetDataLoader
在这里插入图片描述
简单粗暴法:
直接将在data_utils中ModelNetDataLoader.py复制到train_cls.py同目录下。
然后将from data_utils.ModelNetDataLoader import ModelNetDataLoader 改为from ModelNetDataLoader import ModelNetDataLoader

在这里插入图片描述
其他方法:1.添加路径,这个你可以百度一下,sys.path,这里我只介绍最简单的方法。
2.转变为模块,这你也可以在CSDN中查一下,这里忘记截图了,也不打算介绍了。

报错2:no model pathlib

解决:
pip install pathlib

报错3:makedir(exist_ok=True)

原来是版本的不同,python3.5以下版本跟pytorch3.5以上不同,pytorch3.5以下版本没有exist_ok。
解决方法:
pip install pathlib2
train_cls.py代码中的pathlib改为pathlib2

在这里插入图片描述
如果上述方法不可以,可以参考【这里

报错4:SyntaxError: Non-ASCII character ‘\xef’ in file pointnet_util.py

原因:Python的默认编码文件是用的ASCII码,你将文件存成了UTF-8也没用
解决方法:
1.简单粗暴法:
pointnet_util.py中的所有注释(“”" “”")删除。
2. 方法2:
在文件开头加入 # -- coding: UTF-8 -- 或者 #coding=utf-8 就行了

# -*- coding: utf-8 -*-
#!/usr/bin/env python

报错5:cuda out of memory

显存不足
解决方法:
1.加显存(够壕🐶)
2.将batch_size改小,在这里的话我改成8。
在train_cls.py中将默认值修改为8:
在这里插入图片描述
仍然·解决?——》计算一下网络的计算量,再查看一下你自己的GPU容量,看一下是否超过?如果没有,可能是其他设置原因。

报错6:RuntimeError: cuDNN error: CUDNN_STATUS_NOT_SUPPORTED. This error may appear if you passed in a non-contiguous input.

原因:版本不匹配
解决方法:
在train_cla.py 前面加上:

torch.backends.cudnn.enabled = False

在这里插入图片描述

报错7:

ValueError: Expected more than 1 value per channel when training, got input size torch.Size......

问题分析: 模型中用了batchnomolization,训练中用batch训练的时候,应该是有单数,比如dataset的总样本数为17,你的batch_size为8,就会报这样的错误。输入批次只有一个数据点,而由于BatchNorm操作需要多于一个数据计算平均值,因此造成该错误。

解决方法

从dataset中删掉一个sample,在获取数据集时,将DataLoader中drop_last设置为True,把不够一个批次的数据丢弃。

如果这操作不可以,请参考【这篇博客

至此,报错结束,可以运行,上面只记述自己记得的一些报错。

在这里插入图片描述


上面只介绍了PointNet的训练于测试,如果需要了解更多的3D检测可以直接看PointNet作者的介绍:

3D检测发展与未来-PointNet作者

最重要的还可以加一下讲解视频里面的群,群里面有3D检测大佬,有些其他问题可以在群里咨询。上面只是我遇到的一些问题,如果其他没有遇到问题可以先问一下别人是否有相关的解决方案喽。

  • 12
    点赞
  • 99
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 26
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 26
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xiaobai_Ry

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值