<p>Detectron ops lib não encontrado</p>

Criado em 7 fev. 2018  ·  27Comentários  ·  Fonte: facebookresearch/Detectron

Depois de instalar o caffe2 da fonte no Ubuntu 16.04 e tentar testar com: python2 detectron/tests/test_spatial_narrow_as_op.py , obtenho o seguinte:

No handlers could be found for logger "caffe2.python.net_drawer"
net_drawer will not run correctly. Please install the correct dependencies.
E0207 16:36:41.320443  4125 init_intrinsics_check.cc:59] CPU feature avx is present on your machine, but the Caffe2 binary is not compiled with it. It means you may not get the full speed of your CPU.
Traceback (most recent call last):
  File "detectron/tests/test_spatial_narrow_as_op.py", line 88, in <module>
    utils.c2.import_detectron_ops()
  File "/home/gene/detectron/lib/utils/c2.py", line 41, in import_detectron_ops
    detectron_ops_lib = envu.get_detectron_ops_lib()
  File "/home/gene/detectron/lib/utils/env.py", line 73, in get_detectron_ops_lib
    'version includes Detectron module').format(detectron_ops_lib)
AssertionError: Detectron ops lib not found at '/usr/local/lib/python2.7/dist-packages/lib/libcaffe2_detectron_ops_gpu.so'; make sure that your Caffe2 version includes Detectron module

Mas o módulo detectron está presente na pasta modules . Preciso modificar CMakeLists de alguma forma antes de instalar o caffe2 para garantir que ele seja incluído corretamente?

Informação do sistema

  • Sistema operacional: Ubuntu 16.04
  • Versão do compilador: gcc versão 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1 ~ 16.04.5)
  • Versão CUDA: 8.0
  • versão cuDNN: 6.0.21
  • Versão do driver NVIDIA:
  • Modelos de GPU (para todos os dispositivos, se não forem todos iguais): 4x Tesla k80
  • PYTHONPATH variável de ambiente: / usr / local: / home / ubuntu / caffe2 / build
  • python --version output: 2.7.12

Comentários muito úteis

Eu escrevi todos os comandos durante minha instalação, então pensei que isso poderia ajudar na sua pesquisa de bug. Eu vi que você resolveu. Mas talvez isso possa ajudar outras pessoas como uma diretriz. Boa sorte a todos!

Informação do sistema

  • Instância Amazon AWS g3.4xlarge (NVIDIA Tesla M60)
  • Ubuntu 16.04

Instalação

Eu usei a documentação Caffe2 e a documentação Detectron como uma diretriz

Atualizar driver NVIDIA

Baixar driver

sudo dpkg -i nvidia-diag-driver-local-repo-ubuntu1604_375.66-1_amd64.deb
sudo apt-get update && sudo apt-get install wget -y --no-install-recommends

Instalando Dependências

sudo apt-get update
sudo apt-get install -y --no-install-recommends build-essential cmake git libgoogle-glog-dev libgtest-dev libiomp-dev libleveldb-dev liblmdb-dev libopencv-dev libopenmpi-dev libsnappy-dev libprotobuf-dev openmpi-bin openmpi-doc protobuf-compiler python-dev python-pip
sudo pip install setuptools future numpy protobuf enum networkx
sudo apt-get install -y --no-install-recommends libgflags-dev

Instale CUDA

Link: http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/
Procure a versão mais recente. Use se possível cuda 8. Eu usei: cuda-repo-ubuntu1604_8.0.61-1_amd64.deb

wget "http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/..." //add selected file name
sudo dpkg -i cuda-repo-ubuntu1604_8.0.61-1_amd64.deb
sudo apt-get update
sudo apt-get install cuda-8-0

Instale cuDNN

Procure a versão mais recente: https://developer.nvidia.com/cudnn

wget http://developer.download.nvidia.com/compute/redist/cudnn/v5.1/cudnn-8.0-linux-x64-v5.1.tgz
sudo tar -xzf cudnn-8.0-linux-x64-v5.1.tgz -C /usr/local
rm cudnn-8.0-linux-x64-v5.1.tgz && sudo ldconfig

