天天看點

解決neural-renderer-pytorch編譯安裝問題問題概述錯誤清單如下解決方案已經修改好的源碼

解決neural-renderer-pytorch編譯安裝問題

  • 問題概述
  • 錯誤清單如下
  • 解決方案
    • step 1
    • step 2
    • step 3
  • 已經修改好的源碼

問題概述

由于neural-renderer-pytorch這個python資源庫本身的編寫問題,導緻和高版本的pytorch不相容,我使用的是 pytorch=1.8.1

錯誤清單如下

ERROR: Command errored out with exit status 1:
   command: /home/majunfu/anaconda3/envs/spin/bin/python -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-req-build-r1_gkzyn/setup.py'"'"'; __file__='"'"'/tmp/pip-req-build-r1_gkzyn/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d /tmp/pip-wheel-m2pz9umc
       cwd: /tmp/pip-req-build-r1_gkzyn/
  Complete output (156 lines):
  running bdist_wheel
  /home/majunfu/anaconda3/envs/spin/lib/python3.6/site-packages/torch/utils/cpp_extension.py:369: UserWarning: Attempted to use ninja as the BuildExtension backend but we could not find ninja.. Falling back to using the slow distutils backend.
    warnings.warn(msg.format('we could not find ninja.'))
  running build
  running build_py
  creating build
  creating build/lib.linux-x86_64-3.6
  creating build/lib.linux-x86_64-3.6/neural_renderer
  copying neural_renderer/get_points_from_angles.py -> build/lib.linux-x86_64-3.6/neural_renderer
  copying neural_renderer/mesh.py -> build/lib.linux-x86_64-3.6/neural_renderer
  copying neural_renderer/look_at.py -> build/lib.linux-x86_64-3.6/neural_renderer
  copying neural_renderer/renderer.py -> build/lib.linux-x86_64-3.6/neural_renderer
  copying neural_renderer/load_obj.py -> build/lib.linux-x86_64-3.6/neural_renderer
  copying neural_renderer/projection.py -> build/lib.linux-x86_64-3.6/neural_renderer
  copying neural_renderer/vertices_to_faces.py -> build/lib.linux-x86_64-3.6/neural_renderer
  copying neural_renderer/look.py -> build/lib.linux-x86_64-3.6/neural_renderer
  copying neural_renderer/save_obj.py -> build/lib.linux-x86_64-3.6/neural_renderer
  copying neural_renderer/perspective.py -> build/lib.linux-x86_64-3.6/neural_renderer
  copying neural_renderer/lighting.py -> build/lib.linux-x86_64-3.6/neural_renderer
  copying neural_renderer/__init__.py -> build/lib.linux-x86_64-3.6/neural_renderer
  copying neural_renderer/rasterize.py -> build/lib.linux-x86_64-3.6/neural_renderer
  creating build/lib.linux-x86_64-3.6/neural_renderer/cuda
  copying neural_renderer/cuda/__init__.py -> build/lib.linux-x86_64-3.6/neural_renderer/cuda
  running build_ext
  building 'neural_renderer.cuda.load_textures' extension
  creating build/temp.linux-x86_64-3.6
  creating build/temp.linux-x86_64-3.6/neural_renderer
  creating build/temp.linux-x86_64-3.6/neural_renderer/cuda
  gcc -pthread -B /home/majunfu/anaconda3/envs/spin/compiler_compat -Wl,--sysroot=/ -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -I/home/majunfu/anaconda3/envs/spin/lib/python3.6/site-packages/torch/include -I/home/majunfu/anaconda3/envs/spin/lib/python3.6/site-packages/torch/include/torch/csrc/api/include -I/home/majunfu/anaconda3/envs/spin/lib/python3.6/site-packages/torch/include/TH -I/home/majunfu/anaconda3/envs/spin/lib/python3.6/site-packages/torch/include/THC -I/usr/local/cuda-11.0/include -I/home/majunfu/anaconda3/envs/spin/include/python3.6m -c neural_renderer/cuda/load_textures_cuda.cpp -o build/temp.linux-x86_64-3.6/neural_renderer/cuda/load_textures_cuda.o -DTORCH_API_INCLUDE_EXTENSION_H -DPYBIND11_COMPILER_TYPE="_gcc" -DPYBIND11_STDLIB="_libstdcpp" -DPYBIND11_BUILD_ABI="_cxxabi1011" -DTORCH_EXTENSION_NAME=load_textures -D_GLIBCXX_USE_CXX11_ABI=0 -std=c++14
