#これは何
2021年で最もイケている物体検出フレームワークと言っても過言ではないIceVisionを手元環境で実行するためのメモ
#IceVisionとは
Mobility Technologyさんによる解説記事に詳しい。(2021/7/14時点で日本語文献がこれ以外に存在しない?)
PyTorch-Lightning/fastaiを用いた物体検出フレームワークであり、複雑怪奇なgithubを読んでも実装がよくわからない物体検出手法を同一のmoduleで扱えるようにしよう、という設計思想です。
MMDetectionとDetectron2やPytorchのpretrainedモデルに比べ、最先端のモデルが実装される点にメリットがあります。(現状はMMDetectionの実装+Torchvisionの実装+EfficientDet+YOLOv5があるようです。また、timmも近々追加されるようです。)
これがあれば最新の物体検出手法が一気に試せる!
#動機
公式のinstallationが一般人である私には難しかった。
Google Colab上で長時間の学習を行うのは避けたかった。
#環境
Windowsでのインストールがサポートされていないようなので、わざとWindowsを使ってインストールを行う。
Ryzen Threadripper 3970X
Nvidia RTX A6000
RAM 256 GB, Storage NVMe SSD 2 TB
Windows 11 pro (21H2, build:22000.65)
#手順
まず、今回はカスタムデータセットでの学習を行うことを最終目標としているため、CUDA on WSL2を使える状態にしておく。多分今使えるdeveloper modeはWindows 11のみになっている。WSLとしてUbuntu20.04を利用。
まずはcondaで環境を作る。(Windows11上のWSL-CUDA上のdockerを扱いたくなかったため。)
conda -V
#conda 4.10.1
conda create -n icevision-dev python=3.7
conda activate icevision-dev
なんかwsl上のcondaは動きが遅い気がします。色々大変なんでしょうか。
pycocotoolsは執筆時になぜかpipで入れられなかったため、condaで入れました。
conda install -c conda-forge -y pycocotools
続けて、環境の依存関係をあまり考えたくなかったのでgoogle colab用のシェルスクリプトを流用します。ここでPytorchと一緒にcudatoolkitを指定して入れるから、WSL立てたあとに入れなくてもいいっぽい?
GPUがAmpereなのでcu111を使っていますが、執筆時点でのcolab用シェルスクリプトではcu102が使われていました。
pip install PyYAML
pip install datascience
pip install tensorflow==2.4.0
pip install torch==1.8.1+cu111 torchvision==0.9.1+cu111 torchaudio==0.8.1 torchtext==0.9.1 -f https://download.pytorch.org/whl/lts/1.8/torch_lts.html
python -c "import torch; print(torch.cuda.is_available()); print(torch.cuda.get_device_name())"
# True
# Nvidia RTX A6000
python -c "import torch;print(torch.max(torch.rand((30,30),device='cuda')))"
# tensor(0.9998, device='cuda:0')みたいな感じ
pip install fastai==2.3.1
pip install icevision[all]
pip install icedata
pip install yolov5-icevision
pip install mmcv-full==1.3.7 -f https://download.openmmlab.com/mmcv/dist/cu111/torch1.8.0/index.html
pip install mmdet==2.13.0
これで環境ができるはず。
#追記
現状のWindows11では、なぜかjupyter上でのimportができない(そのほかではできる)ようです。