---
# System prepended metadata

title: MMDetection 3.1.0 在Windows上的安裝教學

---

# MMDetection 3.1.0 在Windows上的安裝教學


論文使用了MMdetection 3.1.0 來進行實作，想說順便整理一下如何安裝，之後有要重灌時會比較方便XD

官方網站，包含英文與簡體中文:

MMCV:
https://mmcv.readthedocs.io/en/latest/

MMdetection:
https://mmdetection.readthedocs.io/en/latest/

## :beginner: 系統環境

作業系統: Windows 10/11

CPU: Intel i5-12400

RAM: 32GB

顯示卡: NVIDIA GeForce RTX 3060

## 軟體版本
:::warning
官方文件顯示 MMDetection 可以安裝在 Linux、Windows 和 macOS上。


最低版本要求 Python 3.7+、CUDA 9.2+ 和 PyTorch 1.8+。
:::

顯示卡驅動: 537.42

Visual Studio Build Tools 2022

CUDA: 11.7

cuDNN: 8.9.5

---

Python: 3.8.19

Pytorch: 2.0.1

MMCV: 2.0.1

MMDetection: 3.1.0

## 安裝環境

### Anaconda
先準備Anaconda，下載網址：

https://www.anaconda.com/download/

並進行安裝，並且記得勾選PATH的選項！！！

