文档章节

Spherical CNNs代码配置过程

o
 osc_mervd488
发布于 2018/04/25 20:06
字数 1435
阅读 18
收藏 0

精选30+云产品,助力企业轻松上云!>>>

ICLR18 best paper: Spherical CNNs

论文链接:https://arxiv.org/abs/1801.10130

GITHUB地址:https://github.com/jonas-koehler/s2cnn

中文讲解地址:

 

简介:

In this paper we introduce the building blocks for constructing spherical CNNs. We propose a definition for the spherical cross-correlation that is both expressive and rotation-equivariant. The spherical correlation satisfies a generalized Fourier theorem, which allows us to compute it efficiently using a generalized (non-commutative) Fast Fourier Transform (FFT) algorithm. We demonstrate the computational efficiency, numerical accuracy, and effectiveness of spherical CNNs applied to 3D model recognition and atomization energy regression.

 

下面是详细的代码配置过程:

 

1. 运行环境配置

1.1    安装Anaconda

下载地址:https://www.anaconda.com/download/

 

安装参考:致Python初学者:Anaconda入门使用指南

注意如果你想随时使用conda,就要将anaconda添加到环境变量中(其实在安装的时候会问你是否加入环境变量,选择yes后,还是可能会没有被添加),即在/home/yourname目录下,输入(如果你在使用bash就输入下面的命令,否则改成相应的如.zshrc):

vim .bashrc

然后在文件末尾添加上:

export PATH=/home/yourname/anaconda3/bin:$PATH

再输入以下命令使环境变量立刻生效:

source .bashrc

 

如果你不想更改系统的python环境变量,就不要把conda加入到系统的环境变量里,

而是每次都在虚拟环境里使用conda

 

安装虚拟环境,并切换至虚拟环境,参考:https://segmentfault.com/a/1190000005828284

比如这里使用了:

# 创建虚拟环境
~/anaconda3/bin/conda create -n py3 python=3.6

# 激活虚拟环境
source ~/anaconda3/bin/activate py3

 

1.1.1    为了下载速度更快,更换conda下载源为清华大学镜像

 参考:https://blog.csdn.net/huludan/article/details/52711550

运行以下两行命令即可:

conda config --add channels 'https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/'
conda config --set show_channel_urls yes

 

 

1.2    安装Pytorch

地址:http://pytorch.org

请选择适合自己的安装方法,这里我们选择了运行以下命令:

conda install pytorch torchvision cuda91 -c pytorch

 

1.3    安装CUPY

地址:https://github.com/cupy/cupy

安装方法:

conda install cupy
不要使用!!!!这个可能就是导致一直出BUG的元凶!!!!!
pip install cupy --user

 

1.4    安装lie_learn

地址:https://github.com/AMLab-Amsterdam/lie_learn.git

输入以下命令:

git clone https://github.com/AMLab-Amsterdam/lie_learn.git
python setup.py install

 中间需要从Google Drive获取J_dense_0-278.npy(下载链接),嗯……自己想办法吧

或者手动下载下来,然后将其放在这个路径:(会有路径提示,认真看)

~/anaconda3/lib/python3.6/site-packages/lie_learn/representations/SO3/pinchon_hoggan

  

1.5    安装pynvrtc

输入命令:

pip install pynvrtc --user

 

2. Spherical CNNs

2.1    安装Spherical CNNs

执行以下命令:

git clone https://github.com/jonas-koehler/s2cnn
cd s2cnn
vim setup.py [怎么修改请看下面,需要删除一个'r']
python setup.py install

 在setup.py中有一行是读取README.md文件,但是报错说编码格式错误,

请参考:https://github.com/jonas-koehler/s2cnn/issues/3

adding , encoding='utf-8' instead of 'r', encoding='utf8' in open() function in setup.py file

这个如果不解决,之后会出现报错:module 's2cnn.ops.gpu.lib_cufft' has no attribute 'destroy'

作者已经把源代码改了,无需关注此问题

 

2.2    运行equivariance_error 的例子来测试是否真正安装成功

运行命令:

python main.py

如果出现返回以下结果,则证明安装成功:

main.py:38: UserWarning: volatile was removed and now has no effect. Use with torch.no_grad(): instead.
x = torch.autograd.Variable(torch.randn(1, 12, 128, 128), volatile=True).cuda() # [batch, feature, beta, alpha]
relative error = 0.022134914994239807

2.2.1    如果出现module 's2cnn.ops.gpu.lib_cufft' has no attribute 'destroy'

参见我的提问:https://github.com/jonas-koehler/s2cnn/issues/5

我尝试在不同的3个服务器上安装了7、8次,最终有一次安装成功了,没有报出这个错误。但是和之前的安装方案并没有什么区别,所以这里也很迷茫。

有一位网友说在s2cnn/setup.py中,修改为

long_description=open(os.path.join(os.path.dirname(__file__), "README.md"), 'r', encoding='utf8').read()

而目前(20180502)作者将这里修改为了

long_description=open(os.path.join(os.path.dirname(__file__), "README.md"), encoding='utf8').read()

 

实测网友给出的方案后,会出现新的BUG,详见https://github.com/jonas-koehler/s2cnn/issues/3

所以,目前只能多试试了

 

下面给出作者的安装流程:https://github.com/jonas-koehler/s2cnn/issues/5

I created a new anaconda environment and I installed everything.
I didn't manage to install cupy with cuda9 so I did all with cuda8.

