ImportError: ... / detectron / utils / cython_nms.so: неопределенный символ: PyFPE_jbuf, Detectron, Caffe2, Anaconda, Cython - PullRequest
0 голосов
/ 19 октября 2018

У меня возникают ошибки импорта при попытке повторного использования детектора

Ожидаемые результаты:

Успешный вывод

Фактические результаты

Traceback (most recent call last):

File "infer_simple.py", line 44, in <module>
     import detectron.core.test_engine as infer_engine
 File ".../detectron/core/test_engine.py", line 35, in <module>
     from detectron.core.rpn_generator import generate_rpn_on_dataset
 File ".../detectron/core/rpn_generator.py", line 42, in <module>
     from detectron.datasets import task_evaluation
 File ".../detectron/datasets/task_evaluation.py", line 47, in <module>
     import detectron.datasets.json_dataset_evaluator as json_dataset_evaluator
 File ".../detectron/datasets/json_dataset_evaluator.py", line 34, in <module>
     import detectron.utils.boxes as box_utils

 File ".../detectron/utils/boxes.py", line 52, in <module>
     import detectron.utils.cython_nms as cython_nms
     ImportError: .../detectron/utils/cython_nms.so: undefined symbol: PyFPE_jbuf

Подробные инструкции по воспроизведению

<code>conda install pytorch-nightly -c pytorch</code><br>
DETECTRON=/path/to/clone/detectron<br>
<code>git clone https://github.com/facebookresearch/detectron $DETECTRON</code><br>
<code>pip install -r $DETECTRON/requirements.txt</code><br>
<code>cd $DETECTRON && make <code>
<code>python $DETECTRON/detectron/tools/infer_simple.py</code>

Информация о системе

Operating system: Ubuntu 16.04
Compiler version: Cmake 3.12.0
CUDA version: 9.2
cuDNN version: 9.0
NVIDIA driver version: 396.37
GPU model: Nvidia K80
PYTHONPATH: empty

python --version
> Python 2.7.15 :: Anaconda, Inc.

Все остальное, что кажется актуальным:
Caffe2 работает просто отлично, test_spatial_narrow_as_op.py возвращает 'OK'

Из того, что я обнаружил в Интернете, проблема в том, что у меня есть разные версии cython, numpy или opencv на моих разных версиях python и anaconda.Но если я удаляю numpy или opencv из anaconda, то caffe больше не работает, и если я удаляю cython из моих исходных python пакетов, то команда make в cd Detector && Makeне удается.

Я чувствую, что если бы я мог сказать make использовать Cython из anaconda, а не из python по умолчанию, он должен работать.

Ответы [ 2 ]

0 голосов
/ 15 марта 2019

Это мой трекбек:

Traceback (most recent call last):
  File "tools/tracking/greedy_tracking_from_raw_dets.py", line 8, in <module>
    from vdetlib.vdet.track import greedily_track_from_raw_dets, fcn_tracker
  File "./vdetlib/vdet/track.py", line 13, in <module>
    from ..utils.cython_nms import track_det_nms
ImportError: ./vdetlib/utils/cython_nms.so: undefined symbol: PyFPE_jbuf

Вы должны:

  1. pip install cython kivy
  2. заново изготовить детектор

Тогда это может сработать!

0 голосов
/ 19 октября 2018

Хорошо, я нашел решение при публикации: -p

Решение состоит в том, чтобы изменить MakeFile в /dectron следующим образом:

# Don't use the --user flag for setup.py develop mode with virtualenv.
DEV_USER_FLAG=$(shell python -c "import sys; print('' if hasattr(sys, 'real_prefix') else '--user')")
PYTHON_EXE=/home/[username]/anaconda3/envs/[myenv]/bin/python2.7

.PHONY: default
default: dev

.PHONY: install
install:
    $(PYTHON_EXE) setup.py install

.PHONY: ops
ops:
    mkdir -p build && cd build && cmake .. && make -j$(shell nproc)

.PHONY: dev
dev:
    $(PYTHON_EXE) setup.py develop $(DEV_USER_FLAG)

.PHONY: clean
clean:
    $(PYTHON_EXE) setup.py develop --uninstall $(DEV_USER_FLAG)
    rm -rf build

Это позволит команде make выполнить командуиспользуйте python из требуемого enaconda env и соответствующей Cython установки

...