Instale Caffe2

Devido ao rápido desenvolvimento do Caffe2, pode ser necessário redefinir o repositório para a última versão de compilação aprovada. Você pode verificar isso no repositório Caffe2 GitHub . Clique no ícone de aprovação / reprovação de construção na parte superior do README.md. À esquerda, você pode verificar a última construção e selecionar a última versão aprovada. Clique na construção e copie o número de confirmação.

Go to your selected installation directory: cd directory
git clone --recursive https://github.com/caffe2/caffe2.git && cd caffe2
git reset --hard $COMMIT_NUMBER //unnecessary when builds passing
sudo make -j16 //exchange 16 by your number of cores
cd build && sudo make install

Definir variáveis ​​de ambiente

adicione estas linhas a .bashrc:

export PYTHONPATH=/usr/local
export PYTHONPATH=$PYTHONPATH:/home/ubuntu/caffe2/build
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH

Teste Caffe2 e GPU

Teste a instalação do Caffe2:

python2 -c 'from caffe2.python import core' 2>/dev/null && echo "Success" || echo "Failure"

Teste a instalação da GPU. O valor de retorno deve ser maior que 0:

python2 -c 'from caffe2.python import workspace; print(workspace.NumCudaDevices())'

Instale dependências Detectron

sudo pip install numpy>=1.13 pyyaml>=3.12 matplotlib opencv-python>=3.2 setuptools Cython mock scipy
sudo git clone https://github.com/cocodataset/cocoapi.git $WANTED-DIRECTORY/cocoapi
cd $WANTED-DIRECTORY/cocoapi/PythonApi
sudo -H make install
sudo python setup.py install

adicionar linha a .bashrc:

export COCOAPI=$WANTED-DIRECTORY/cocoapi

Não se esqueça de baixar os dados do site coco neste diretório. Estrutura conforme descrito nos dados README.md

Instale Detectron

git clone https://github.com/facebookresearch/detectron detectron
cd detectron/lib && sudo make -j16

verificar instalação

python2 detectron/tests/test_spatial_narrow_as_op.py

Espero poder ajudar algumas pessoas :)

Todos 27 comentários

Eu resolvi o problema. Não houve problema, simplesmente e estupidamente cometi um erro de digitação em meu PYTHONPATH. Eu consertei isso e agora funciona corretamente. Obrigado por este ótimo recurso!

Eu escrevi todos os comandos durante minha instalação, então pensei que isso poderia ajudar na sua pesquisa de bug. Eu vi que você resolveu. Mas talvez isso possa ajudar outras pessoas como uma diretriz. Boa sorte a todos!

Informação do sistema

  • Instância Amazon AWS g3.4xlarge (NVIDIA Tesla M60)
  • Ubuntu 16.04

Instalação

Eu usei a documentação Caffe2 e a documentação Detectron como uma diretriz

Atualizar driver NVIDIA

Baixar driver

sudo dpkg -i nvidia-diag-driver-local-repo-ubuntu1604_375.66-1_amd64.deb
sudo apt-get update && sudo apt-get install wget -y --no-install-recommends

Instalando Dependências

sudo apt-get update
sudo apt-get install -y --no-install-recommends build-essential cmake git libgoogle-glog-dev libgtest-dev libiomp-dev libleveldb-dev liblmdb-dev libopencv-dev libopenmpi-dev libsnappy-dev libprotobuf-dev openmpi-bin openmpi-doc protobuf-compiler python-dev python-pip
sudo pip install setuptools future numpy protobuf enum networkx
sudo apt-get install -y --no-install-recommends libgflags-dev

Instale CUDA

Link: http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/
Procure a versão mais recente. Use se possível cuda 8. Eu usei: cuda-repo-ubuntu1604_8.0.61-1_amd64.deb

wget "http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/..." //add selected file name
sudo dpkg -i cuda-repo-ubuntu1604_8.0.61-1_amd64.deb
sudo apt-get update
sudo apt-get install cuda-8-0

Instale cuDNN

Procure a versão mais recente: https://developer.nvidia.com/cudnn

