コンテンツにスキップ

Top

Windows 10 の WSL2 上 の Ubuntu 20.04 で Detectron2 をインストール

Detectron2 をインストールするのは容易で、公式HPにある、

python -m pip install 'git+https://github.com/facebookresearch/detectron2.git'

で終わり。

と言いたいのだが、2022年5月現在、いろいろ問題がおきまくってぜんぜんうまくいかなかったので解決方法を記述する。

ninjaがいないと怒られる

Ninjaが必要だと。

sudo apt install -y ninja-build

wheelがいないと怒られる

wheel無いって。

pip install wheel

pycocotools でコンパイルエラー

command: /usr/bin/python3 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-bnn8kw21/pycocotools_f13f62aaf49546019dc9923edf4326fe/setup.py'"'"'; file='"'"'/tmp/pip-install-bnn8kw21/pycocotools_f13f62aaf49546019dc9923edf4326fe/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(file);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, file, '"'"'exec'"'"'))' bdist_wheel -d /tmp/pip-wheel-zbqqcdat

エラーになるのがおかしいのだけど、みんな、別途インストールすることで回避してるから別途インストール。

pip install pycocotools

pipが古いせいでコンパイルエラー

さらになんかエラーになるけど、pipが古いと起きるんだって。

Building wheel for detectron2 (setup.py) ... error ERROR: Command errored out with exit status 1:

ので、バージョンを最新のを指定してインストール。

pip install pip==22.1.2

CUDAのバージョンおかしいって!

2022年5月現在、Nvidiaの公式ページに従ってWSL用のCUDAを入れると11.7になる。
が、

      RuntimeError:
      The detected CUDA version (11.7) mismatches the version that was used to compile
      PyTorch (11.3). Please make sure to use the same CUDA versions.

と、11.3をご所望のよう。

なので、11.3を入れる。

wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-wsl-ubuntu.pin
sudo mv cuda-wsl-ubuntu.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/11.3.1/local_installers/cuda-repo-wsl-ubuntu-11-3-local_11.3.1-1_amd64.deb
sudo dpkg -i cuda-repo-wsl-ubuntu-11-3-local_11.3.1-1_amd64.deb
sudo apt-key add /var/cuda-repo-wsl-ubuntu-11-3-local/7fa2af80.pub
sudo apt-get update
sudo apt-get -y install cuda

wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-ubuntu2004.pin
sudo mv cuda-ubuntu2004.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/11.3.1/local_installers/cuda-repo-ubuntu2004-11-3-local_11.3.1-465.19.01-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu2004-11-3-local_11.3.1-465.19.01-1_amd64.deb
wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-keyring_1.0-1_all.deb
sudo dpkg -i cuda-keyring_1.0-1_all.deb
sudo apt-get update
sudo apt-get -y install cuda-toolkit-11-3

export CUDA_PATH=/usr/local/cuda-11.3
echo 'export CUDA_PATH=/usr/local/cuda-11.3' >> ${HOME}/.bashrc
export LD_LIBRARY_PATH=/usr/local/cuda-11.3/lib64:${LD_LIBRARY_PATH}
echo 'export LD_LIBRARY_PATH=/usr/local/cuda-11.3/lib64:${LD_LIBRARY_PATH}' >> ${HOME}/.bashrc
export PATH=/usr/local/cuda-11.3/bin:${PATH}
echo 'export PATH=/usr/local/cuda-11.3/bin:${PATH}' >> ${HOME}/.bashrc
source ~/.bashrc

ここまでやって通らなかったら知らん。

あ、python-devないとだめかも。

sudo apt install python3-dev

Detectron2 や D2Go で Segmentation fault

Detectron2 を importしてpython実行すると Segmentation fault が。

これ、ちゃんとコンパイルせずに、以下の公式HPのInstall Pre-Built Detectron2 (Linux only) のをインストールしたせい。
https://detectron2.readthedocs.io/en/latest/tutorials/install.html

これは普通のLinux用のやつでWindows上のUbuntuのバイナリじゃないから動かしたときに Segmentation fault が発生してしまった。
PyTorchはPythonなので油断しがちだけどちょいちょいCのバイナリでてくるから。

WSL上のUbuntuやMacで Detectron2 や D2Go を使いたいならコンパイルすること。

以上!