<p>Detectron ops lib no encontrado</p>

Creado en 7 feb. 2018  ·  27Comentarios  ·  Fuente: facebookresearch/Detectron

Después de instalar caffe2 desde la fuente en Ubuntu 16.04 e intentar probar con: python2 detectron/tests/test_spatial_narrow_as_op.py obtengo lo siguiente:

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

Pero el módulo detectron está presente en la carpeta modules . ¿Necesito modificar CMakeLists de alguna manera antes de instalar caffe2 para asegurarme de que se incluya correctamente?

Información del sistema

  • Sistema operativo: Ubuntu 16.04
  • Versión del compilador: gcc versión 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1 ~ 16.04.5)
  • Versión CUDA: 8.0
  • Versión cuDNN: 6.0.21
  • Versión del controlador NVIDIA:
  • Modelos de GPU (para todos los dispositivos si no son todos iguales): 4x Tesla k80
  • PYTHONPATH variable de entorno: / usr / local: / home / ubuntu / caffe2 / build
  • python --version salida: 2.7.12

Comentario más útil

Escribí todos los comandos durante mi instalación, así que pensé que esto podría ayudar con su investigación de errores. He visto que lo resolviste. Pero tal vez esto pueda ayudar a otros como guía. Buena suerte a todos!

Información del sistema

  • Instancia de Amazon AWS g3.4xlarge (NVIDIA Tesla M60)
  • Ubuntu 16.04

Instalación

Usé la documentación de Caffe2 y la documentación de Detectron como guía

Actualizar el controlador de NVIDIA

Descargar controlador

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

Instalación de dependencias

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

Instalar CUDA

Enlace: http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/
Busque la versión más reciente. Use si es posible cuda 8. Usé: 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

Instalar cuDNN

Busque la versión más reciente: 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

Instalar Caffe2

Debido al rápido desarrollo de Caffe2, es posible que deba restablecer el repositorio a la última versión de paso de compilación. Puede verificar esto en el repositorio de Caffe2 GitHub . Haga clic en el icono de compilación aprobada / no aprobada en la parte superior de README.md. A la izquierda, puede verificar la última compilación y seleccionar la última compilación que pasa. Haga clic en la compilación y copie el número de confirmación.

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

Establecer variables de entorno

agregue estas líneas a .bashrc:

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

Prueba Caffe2 y GPU

Pruebe su instalación de Caffe2:

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

Pruebe la instalación de la GPU. El valor de retorno debe ser mayor que 0:

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

Instalar dependencias de 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

agregar línea a .bashrc:

export COCOAPI=$WANTED-DIRECTORY/cocoapi

No olvide descargar los datos del sitio web de coco en este directorio. Estructura como se describe en los datos README.md

Instalar Detectron

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

comprobar instalación

python2 detectron/tests/test_spatial_narrow_as_op.py

Espero poder ayudar a algunas personas :)

Todos 27 comentarios

Resolví el problema. No hubo ningún problema, simplemente y estúpidamente tuve un error tipográfico en mi PYTHONPATH. Lo arreglé y ahora funciona correctamente. ¡Gracias por este gran recurso!

Escribí todos los comandos durante mi instalación, así que pensé que esto podría ayudar con su investigación de errores. He visto que lo resolviste. Pero tal vez esto pueda ayudar a otros como guía. Buena suerte a todos!

Información del sistema

  • Instancia de Amazon AWS g3.4xlarge (NVIDIA Tesla M60)
  • Ubuntu 16.04

Instalación

Usé la documentación de Caffe2 y la documentación de Detectron como guía

Actualizar el controlador de NVIDIA

Descargar controlador

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

Instalación de dependencias

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

Instalar CUDA

Enlace: http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/
Busque la versión más reciente. Use si es posible cuda 8. Usé: 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

Instalar cuDNN

Busque la versión más reciente: 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

Instalar Caffe2

Debido al rápido desarrollo de Caffe2, es posible que deba restablecer el repositorio a la última versión de paso de compilación. Puede verificar esto en el repositorio de Caffe2 GitHub . Haga clic en el icono de compilación aprobada / no aprobada en la parte superior de README.md. A la izquierda, puede verificar la última compilación y seleccionar la última compilación que pasa. Haga clic en la compilación y copie el número de confirmación.

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

Establecer variables de entorno

agregue estas líneas a .bashrc:

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

Prueba Caffe2 y GPU

Pruebe su instalación de Caffe2:

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

Pruebe la instalación de la GPU. El valor de retorno debe ser mayor que 0:

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

Instalar dependencias de 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

agregar línea a .bashrc:

export COCOAPI=$WANTED-DIRECTORY/cocoapi