......................................................................
省略................................................................
......................................................................
       DeprecatedTypeProperties & type() const {
                                  ^~~~
    neural_renderer/cuda/load_textures_cuda.cpp:15:23: error: ‘AT_CHECK’ was not declared in this scope
     #define CHECK_CUDA(x) AT_CHECK(x.type().is_cuda(), #x " must be a CUDA tensor")
                           ^
    neural_renderer/cuda/load_textures_cuda.cpp:15:23: note: in definition of macro ‘CHECK_CUDA’
     #define CHECK_CUDA(x) AT_CHECK(x.type().is_cuda(), #x " must be a CUDA tensor")
                           ^~~~~~~~
    neural_renderer/cuda/load_textures_cuda.cpp:28:5: note: in expansion of macro ‘CHECK_INPUT’
         CHECK_INPUT(image);
         ^
    neural_renderer/cuda/load_textures_cuda.cpp:15:23: note: suggested alternative: ‘DCHECK’
     #define CHECK_CUDA(x) AT_CHECK(x.type().is_cuda(), #x " must be a CUDA tensor")
                           ^
    neural_renderer/cuda/load_textures_cuda.cpp:15:23: note: in definition of macro ‘CHECK_CUDA’
     #define CHECK_CUDA(x) AT_CHECK(x.type().is_cuda(), #x " must be a CUDA tensor")
                           ^~~~~~~~
    neural_renderer/cuda/load_textures_cuda.cpp:28:5: note: in expansion of macro ‘CHECK_INPUT’
         CHECK_INPUT(image);
         ^
    neural_renderer/cuda/load_textures_cuda.cpp:15:39: warning: ‘at::DeprecatedTypeProperties& at::Tensor::type() const’ is deprecated: Tensor.type() is deprecated. Instead use Tensor.options(), which in many cases (e.g. in a constructor) is a drop-in replacement. If you were using data from type(), that is now available from Tensor itself, so instead of tensor.type().scalar_type(), use tensor.scalar_type() instead and instead of tensor.type().backend() use tensor.device(). [-Wdeprecated-declarations]
     #define CHECK_CUDA(x) AT_CHECK(x.type().is_cuda(), #x " must be a CUDA tensor")
                                           ^
    neural_renderer/cuda/load_textures_cuda.cpp:17:24: note: in expansion of macro ‘CHECK_CUDA’
     #define CHECK_INPUT(x) CHECK_CUDA(x); CHECK_CONTIGUOUS(x)
                            ^~~~~~~~~~
    neural_renderer/cuda/load_textures_cuda.cpp:29:5: note: in expansion of macro ‘CHECK_INPUT’
         CHECK_INPUT(faces);
         ^

           

解決方案

step 1

下載下傳源碼:https://github.com/daniilidis-group/neural_renderer

step 2

修改源碼中以下檔案:

  1. neural_renderer/cuda/create_texture_image_cuda.cpp
  2. neural_renderer/cuda/load_textures_cuda.cpp
  3. neural_renderer/cuda/rasterize_cuda.cpp

修改内容:将三個檔案中所有的 AT_CHECK 替換為 TORCH_CHECK

step 3

進入到 neural_renderer-master 檔案夾下,執行 python setup.py install

已經修改好的源碼

連結:https://download.csdn.net/download/u011058765/18843724