wget http://developer.download.nvidia.com/compute/redist/cudnn/v5.1/cudnn-8.0-linux-x64-v5.1.tgz
sudo tar -xzf cudnn-8.0-linux-x64-v5.1.tgz -C /usr/local
rm cudnn-8.0-linux-x64-v5.1.tgz && sudo ldconfig

Instale Caffe2

Devido ao rápido desenvolvimento do Caffe2, pode ser necessário redefinir o repositório para a última versão de compilação aprovada. Você pode verificar isso no repositório Caffe2 GitHub . Clique no ícone de aprovação / reprovação de construção na parte superior do README.md. À esquerda, você pode verificar a última construção e selecionar a última versão aprovada. Clique na construção e copie o número de confirmação.

Go to your selected installation directory: cd directory
git clone --recursive https://github.com/caffe2/caffe2.git && cd caffe2
git reset --hard $COMMIT_NUMBER //unnecessary when builds passing
sudo make -j16 //exchange 16 by your number of cores
cd build && sudo make install

Definir variáveis ​​de ambiente

adicione estas linhas a .bashrc:

export PYTHONPATH=/usr/local
export PYTHONPATH=$PYTHONPATH:/home/ubuntu/caffe2/build
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH

Teste Caffe2 e GPU

Teste a instalação do Caffe2:

python2 -c 'from caffe2.python import core' 2>/dev/null && echo "Success" || echo "Failure"

Teste a instalação da GPU. O valor de retorno deve ser maior que 0:

python2 -c 'from caffe2.python import workspace; print(workspace.NumCudaDevices())'

Instale dependências Detectron

sudo pip install numpy>=1.13 pyyaml>=3.12 matplotlib opencv-python>=3.2 setuptools Cython mock scipy
sudo git clone https://github.com/cocodataset/cocoapi.git $WANTED-DIRECTORY/cocoapi
cd $WANTED-DIRECTORY/cocoapi/PythonApi
sudo -H make install
sudo python setup.py install

adicionar linha a .bashrc:

export COCOAPI=$WANTED-DIRECTORY/cocoapi

Não se esqueça de baixar os dados do site coco neste diretório. Estrutura conforme descrito nos dados README.md

Instale Detectron

git clone https://github.com/facebookresearch/detectron detectron
cd detectron/lib && sudo make -j16

verificar instalação

python2 detectron/tests/test_spatial_narrow_as_op.py

Espero poder ajudar algumas pessoas :)

@genekogan

Tenho o mesmo problema quando tento construir detectron na plataforma da AMI da AWS.
Não tenho certeza se meu PYTHONPATH está correto
aqui está meu PYTHONPATH: / home / ec2-user / src / caffe2 / build

Estou me perguntando o que o diretório "build" deve incluir?
Aqui estão os arquivos incluídos no meu diretório "build":
screen shot 2018-03-14 at 12 29 28 pm

Eles são iguais aos seus?

Obrigado!

definir PYTHONPATH ou arquivo pth para incluir $ {CAFFE2_ROOT} / build

Custom Caffe2 CPU ou GPU operator lib not found: AssertionError: Custom ops lib não encontrado em '/path/to/to/detectron/build/libcaffe2_detectron_custom_ops_gpu.so'Encontrado ao executar o test_zero_even_op.py, mas outros testes podem passar, Detectron ops lib : /usr/local/lib/libcaffe2_detectron_ops_gpu.so encontrado. Você poderia me dar uma ideia?

@genekogan você pode me ajudar? Todos os testes gerais passam com a informação “/usr/local/lib/libcaffe2_detectron_ops_gpu.so found”. No entanto, quando eu testo o op personalizado e executo o test_zero_even_op.py, ele gera o erro "Lib de operações personalizadas não encontrado em '/ path / to / to / detectron / build / libcaffe2_detectron_custom_ops_gpu".

@ ym547559398 não tenho certeza do erro específico que você está obtendo. Resolvi meu problema exatamente com o que

@genekogan Obrigado! Eu resolvi isso. Um conflito muito simples ~