No olvide descargar los datos del sitio web de coco en este directorio. Estructura como se describe en los datos README.md

Instalar Detectron

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

comprobar instalación

python2 detectron/tests/test_spatial_narrow_as_op.py

Espero poder ayudar a algunas personas :)

@genekogan

Tengo el mismo problema cuando intento crear detectron en la plataforma de AMI de AWS.
No estoy seguro de si mi PYTHONPATH es correcta
aquí está mi PYTHONPATH: / home / ec2-user / src / caffe2 / build

Me pregunto qué debería incluir el directorio "build".
Estos son los archivos que se incluyen en mi directorio de "compilación":
screen shot 2018-03-14 at 12 29 28 pm

¿Son iguales a los tuyos?

¡Gracias!

configure PYTHONPATH o el archivo pth para incluir $ {CAFFE2_ROOT} / build

No se encontró la biblioteca de operador de GPU o CPU de Caffe2 personalizada: AssertionError: No se encontró la biblioteca de operaciones personalizada en '/path/to/to/detectron/build/libcaffe2_detectron_custom_ops_gpu.so' Se encontró cuando se ejecuta test_zero_even_op.py pero otras pruebas pueden pasar, Detectron ops lib : /usr/local/lib/libcaffe2_detectron_ops_gpu.so encontrado. ¿Podrías darme alguna idea?

@genekogan, ¿puedes ayudarme? Todas las pruebas generales pasan con la información “/usr/local/lib/libcaffe2_detectron_ops_gpu.so found”. Sin embargo, cuando pruebo la operación personalizada y ejecuto test_zero_even_op.py, arroja el error "La biblioteca de operaciones personalizada no se encuentra en '/ ruta / a / a / detectron / build / libcaffe2_detectron_custom_ops_gpu".

@ ym547559398 No estoy seguro del error específico que está recibiendo. Resolví mi problema exactamente con lo que dijo

@genekogan ¡ Gracias! Lo he solucionado. Un conflicto muy simple ~

Sigo teniendo el mismo problema ahora que caffe2 está integrado en pytorch, compilé pytorch desde la última fuente pero al ejecutar detetron simple_infer todavía se queja de no encontrar detectron_ops (no gpu en mi caso)

@mehditlili ¿Estableciste el PYTHONPATH? O bien, creo que nos faltan algunas operaciones extendidas, y hay una guía para que nos ayude a usar la carpeta de operaciones y crear operaciones extendidas.

@mattifrind

