mmdetectionをubuntuにインストールする

# 手順の概要

1. anacondaで仮想環境を作る
1. pytorchをインストールする
1. cudaとnvccをインストールする
1. mmengineをインストールする
1. mmcvをインストールする
1. mmdetectionをインストールする
1. mmdetectionで自作データセットの学習を行うためのヒント

# anacondaで仮想環境を作る
anacondaのbaseには基本的に何もインストールしない．
そこで，baseとは異なる新しい仮想環境を作る必要がある．
以下のコマンドで新しい仮想環境を作れる．
ただし，pythonのバージョンが古いとpytorchのインストールでGPU版をインストールできなくなることがある．pytorchのインストールができなかったらpythonのバージョンをあげることも考えること．

```
$ conda create -n [仮想環境名] python=[3.X]
```

ここでは，以下のコマンドで新しい仮想環境を作ることにする．

```
$ conda create -n mmdet python=3.11
```

新しい仮想環境に移動するには次のようなコマンドを打つ．

```
$ conda activate mmdet
(mmdet)$
```

# pytorchをインストールする

まずは，GPUのドライバのバージョンを確認する．
一番上の行の右側にCUDA Versionがあるので，そこを確認しておく．
```
(mmdet)$ nvidia-smi
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 550.54.14    Driver Version: 550.54.14    CUDA Version: 12.4     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  NVIDIA GeForce ...  On   | 00000000:08:00.0 Off |                  N/A |
|  0%   41C    P8    42W / 390W |     99MiB / 24576MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|    0   N/A  N/A      1224      G   /usr/lib/xorg/Xorg                 86MiB |
|    0   N/A  N/A      1937      G   /usr/bin/gnome-shell               10MiB |
+-----------------------------------------------------------------------------+

```


次に，以下のURLからpytorchのサイトにアクセスする．
https://pytorch.org/get-started/previous-versions/

`nvidia-smi`を実行したときに右上にでるcudaのバージョンよりも低いcudaのバージョンのpytorchを使えば良い
今回は**torch v2.1.2**をインストールする．
**pipでインストール予定の場合，インストールしたいmmcvのバージョンに対応するpytorchをインストールすること．（自分でbuildする場合やmimの場合は関係なし）**
以下のサイトで対応を確認できる．
https://mmcv.readthedocs.io/en/latest/get_started/installation.html#install-with-pip

Linuxの中のCUDA 11.8直下のコマンドをUbuntuのteminalにコピペ&実行する
```
$ conda install pytorch==2.1.2 torchvision==0.16.2 torchaudio==2.1.2 pytorch-cuda=11.8 -c pytorch -c nvidia
```

# cudaとnvccをインストールする
以下のコマンドを打って，11.8が出ない場合，この章を読むこと．
```
(mmdet) $ nvcc -V
```

cudaとnvccをインストールするには，以下のコマンドを打てばよい．
今回はcudaのバージョンが11.8なので，11.8のバージョンをインストールする．
```
(mmdet)$ conda install nvidia/label/cuda-11.8.0::cuda
```

# mmengineをインストールする
mmengineのgithubのリポジトリからcloneして，インストールする．
以下のコマンドを実行すればよい．
```
(mmdet)$ git clone https://github.com/open-mmlab/mmengine.git
(mmdet)$ cd mmengine
(mmdet)$ pip install -e . -v
(mmdet)$ cd ..
```

もしくは以下のコマンドを実行してもよい．
```
(mmdet)$ pip install -U openmim
(mmdet)$ mim install mmengine
```

# mmcvをインストールする
mmcvのgithubのリポジトリからcloneして，インストールする．
以下のコマンドを実行すればよい．
エラーがなければ，そのまま次に進む．
```
(mmdet)$ git clone https://github.com/open-mmlab/mmcv.git
(mmdet)$ cd mmcv
(mmdet)$ pip install -r requirements/optional.txt
(mmdet)$ pip install -e . -v
(mmdet)$ python .dev_scripts/check_installation.py
(mmdet)$ cd ..
```

もしくは以下のコマンドを実行してもよい．
```
(mmdet)$ mim install "mmcv>=2.0.0"
```

:::note info
2024年5月8日では，mmcv v2.2.0とmmdetection v3.3.0をインストール後にmmdetectionを実行するとエラーがでます．その時は以下のコマンドを実行してください．
:::

gitからcloneした場合
```
(mmdet)$ cd mmcv
(mmdet)$ pip uninstall mmcv
(mmdet)$ git checkout -b v2.1.0 57c4e25
(mmdet)$ pip install -e . -v
(mmdet)$ python .dev_scripts/check_installation.py
(mmdet)$ cd ..
```

mimでインストールした場合
```
(mmdet)$ mim uninstall mmcv
(mmdet)$ mim install "mmcv>=2.0.0,<2.2"
```

# mmdetectionをインストールする
mmdetectionのgithubのリポジトリからcloneして，インストールする．
以下のコマンドを実行すればよい．
```
(mmdet)$ git clone https://github.com/open-mmlab/mmdetection.git
(mmdet)$ cd mmdetection
(mmdet)$ pip install -v -e .
(mmdet)$ cd ..
```

# mmdetectionで自作データセットの学習を行うためのヒント
configファイルの解説
https://mmdetection.readthedocs.io/en/latest/user_guides/config.html

自作データセットのためのConfigの書き換え
https://mmdetection.readthedocs.io/en/latest/user_guides/train.html#train-with-customized-datasets
https://mmdetection.readthedocs.io/en/latest/user_guides/finetune.html

open mmlabのプロジェクトの実装が気になったら以下のサイトを見るとよいだろう．
https://mmengine.readthedocs.io/en/latest/get_started/15_minutes.html