Eu ainda tenho o mesmo problema agora que o caffe2 está integrado no pytorch, eu compilei o pytorch da fonte mais recente, mas executando o detetron simple_infer ainda reclama por não encontrar detectron_ops (sem gpu no meu caso)

@mehditlili Você definiu o PYTHONPATH? Ou então, acho que estamos faltando alguns ops extintos, e há um guia para nos ajudar a usar a pasta de ops e construir ops estendidos?

@mattifrind

Como a distribuição pytorch / caffe2 por meio de conda é oficial, não deve haver nenhuma configuração adicional para localizar esses módulos ops. Embora libcaffe2_detectron_ops_gpu.so possa ser localizado por meio do env PATH padrão, o caminho de instalação do pytorch deve ser pesquisado por padrão sem a intervenção do usuário. Basta inserir o caminho de instalação do pytorch sys.path.insert(0, torch.__path__[0] em tempo de execução para garantir a localização das operações do detectron (versão mais recente).

Meu problema é que o Detectron aparentemente quer os arquivos de cabeçalho em Caffe2 / core, mas a compilação oficial do Pytorch em Anacdona não inclui Caffe2 / core. Preciso fazer uma instalação pytorch adicional e anexar esse caminho ao Caffe2_Dir?

Eliminei esse problema adicionando "torch.pth" ao diretório ~ / .conda / envs / dl / lib / python2.7 / site-packages ". Porque" libcaffe2_detectron_ops_gpu.so "está no diretório" site-packages / torch ".

torch.pth contém apenas um caminho:
/home/ruixin/.conda/envs/dl/lib/python2.7/site-packages/torch

PS: este erro irá executar a função abaixo. Você pode ver que "ops_path = os.path.join (prefix, 'lib / libcaffe2_detectron_ops_gpu.so')" é obter o arquivo .so.

def get_detectron_ops_lib():
    """Retrieve Detectron ops library."""
    # Candidate prefixes for the detectron ops lib path
    # print("=> path list = :\n", _CMAKE_INSTALL_PREFIX, "\n", sys.prefix, '\n', sys.exec_prefix, '\n', sys.path)
    prefixes = [_CMAKE_INSTALL_PREFIX, sys.prefix, sys.exec_prefix] + sys.path
    # Search for detectron ops lib
    # print("=> prefixes = {}".format(prefixes))
    for prefix in prefixes:
        ops_path = os.path.join(prefix, 'lib/libcaffe2_detectron_ops_gpu.so')
        # print("=> ops_path = {}".format(ops_path))
        if os.path.exists(ops_path):
            # TODO(ilijar): Switch to using a logger
            print('Found Detectron ops lib: {}'.format(ops_path))
            break
    assert os.path.exists(ops_path), \
        ('Detectron ops lib not found; make sure that your Caffe2 '
         'version includes Detectron module')
    return ops_path

@farleylai

Tentei sua sugestão, mas não funcionou e estou recebendo o mesmo erro.
Alguém tem outra solução alternativa a sugerir?

@zabatani

Tem certeza de que libcaffe2_detectron_ops_gpu.so está no caminho lib/ em torch.__path__[0] ?
Dependendo da sua instalação, pode estar em outro lugar ou você pode ter várias entradas em torch.__path__ .
Imprima e liste o conteúdo para localizar onde ele está.
Como alternativa, você pode adicioná-lo à variável env PATH.

Se você estiver usando o caffe2 instalando o pytorch-nightly, pode copiar ou vincular libcaffe2_detectron_ops_gpu.so (está em algum lugar como /home/ruixin/.conda/envs/dl/lib/python2.7/site-packages/torch ) para /usr/lib ou o ambiente virtual lib pasta.
Funciona para mim.

Depois de adicionar a variável de ambiente PYTHONPATH: / path / to / pytorch / build, o teste foi aprovado

@suica Isso funcionou para mim. Não consegui colocar o link em /ur/lib e estou usando conda em vez de virtualenv. Eu coloquei em /path/to/conda/env/lib e funciona. Obrigado!

@genekogan Obrigado! Resolvi um conflito muito simples ~

Como você resolveu o problema que encontrou?

Estou com o mesmo problema mas na colab, alguma ideia?

@genekogan você pode me ajudar? Todos os testes gerais passam a informação "/usr/local/lib/libcaffe2_detectron_ops_gpu.so found". No entanto, quando eu testo a operação personalizada e executo test_zero_even_op.py, ele gera o erro "A biblioteca de operação personalizada não foi encontrada em '/ path / to / to / detectron / build / libcaffe2_detectron_custom_ops_gpu".
Você pode me dizer como você resolveu este problema? Eu encontrei o mesmo erro

@genekogan você pode me ajudar? Todos os testes gerais passam a informação "/usr/local/lib/libcaffe2_detectron_ops_gpu.so found". No entanto, quando eu testo a operação personalizada e executo test_zero_even_op.py, ele gera o erro "A biblioteca de operação personalizada não foi encontrada em '/ path / to / to / detectron / build / libcaffe2_detectron_custom_ops_gpu".
Você pode me dizer como você resolveu este problema? Eu encontrei o mesmo erro

Não consigo resolver, desculpe.

Eu também tenho o mesmo erro quando tento treinar a rede usando:
ferramentas python2 / train_net.py \
--cfg configs / DensePose_ResNet50_FPN_single_GPU.yaml \
OUTPUT_DIR / tmp / detectron-output
Os testes de instalação Detectron e caffe2 foram aprovados com êxito.
A saída de erro:
Detectron ops lib: /usr/local/lib/python2.7/site-packages/torch/lib/libcaffe2_detectron_ops_gpu.so
Traceback (última chamada mais recente):
Arquivo "/usr/local/densepose/tools/train_net.py", linha 35, em
c2_utils.import_custom_ops ()
Arquivo "/usr/local/densepose/detectron/utils/c2.py", linha 39, em import_custom_ops
custom_ops_lib = envu.get_custom_ops_lib ()
Arquivo "/usr/local/densepose/detectron/utils/env.py", linha 85, em get_custom_ops_lib
'Custom ops lib não encontrado em \' {} \ ''. Format (custom_ops_lib)
AssertionError: Custom ops lib não encontrado em '/usr/local/densepose/build/libcaffe2_detectron_custom_ops_gpu.so'

@genekogan Obrigado! Eu resolvi isso. Um conflito muito simples ~

@genekogan 你 能 帮帮 我 吗? 一般 测试 全部 通过 信息 “/usr/local/lib/libcaffe2_detectron_ops_gpu.so found”。 但是 , 当 我 测试 自 定义 操作 并 运行 test_zero_even_op.py 未 , , , , , ,在 '/ caminho / para / para / detectron / build / libcaffe2_detectron_custom_ops_gpu 中 找到 自 定义 操作 库 ”。
Você pode me dizer como você resolveu esse problema? Eu encontrei o mesmo erro

E não consigo encontrar o arquivo 'libcaffe2_detectron_custom_ops_gpu.so'. Eu verifiquei que caffe2 / pytorch estão na variável de ambiente PYTHONPATH.

encontrou a solução

no arquivo / caminho para a biblioteca / densepose / detectron / utils / env.py
editar linha 19
_CMAKE_INSTALL_PREFIX = '/ usr / lib'
para
_CMAKE_INSTALL_PREFIX = 'caminho para a pasta lib do pytorch que você construiu usando cmake ou o arquivo setup.py /'
e corra novamente :)

Eu não tenho módulo detectron no caffe2. instalei o caffe2 por meio do pytorch. Ele está sendo instalado corretamente, mas não possui módulo de detecção. posso obter alguma ajuda.

desde já, obrigado

Olá pessoal, o objetivo deste bloco de código é encontrar o arquivo "libcaffe2_detectron_ops_gpu.so
", então faça isso:

  1. encontre o arquivo você mesmo: find / -name libcaffe2_detectron_ops_gpu.so
  2. adicione o resultado da pesquisa à lista de pesquisa

@genekogan Obrigado! Eu resolvi isso. Um conflito muito simples ~

como resolver, estou com o mesmo problema obrigado

Esta página foi útil?
0 / 5 - 0 avaliações