Опечатки
Версия 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
Ссылаться на:
ДЕМО работает успешно