Руководство по компиляции Maskrcnn-Benchmark (Windows10+Python3.7+pytorch1.2.0+Cuda10.1)

компьютерное зрение

Опечатки

Версия pytorch1.1.0 действительно может нормально компилировать и запускать демоверсию и даже запускать test_net.py. Но во время обучения будет выброшено исключениеtorch.nonzero _th_or not supported on CUDAType for Bool. Проверив соответствующую информацию в Интернете, я обнаружил, что для поддержки torch.bool() необходимо использовать версию pytorch1.2.0, поэтому после обновления pytorch до 1.2.0 train_net.py работает нормально. Все нижеследующее использует версию 1.2.0, здесь исправлены ошибки.

Версия

  • Питон: 3.7
  • Факел: 1.2.0 (важно)

Поскольку версия torch была только что выпущена до версии 1.0.1, когда был выпущен maskrcnn,Инструкция по установкеНаписано, что надо использовать версию 1.0.0NightRelease, а сейчас этот факел выпущен до версии 1.4, какую версию мне использовать для его компиляции, меня очень смущает. В итоге на практике было установлено, что версия 1.2.0 может быть успешно скомпилирована, и эта версия также должна соответствовать некоторым функциям версии 1.0.0-NightRelease.

conda install pytorch==1.2.0 torchvision==0.4.0 cudatoolkit=10.0 -c pytorch

компилятор GCC

Сначала я использовал MINGW32 в Anaconda, но он продолжал компилировать и сообщать об ошибках, и, наконец,существуетОфициальный сайтСкачал и установил Mingw, и, наконец, может быть успешно использован.

Скомпилировать cocoAPI

Обязательно следуйте официальной документации

#To prevent installation error do the following after commiting cocooapi :
#using file explorer  naviagate to cocoapi\PythonAPI\setup.py and change line 14 from:
#extra_compile_args=['-Wno-cpp', '-Wno-unused-function', '-std=c99'],
#to
#extra_compile_args={'gcc': ['/Qstd=c99']},
#Based on  https://github.com/cocodataset/cocoapi/issues/51

Измените setup.py и скомпилируйте, иначе будет сообщено об ошибке

Скомпилировать АПЕКС

При компиляции Apex, поскольку pytorch1.0.0 использует CUDA10.0, а я установил CUDA10.1 локально, будет выведено сообщение о конфликте версий. Решение: Закомментируйте строку 106 в apex/setup.py и отмените проверку версии для успешной компиляции.

if "--cuda_ext" in sys.argv:
    from torch.utils.cpp_extension import CUDAExtension
    sys.argv.remove("--cuda_ext")

    if torch.utils.cpp_extension.CUDA_HOME is None:
        raise RuntimeError("--cuda_ext was requested, but nvcc was not found.  Are you sure your environment has nvcc available?  If you're installing within a container from https://hub.docker.com/r/pytorch/pytorch, only images whose names contain 'devel' will provide nvcc.")
    else:
        # 注释掉这句
        # check_cuda_torch_binary_vs_bare_metal(torch.utils.cpp_extension.CUDA_HOME)

Скомпилировать MaskrcnnBenchmark

Пока нет проблем с предыдущим процессом, этот шаг также может пройти компиляцию без проблем. Самое главное, чтобы версия факела и версия CUDA соответствовали версии, используемой кодом. В то же время автор не может нормально скомпилировать с помощью MINGW от Anaconda и может нормально скомпилировать только с помощью GCC, загруженного с веб-сайта, упомянутого в статье выше.

запустить демонстрацию

Для того, чтобы убедиться в правильности компиляции, запустим демо

Проблема с PIL-версией

ImportError: cannot import name 'PILLOW_VERSION' from 'PIL' (H:\Anaconda3\envs\maskrcnn\lib\site-packages\PIL\__init__.py)

Изменен PIL на 6.2.1

pip install --user Pillow==6.1

Ссылаться на:

GitHub.com/Python-таблетка…

ДЕМО работает успешно