你知道我怎么解决这个问题吗?我正在尝试使用https://github.com/benjiebob/SMALViewer/issues/3代码库,但在neural_renderer端口上遇到错误:
$ python smal_viewer.py
Traceback (most recent call last):
File "smal_viewer.py", line 2, in <module>
import pyqt_viewer
File "/home/mona/research/3danimals/SMALViewer/pyqt_viewer.py", line 13, in <module>
from smal.smal3d_renderer import SMAL3DRenderer
File "/home/mona/research/3danimals/SMALViewer/smal/smal3d_renderer.py", line 6, in <module>
import neural_renderer as nr
File "/home/mona/anaconda3/lib/python3.7/site-packages/neural_renderer/__init__.py", line 3, in <module>
from .load_obj import load_obj
File "/home/mona/anaconda3/lib/python3.7/site-packages/neural_renderer/load_obj.py", line 8, in <module>
import neural_renderer.cuda.load_textures as load_textures_cuda
ImportError: /home/mona/anaconda3/lib/python3.7/site-packages/neural_renderer/cuda/load_textures.cpython-37m-x86_64-linux-gnu.so: undefined symbol: THPVariableClass以下是一些详细信息:
$ python
Python 3.7.6 (default, Jan 8 2020, 19:59:22)
[GCC 7.3.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import torch
>>> torch.__version__
'1.6.0'
>>> torch.version.cuda
'10.1'
>>> torch.cuda.is_available()
True
$ gcc --version
gcc (Ubuntu 9.3.0-10ubuntu2) 9.3.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
$ lsb_release -a
LSB Version: core-11.1.0ubuntu2-noarch:security-11.1.0ubuntu2-noarch
Distributor ID: Ubuntu
Description: Ubuntu 20.04.1 LTS
Release: 20.04
Codename: focal这是神经渲染器git代码库:https://github.com/daniilidis-group/neural_renderer
我用pip install neural_renderer_pytorch安装了神经渲染器
发布于 2020-09-24 14:04:12
看起来您并不是自己构建neural_renderer_pytorch,而是使用了一个轮子。但是,此控制盘是使用较旧的pytorch版本构建的,不能与您计算机上的当前pytorch版本一起工作。
使用当前的pytorch版本从源代码构建neural_renderer (在卸载neural_renderer之后)。
$ pip uninstall neural-renderer-pytorch
$ pip install https://github.com/daniilidis-group/neural_renderer/zipball/master它应该是有效的。
在pytorch1.5之前,它使用了一种在Linux上构建扩展的脆弱方式:尽管依赖于torch,但扩展并没有显式地链接到libtorch.so。之所以提供缺少的符号,只是因为import torch使用RTLD_GLOBAL加载了libtorch.so,从而使其符号全局可见/可访问-这就是为什么在加载这些扩展(例如,neural_renderer_pytorch,如here)之前必须导入torch的原因。
用户可以在第一次导入torch RTLD_GLOBAL 之前强制执行旧的行为设置:
import sys; import ctypes;
sys.setdlopenflags(sys.getdlopenflags() | ctypes.RTLD_GLOBAL)
import torch # now all symbols of torch
# have global visibility and can be used in
# other extensions然而,使用RTLD_GLOBAL是非常危险的,因为它可能会插入无关的符号,并导致细微的错误甚至崩溃。
因此,从1.5Pytorch不再使用RTLD_GLOBAL,但明确针对libpytorch.so的链接(请参阅此commit)和使用较旧的pytorch版本构建的扩展将不起作用。
发布于 2020-09-25 02:55:01
我能够通过首先找到所有的AT_CHECK并将它们转换成AT_ASSERT来修复这个问题。检查at_assert_fix分支并没有为我解决这个问题。我使用的是PyTorch 1.6和CUDA10.1
https://github.com/daniilidis-group/neural_renderer/search?q=AT_CHECK
(base) mona@mona:~/neural_renderer/neural_renderer/cuda$ vi create_texture_image_cuda.cpp
(base) mona@mona:~/neural_renderer/neural_renderer/cuda$ vi load_textures_cuda.cpp
(base) mona@mona:~/neural_renderer/neural_renderer/cuda$ vi rasterize_cuda.cpp
(base) mona@mona:~/neural_renderer$ pip install .
Processing /home/mona/neural_renderer
Building wheels for collected packages: neural-renderer-pytorch
Building wheel for neural-renderer-pytorch (setup.py) ... done
Created wheel for neural-renderer-pytorch: filename=neural_renderer_pytorch-1.1.3-cp37-cp37m-linux_x86_64.whl size=6215781 sha256=fbd9e8ef7340fa71b9fcd69da8ee06a1079ebbe5b4c2c3ce92e8124bc8cea7c5
Stored in directory: /tmp/pip-ephem-wheel-cache-tddilaof/wheels/c6/9b/9b/d2cda4f9ac2127278c21ea5c5e23c3354fe0e63365b7af7842
Successfully built neural-renderer-pytorch
Installing collected packages: neural-renderer-pytorch
Successfully installed neural-renderer-pytorch-1.1.3
(base) mona@mona:~/neural_renderer$ python examples/example1.py
Drawing: 100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 90/90 [00:04<00:00, 19.37it/s]https://github.com/daniilidis-group/neural_renderer/issues/94
https://stackoverflow.com/questions/64037618
复制相似问题