Create new env:
conda create --name s2cnn_test python=3.6
conda activate s2cnn_test
Compile s2cnn:
conda install pytorch torchvision -c pytorch (version0.4.0-py36_cuda8.0.61_cudnn7.1.2_1)
pip install cupy-cuda80 (version cupy-cuda80-4.0.0)
pip install pynvrtc
python setup.py install
Install lie_learn:
conda install -c anaconda cython
conda install -c anaconda requests
git clone https://github.com/AMLab-Amsterdam/lie_learn.git
python setup.py install
Run the equivariance_error example
conda install -c anaconda scipy
python main.py

 

2.3    运行example之shrec17

例子地址:https://github.com/jonas-koehler/s2cnn/tree/master/examples/shrec17

2.3.1    安装trimesh和pyembree

仓库地址:https://github.com/mikedh/trimesh

# install modules for spatial indexing and  polygon manipulation
# these generally install cleanly on Linux, Windows, and OSX
conda install -c conda-forge rtree shapely

# install pyembree for fast ray queries
# Linux and OSX only
conda install -c conda-forge pyembree

# install Trimesh and soft dependencies that are easy to install # these generally install cleanly on Linux, Windows, and OSX pip install trimesh[easy]

 

2.3.2    训练网络

python train.py --model_path model.py --log_dir my_run --dataset train --batch_size 32 --augmentation 4

这行命令执行过程中会下载一个很大很大的数据集,数据集的主页:https://shapenet.cs.stanford.edu/shrec17/

 

2.3.3    验证训练后的网络

在运行之前,先安装nodejs才行,

这里使用了以下命令来进行安装

conda install nodejs

然后执行验证程序

python test.py --log_dir my_run --dataset val --batch_size 32 --augmentation 4
cat my_run/summary.csv | grep micro

 

2.3.4    报错处理

如果出现这个错误:No such file or directory: 'nodejs': 'nodejs'

解决方案:通过conda,在虚拟环境中安装的包,都在虚拟环境下能够找到,比如这里,我的包的路径在:

~/anaconda3/envs/s2cnn_test/bin

在bin目录下能够找到一个文件叫做node,所以,执行以下命令:

cd ~/anaconda3/envs/s2cnn_test/bin
cp -r node nodejs

就可以解决这个报错了

 

如果出现找不到scipy:

不要使用 conda install scipy,

这行命令会把pytorch降级到0.1.0版本。

应该使用如下命令:

conda install -c anaconda scipy

 

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。
学界丨先睹为快:神经网络顶会ICLR 2018论文接受结果速览

今天早晨,ICLR 2018的论文接受结果揭晓,我们就带大家来大致了解一下今年ICLR 2018的论文接受概况。 ICLR全称International Conference of Learning Representation,是由Lecun,Hinton和B...

Mr_zebra
2018/01/31
23
0
先睹为快:神经网络顶会ICLR 2018论文接受结果速览

大数据文摘作品 专栏作者|不看镜头的ZARD 今天早晨,ICLR 2018的论文接受结果揭晓,我们就带大家来大致了解一下今年ICLR 2018的论文接受概况。 ICLR全称International Conference of Learn...

数据汪
2018/01/30
0
0
三维卷积:全景图像Spherical CNNs(Code)

卷积神经网络(CNN)可以很好的处理二维平面图像的问题。然而,对球面图像进行处理需求日益增加。例如,对无人机、机器人、自动驾驶汽车、分子回归问题、全球天气和气候模型的全方位视觉处理...

osc_sq3qw4di
2018/06/04
2
0
phd文献阅读日志-博一下学期

博一下学期: 1.week1,2018.2.26 2006-Extreme learning machine: theory and applications 期刊来源:Huang G B, Zhu Q Y, Siew C K. Extreme learning machine: theory and applications[J......

osc_ve0sxjnb
2018/06/11
3
0
Zonal harmonic 拟合 Spherical harmonic

LDPRT实现过程中的核心内容就是用一些列的Zonal harmonic 来拟合已知的Spherical harmonic,拟合过程用到了LBFGS来优化最小能量。 由于最近比较忙,暂时在这里占位,本文会讲解Zonal harmoni...

iaccepted
2015/11/09
0
0

没有更多内容

加载失败,请刷新页面

加载更多

setShadowLayer阴影与SetMaskFilter发光效果

一、setShadowLayer构造函数 public void setShadowLayer(float radius, float dx, float dy, int color) radius:模糊半径,radius越大越模糊,越小越清晰,但是如果radius设置为0,则阴...

IamOkay
5分钟前
0
0
做儿媳的,千万不要把婆婆当亲妈看

我和老公结婚有三四个年头了,还生育了两个调皮可爱的孩子。在别人眼里,我就像掉进了福窝里一样。然而我有时候在老公面前耍小性子,撒娇卖萌什么样的,婆婆却指责我不守妇道。 结婚起初婆家...

创业hzcya
14分钟前
0
0
多线程之线程部分

① 进程与线程 程序、进程、线程、协程的概念 程序: 用某种语言编写的一组指令的集合,即指一段静态的代码; 进程:简单地说就是一个正在执行的程序或应用,是资源分配的最小单位; 线程:线...

Arno_pei
27分钟前
0
0
08VulKan——描述符布局、缓冲、描述符池和描述符集

整体思想: 对于一些所有顶点都共享的属性,比如顶点的变换矩阵,将它们作为顶点属性为每个顶点都传递一份显然是非常浪费的 。VulKan提出使用资源描述符解决这种全局变量, 描述符是用来在着...

黑白双键
38分钟前
7
0
将分段视频合并

环境 操作系统:Ubuntu Kylin 优麒麟 20.04 LTS 适用架构:AMD64、ARM64(鲲鹏、飞腾) 方法 将下载的视频分片段放入同一个文件夹。按片段排序的文件名汇入list.txt。 ls qq_video*.mp4 | s...

chipo
41分钟前
13
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部