![圖片](https://hackmd.io/_uploads/r17PcZZeR.png)


安裝完畢後，打開並切換到Environments，創立新環境，選擇Python為3.8版

![圖片](https://hackmd.io/_uploads/S1tLhFtkA.png)

切換回HOME，並點選CMD.exe Prompt進行安裝，此為接下來負責安裝套件的重要程式。

![圖片](https://hackmd.io/_uploads/HkifpYYJ0.png)

點擊Launch或在開始功能表點擊Anaconda Prompt即可開啟命令提示字元

![圖片](https://hackmd.io/_uploads/HyEP0tKJR.png)

如圖，有在路徑前方顯示(環境名稱)即為安裝完畢。

![圖片](https://hackmd.io/_uploads/B14UAKty0.png)

___
### 顯示卡驅動 

此文使用GPU進行神經網路訓練，首先必須先安裝顯示卡的驅動程式。

https://www.nvidia.com/zh-tw/geforce/drivers/

通常使用最新的就可以了，不要裝到太舊版本就好。

搜尋NVIDIA Control Panel (NVIDIA控制面板)，在系統資訊區可以查看顯示卡版本。

![圖片](https://hackmd.io/_uploads/By0RAYty0.png)

___

## Visual Studio

因為MMCV需要使用Visual Stduio的C++工具進行編譯，所以要先安裝Visual Studio。

https://visualstudio.microsoft.com/zh-hant/

在微軟官網即可下載安裝檔，

![image](https://hackmd.io/_uploads/rJCY6ZWlC.png)

並選擇C++內的MSVC編譯工具以及Win 10 SDK(10.0.20348.0)進行安裝。

![image](https://hackmd.io/_uploads/HkXb0ZbxC.png)

![image](https://hackmd.io/_uploads/BJ6kabBgC.png)

安裝完畢後，去Visual Studio的安裝檔位置尋找MSVC的路徑，並確認是否有cl.exe。

以下為我電腦的路徑，實際情況可能會有版本號的不同：

```
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.39.33519\bin\Hostx86\x64
```

打開本機，顯示硬碟空間大小的頁面，在空白處按下右鍵，

![image](https://hackmd.io/_uploads/H1rIlfbl0.png)


並選擇內容後，選擇左方(Win10)或中間(Win11)的進階系統設定。

![Win10](https://hackmd.io/_uploads/rJy5gG-x0.png)

![Win11](https://hackmd.io/_uploads/Hy8ilMZlC.png)

下方有一個系統變數，點開後在系統區找到Path，點選編輯，會顯示一個新視窗。

![image](https://hackmd.io/_uploads/SkCZWf-eR.png)

將此路徑新增到系統的Path內，並儲存確定。

![image](https://hackmd.io/_uploads/SygXZMbx0.png)

![image](https://hackmd.io/_uploads/ByIP-MbgC.png)


如果原本有已經開啟的CMD，要先關閉後再重新開啟，才會吃到已經修改過的系統變數。

開啟CMD，並輸入 `cl` ，如果有出現MSVC的資訊代表安裝成功。

![image](https://hackmd.io/_uploads/BJIDGz-lC.png)


---

## CUDA

安裝完顯示卡驅動後，必須先看適用的CUDA版本。

不管是Tensorflow還是Pytorch，皆會有對應的版本，

如果沒安裝對應版本是無法進行訓練的。

為了配合Pytorch，在這裡使用CUDA 11.7進行安裝，也可使用11.8版本。

https://developer.nvidia.com/cuda-toolkit-archive

![圖片](https://hackmd.io/_uploads/BkZcqFKJC.png)

點選後選擇電腦對應的版本進行下載並安裝。

![圖片](https://hackmd.io/_uploads/SySSqtt1A.png)

選擇自訂，如果另外兩個選項已經有安裝在電腦上，就只需要安裝CUDA本體即可。

![image](https://hackmd.io/_uploads/ByE-aWWl0.png)


安裝完畢後，測試是否有安裝成功，打開先前環境的命令提示字元(CMD)，

並輸入`nvcc -V`，如有顯示CUDA即為安裝成功。

![圖片](https://hackmd.io/_uploads/HyEE1ctyA.png)

___
## cuDNN

cuDNN需要配合CUDA的版本，我個人會使用不那麼新的版本，以免出現未知的錯誤。

下載連結:
https://developer.nvidia.com/rdp/cudnn-archive

在版本號後面會顯示這個cuDNN所適用的版本，我使用8.9.5版，可用在CUDA11版本。

 ![image](https://hackmd.io/_uploads/rk4g2-WgA.png)

下載完畢後解壓縮會看到三個資料夾與一個LICENSE，

![image](https://hackmd.io/_uploads/Hko-QfZgR.png)


先尋找CUDA的資料夾位置，

```
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7
```

再把他們全放進CUDA的程式資料夾內，並新增系統路徑。

![image](https://hackmd.io/_uploads/rJ97NG-l0.png)



再點選新增，並重複先前的新增系統變數動作，加入下列三行系統路徑。


```
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7\bin
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7\include
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7\lib
```

![image](https://hackmd.io/_uploads/HJRTXz-lR.png)

新增完畢後，點選確定進行存檔，等等安裝Pytorch時，會一併檢查安裝狀態。

## Pytorch

接下來是重頭戲Pytorch，如果沒有與先前的CUDA配合好，安裝失敗的話就只能使用CPU進行訓練。

本文使用Pytorch 2.0.1版本進行安裝，連結:

https://pytorch.org/get-started/previous-versions/#v201

選擇Windows下的對應Cuda版本進行安裝，這裡使用11.7版本。

打開包含Python環境的CMD，開頭會包含(環境名稱的)，並輸入以下的指令，


```
# CUDA 11.7 版本
conda install pytorch==2.0.1 torchvision==0.15.2 torchaudio==2.0.2 pytorch-cuda=11.7 -c pytorch -c nvidia

```

即可進行Pytorch的安裝，安裝完畢後需進行驗證。

直接輸入`python`後，進入指令執行介面，並分別輸入以下兩行指令。

```
import torch
torch.cuda.is_available()
```

如果出現回傳為 `True` ，代表Cuda有安裝成功，可以繼續下一個步驟。
![image](https://hackmd.io/_uploads/BybIcr-l0.png)

:::warning
假設出現回傳為 `False` ，請檢查前面是否有什麼步驟並沒有安裝成功。
:::

在False的情況下繼續安裝，雖然通常可以繼續運作，但會使得MMDetection只使用CPU進行運算，速度與效率會非常的差。

確認完畢後，輸入 `exit()` 離開python執行介面回到cmd中。

## MMCV

終於要開始安裝本體了！！XDDD

雖然官方網站是推薦使用他們的 `openmim` 套件進行MMCV的安裝，但對於電腦本身沒有安裝好MSVC的人，經常會出現顯示安裝完畢，但實際上並沒有成功的情況。我自己電腦就是本身就有，安裝就成功了，結果幫同學安裝卻失敗QQ。

所以在這邊我們改採用從來源Source檔直接編譯的方式進行，需要用到前面所安裝的MSVC套件，

假設出現問題，也相對容易除錯。

目前最新的MMCV版本為2.1.0，但因為版本間也有支援問題，改採用2.0.1版本進行安裝。

參考連結：

https://mmcv.readthedocs.io/en/latest/get_started/build.html#build-on-windows

因為使用的是特定版本，直接使用 `git clone` 的話預設會拉到最新版檔案，

所以這邊為打開Github的網站下載舊版。

https://github.com/open-mmlab/mmcv

點選網站右側的Releases，

![image](https://hackmd.io/_uploads/ByVtar-gA.png)

並找到2.0.1版下方的Assets，

![image](https://hackmd.io/_uploads/HynT6rWxC.png)

![image](https://hackmd.io/_uploads/r1X1AHZg0.png)

點選zip檔進行下載，並解壓縮，放置在以下路徑，

```
C:\Users\你的使用者名稱
```


為了方便作業，解壓縮後把後面的版本號碼刪除。

:::warning
必須注意，點開mmcv資料夾時不要讓資料夾內是兩層，如果有兩層的話，

把外層刪掉，讓我們點開mmcv時就會直接看到裡面一堆檔案。
:::

![image](https://hackmd.io/_uploads/SkIx1U-g0.png)

更改好資料夾名稱，點開後會如圖所示，不會有資料夾中又包一層資料夾的問題。

點開剛才已經安裝好環境的cmd，並輸入
```
cd mmcv
```

切換到剛才下載的mmcv資料夾。並先安裝第一部分需要的套件`ninja` 和 `psutil`，

```
pip install -r requirements/optional.txt
```

安裝完畢後，繼續執行以下兩個指令。

如果成功執行的話，會看到MSVC開始進行程式碼建構。

```
python setup.py build_ext
```

在執行過程中出現一堆如圖所示的訊息是正常的，代表程式正在建構。
![image](https://hackmd.io/_uploads/S1cr6WreC.png)

![image](https://hackmd.io/_uploads/BkdT6WSgC.png)

出現已完成程式碼產生，代表建構完畢後，輸入

```
pip install matplotlib==3.7.2
python setup.py develop
```

安裝第二部分的套件。

因為預設會安裝過新的matplotlib 3.9.0，與我們的環境不符合，

所以先安裝3.7.2板後再完成MMCV的安裝。

![image](https://hackmd.io/_uploads/Byz30WBgA.png)


安裝完畢後輸入

```
python .dev_scripts/check_installation.py
```

進行安裝的驗證，

![image](https://hackmd.io/_uploads/SyrR0bSl0.png)

驗證如果顯示Successfully即為安裝成功。

## MMDetection

:::warning
一定要確認MMCV已經安裝成功，GPU支援也確定成功後，再繼續安裝MMDetection。
:::

最後為安裝MMDetection本體，首先按照目前教學時，cmd的位置應該是在mmcv底下，如圖：

![image](https://hackmd.io/_uploads/rJGc1fBe0.png)

必須先輸入 `cd ..` 切換為上一層資料夾後再繼續動作。

![image](https://hackmd.io/_uploads/HySAkGBlC.png)

因為也是安裝舊版，去GitHub尋找檔案。

https://github.com/open-mmlab/mmdetection/releases/tag/v3.1.0

拉到最下面後點選Source Code進行下載。

![image](https://hackmd.io/_uploads/SyoCxGrgA.png)

拉到使用者目錄下，與mmcv放在一起，將版本號刪除，也同樣確認不要有資料夾內又包一層資料夾。

點開時如圖顯示的樣子。

![image](https://hackmd.io/_uploads/Bk-YZfHxC.png)


回到CMD，輸入以下兩行指令：
```
pip install -U openmim
mim install mmengine
```

安裝完畢後，切換到mmdetection資料夾，並安裝本體。

```
cd mmdetection
pip install -v -e .
```

官方推薦安裝以下的套件，可以拿來監測網路。

```
pip install -v -e . -r requirements/tracking.txt
pip install git+https://github.com/JonathonLuiten/TrackEval.git
```

安裝完畢後，官方提供了一個神經網路驗證是否安裝成功。
```
mim download mmdet --config rtmdet_tiny_8xb32-300e_coco --dest .

python demo/image_demo.py demo/demo.jpg rtmdet_tiny_8xb32-300e_coco.py --weights rtmdet_tiny_8xb32-300e_coco_20220902_112414-78e30dcc.pth
```
有顯示result have been saved at outputs，並且在mmdetection/outputs資料夾內，

內有出現辨識的檔案即為成功。

![螢幕擷取畫面 2024-04-11 213417](https://hackmd.io/_uploads/H1QfvwBg0.png)

## 用途

安裝完畢後，即可開始使用config資料夾內所提供的各個神經網路架構來進行神經網路訓練。

官方有提供介紹，未來應該也會寫文介紹(?)，

可參考： https://mmdetection.readthedocs.io/en/latest/user_guides/train.html#train-with-customized-datasets


## 參考文獻

https://medium.com/ching-i/win10-%E5%AE%89%E8%A3%9D-cuda-cudnn-%E6%95%99%E5%AD%B8-c617b3b76deb

https://pytorch.org/get-started/locally/