Dado que la distribución de pytorch / caffe2 a través de conda es oficial, no debería haber ninguna configuración adicional para ubicar esos módulos de operaciones. Si bien libcaffe2_detectron_ops_gpu.so se puede ubicar a través del entorno PATH estándar, la ruta de instalación de pytorch debe buscarse de forma predeterminada sin la intervención del usuario. Simplemente insertando la ruta de instalación de pytorch sys.path.insert(0, torch.__path__[0] en tiempo de ejecución aseguraría encontrar las operaciones de detectron (última versión).

Mi problema es que Detectron aparentemente quiere los archivos de encabezado en Caffe2 / core, pero la compilación oficial de Pytorch en Anacdona no incluye Caffe2 / core. ¿Necesito hacer una instalación adicional de pytorch y agregar esa ruta a Caffe2_Dir?

Resolví este problema agregando "torch.pth" al directorio ~ / .conda / envs / dl / lib / python2.7 / site-packages ". Porque" libcaffe2_detectron_ops_gpu.so "está en el directorio" site-packages / torch ".

torch.pth contiene solo una ruta:
/home/ruixin/.conda/envs/dl/lib/python2.7/site-packages/torch

PD: este error ejecutará la siguiente función. Puede ver que "ops_path = os.path.join (prefix, 'lib / libcaffe2_detectron_ops_gpu.so')" es para obtener el archivo .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

Probé tu sugerencia pero no funcionó y recibo el mismo error.
¿Alguien tiene otra solución alternativa para sugerir?

@zabatani

¿Se asegura de que libcaffe2_detectron_ops_gpu.so esté en la ruta lib/ debajo de torch.__path__[0] ?
Dependiendo de su instalación, puede estar en otro lugar o puede tener varias entradas en torch.__path__ .
Imprima y enumere el contenido para ubicar dónde está.
Alternativamente, puede agregarlo a la variable env PATH.

Si está usando caffe2 instalando pytorch-nightly, puede copiar o vincular libcaffe2_detectron_ops_gpu.so (está en algún lugar como /home/ruixin/.conda/envs/dl/lib/python2.7/site-packages/torch ) a /usr/lib o el lib del entorno virtual
Esto funciona para mi.

Después de agregar la variable de entorno PYTHONPATH: / ruta / a / pytorch / build, la prueba pasó

@suica Eso funcionó para mí. No pude poner el enlace en /ur/lib y estoy usando conda en lugar de virtualenv. Lo puse en /path/to/conda/env/lib y funciona. ¡Gracias!

@genekogan ¡Gracias! He resuelto un conflicto muy simple ~

¿Cómo resolvió el problema que encontró?

Tengo el mismo problema pero en colab, ¿alguna idea?

@genekogan, ¿puedes ayudarme? Todas las pruebas generales pasan la información "/usr/local/lib/libcaffe2_detectron_ops_gpu.so encontrado". Sin embargo, cuando pruebo la operación personalizada y ejecuto test_zero_even_op.py, arroja el error "No se encontró la biblioteca de operaciones personalizadas en '/ ruta / a / a / detectron / build / libcaffe2_detectron_custom_ops_gpu".
¿Puede decirme cómo resolvió este problema? Me he encontrado con el mismo error

@genekogan, ¿puedes ayudarme? Todas las pruebas generales pasan la información "/usr/local/lib/libcaffe2_detectron_ops_gpu.so encontrado". Sin embargo, cuando pruebo la operación personalizada y ejecuto test_zero_even_op.py, arroja el error "No se encontró la biblioteca de operaciones personalizadas en '/ ruta / a / a / detectron / build / libcaffe2_detectron_custom_ops_gpu".
¿Puede decirme cómo resolvió este problema? Me he encontrado con el mismo error

No puedo resolverlo, lo siento.

Yo también tengo el mismo error cuando intento entrenar la red usando:
herramientas de python2 / train_net.py \
--cfg configs / DensePose_ResNet50_FPN_single_GPU.yaml \
OUTPUT_DIR / tmp / detectron-salida
Las pruebas de instalación de Detectron y caffe2 pasan satisfactoriamente.
La salida de error:
Encontrado Detectron ops lib: /usr/local/lib/python2.7/site-packages/torch/lib/libcaffe2_detectron_ops_gpu.so
Rastreo (llamadas recientes más última):
Archivo "/usr/local/densepose/tools/train_net.py", línea 35, en
c2_utils.import_custom_ops ()
Archivo "/usr/local/densepose/detectron/utils/c2.py", línea 39, en import_custom_ops
custom_ops_lib = envu.get_custom_ops_lib ()
Archivo "/usr/local/densepose/detectron/utils/env.py", línea 85, en get_custom_ops_lib
'La biblioteca de operaciones personalizada no se encuentra en el formato \' {} \ ''. (Custom_ops_lib)
AssertionError: la biblioteca de operaciones personalizada no se encuentra en '/usr/local/densepose/build/libcaffe2_detectron_custom_ops_gpu.so'

@genekogan ¡ Gracias! Lo he solucionado. Un conflicto muy simple ~

@genekogan 你 能 帮帮 我 吗? 一般 测试 全部 通过 信息 “/usr/local/lib/libcaffe2_detectron_ops_gpu.so found”。 但是 , 当 我 测试 自 定义 操作 并 运行 test_zero_even_op.py 时 , 它 “在 '/ ruta / a / a / detectron / build / libcaffe2_detectron_custom_ops_gpu 中 找到 自 定义 操作 库 ”。
¿Puede decirme cómo resolvió este problema? He encontrado el mismo error

Y parece que no puedo encontrar el archivo 'libcaffe2_detectron_custom_ops_gpu.so'. Verifiqué que caffe2 / pytorch están en la variable de entorno PYTHONPATH.

encontré la solución

en el archivo / ruta a la biblioteca / densepose / detectron / utils / env.py
editar línea 19
_CMAKE_INSTALL_PREFIX = '/ usr / lib'
para
_CMAKE_INSTALL_PREFIX = 'ruta a la carpeta lib de pytorch que construiste usando cmake o el archivo setup.py /'
y corre de nuevo :)

No tengo módulo detectron en caffe2. He instalado caffe2 a través de pytorch. Se está instalando correctamente pero no tiene módulo de detección. ¿Puedo obtener ayuda?

Gracias por adelantado

Hola chicos, el objetivo de este bloque de código es encontrar el archivo "libcaffe2_detectron_ops_gpu.so
", así que haz esto:

  1. busque el archivo usted mismo: busque / -name libcaffe2_detectron_ops_gpu.so
  2. agregar el resultado de la búsqueda a la lista de búsqueda

@genekogan ¡ Gracias! Lo he solucionado. Un conflicto muy simple ~

cómo solucionarlo, tengo el mismo problema, gracias

¿Fue útil esta página
0 / 5 - 0 calificaciones