基于Pytorch训练Pointnet+Windows10

1、前言

最近实验室购入3D的摄像机,想要应用于图像识别,钢哥让我找一找相应的3D识别项目。

我在github上面找到了pointnet这个项目,但是由于这个项目采用的是Python 2.7, TensorFlow 1.0.1, 我是想找个基于Pytorch框架, Python3.X版本的,所以根据官方提示,我找到了pointnet.pytorch这个版本.

我其实不太懂这个深度学习这一块,之前有过利用YoloV3的经历也是在网上搜索相应的教程后,经过相当时间的挣扎、痛苦,然后才成功运行的,我搜索了pointnet相关的教程,却是没有找到多少在Windows系统下运行的。多是复现github上的项目,在Linux或是 Ubuntu上运行。奈何我本人对这两种系统一点也不了解,所以在window10成功运行pointnet.pytorch版本后,做一个记录.

2、配置环境

Anaconda+Pycharm

Cuda10.2

Cudnn8.1.0

Python3.7

Cuda和Cudnn版本号需要匹配

3、准备工作

3.1、创建虚拟环境

打开Annaconda Promt,创建一个虚拟环境专门应用于Pointnet.Pytorch项目的运行。

conda create -n <虚拟环境的名字> python=<版本号>
conda create -n pointnet python=3.7

基于Pytorch训练Pointnet+Windows10

成功创建

基于Pytorch训练Pointnet+Windows10

输入activate pointnet 激活环境

3.2、下载文件

cd进入E:/lyh文件下

基于Pytorch训练Pointnet+Windows10

输入

git clone https://github.com/fxia22/pointnet.pytorch

将github上的项目下载下来,若是网络不好,也可以先在github上下载完后解压直接放在指定的目录下

基于Pytorch训练Pointnet+Windows10

3.3、下载环境所需要的库

在anaconda prompt 下输入进入pointnet.pytorch的命令

基于Pytorch训练Pointnet+Windows10

输入pip install -e .(包括后面的句号小点)

pip install -e .

基于Pytorch训练Pointnet+Windows10

程序会按照setup.py文件里的安排,把python相应的库下好

基于Pytorch训练Pointnet+Windows10

这里在下载torch的时候会出现问题比如ReadtimeOut的超时问题(这个问题我是挂*解决的)。

下载完以后由于怕torch版本过高,所以我卸载程序自动下载的torch1.9版本,安装了一个torch1.5.0的版本。

可以选择离线下载torch库,在这个网址中查询与cuda、cudnn、python对应的版本,像我的话由于怕pytorch版本过高,GitHub这个项目原本就只是用了torch1.0.1的版本,所以我选择了python3.7,cuda10.2所能配置的最低版本

torch-1.5.0-cp37-cp37m-win_amd64.whl

基于Pytorch训练Pointnet+Windows10

在进入相应路径下,

pip install torch-1.5.0-cp37-cp37m-win_amd64.whl

安装torch库

基于Pytorch训练Pointnet+Windows10

4、数据集

基于Pytorch训练Pointnet+Windows10

github文档中 build.sh下载的是可视化的过程,这个暂时我还不知道怎么处理

download.sh的话是下载数据集,可以直接根据

https://shapenet.cs.stanford.edu/ericyi/shapenetcore_partanno_segmentation_benchmark_v0.zip

进行下载

下载完后解压在pointnet.pytorch文件夹下即可.

基于Pytorch训练Pointnet+Windows10

5、运行过程及出现的问题

用pycharm打开pointnet.pytorch,在终端cd utils 进入utils,输入

python train_classification.py --dataset=E:\lyh\pointnet.pytorch\shapenetcore_partanno_segmentation_benchmark_v0\ --nepoch=5 --dataset_type=shapenet

5.2、问题1

UserWarning: Detected call of `lr_scheduler.step()` before `optimizer.step()`. In PyTorch 1.1.0 and late
r, you should call them in the opposite order: `optimizer.step()` before `lr_scheduler.step()`.  Failure to do this will result in PyTorch skipping the first value of the learning rate schedule.

这是PyTorch1.1.0版本以后会出现的问题,这里需要更改train.classification.py文件里两句话的位置

基于Pytorch训练Pointnet+Windows10

5.3、问题二

 if __name__ == '__main__':
                freeze_support()
                ...

​    The "freeze_support()" line can be omitted if the program
​    is not going to be frozen to produce an executable.

将代码块置于if __name__ == '__main__':之下

基于Pytorch训练Pointnet+Windows10

再次输入对应的命令,即可运行成功!

基于Pytorch训练Pointnet+Windows10

基于Pytorch训练Pointnet+Windows10

6、参考

Detected call of lr_scheduler.step() before optimizer.step()

PyTorch:The "freeze_support()" line can be omitted if the program is not going to be frozen

python进程池multiprocessing.Pool运行错误:The "freeze_support()" line can be omitted if the program is not g

上一篇:Windows10 DNS被劫持 - 解决方案


下一篇:Ubuntu 20.04 grub更换windows10为默认启动项