MMDetection 支持在 Linux,Windows 和 macOS 上運行。它需要 Python 3.7 以上,CUDA 9.2
以上和 PyTorch 1.8 及其以上。
MMDetection 至今也一直更新很多個版本了,但是對于最新的pytorch版本仍然不支持,我安裝的時候仍然多次遇到mmcy與pytorch版本不對應的情況,因此總結以下可用的安裝方案。
1、創建并激活Conda
虛擬環境
conda create --name openmmlab python=3.8 -y
conda activate openmmlab
2、安裝Pytorch
首先查看自己電腦的 CUDA 版本
nvidia-smi
輸出:
可以看到當前系統安裝了 NVIDIA 驅動程序(版本 570.124.04),并且有兩個 NVIDIA RTX A5500
GPU,CUDA 版本為 12.8。
我的是 CUDA12.8
,但是安裝與 12.8 對應的 Torch
時,后面會出現與 mmcv
版本不匹配的問題,從而導致安裝失敗。
因此,我在這里選擇了 CUDA 11.8
版本的 Torch
,pytorch 的下載鏈接在這里(PyTorch 以前版本),往下拉,選擇合適的 pytorch
。雖然現在已經到了 2.X
的 PyTorch,但是 mmcv
的版本更新并沒有 PyTorch 快,因此,為了與 mmcv
保持版本對應一致,這里選擇了 2.1.0
版本的 Torch
。
# CUDA 11.8
conda install pytorch==2.1.0 torchvision==0.16.0 torchaudio==2.1.0 pytorch-cuda=11.8 -c pytorch -c nvidia
安裝成功后可以通過以下命令查看安裝的版本信息:
conda list torch
可以看到我在虛擬環境中再安裝了一個 PyTorch 版本的 CUDA 版本:
驗證安裝是否成功:
python -c "import torch; print(torch.cuda.is_available())"
顯示為 True 則表示安裝成功,若顯示為 False 則未安裝成功,需要排查原因重新安裝。
3、安裝 mmcv
首先要安裝 mim
、 mmengine
pip install -U openmim
mim install mmengine
安裝mmcv
這里需要注意一下,因為非常容易出錯,需要選擇合適的版本,選擇版本的地址在這里(mmcv
版本),mmcv
建議不要選擇太高,最好在 2.0.0-2.1
之間。因為在上一步的安裝中,我們安裝的是 torch2.1.0
版本,這里一步選擇下拉框中的選擇 cuda11.8
,torch2.1.x
以及后面 mmcv2.1.0
,這幾個一定保持對應,否則后面再安裝完成后測試的時候,會因為版本不對應出錯。
mmcv
安裝命令:
pip install mmcv==2.1.0 -f https://download.openmmlab.com/mmcv/dist/cu118/torch2.1/index.html
當然這里也可以選擇torch別的版本,截止目前,mmdetection中mmcv支持的最高torch版本是2.1.x
4、安裝 mmdet
方案 a:如果你開發并直接運行 mmdet,從源碼安裝它:
git clone https://github.com/open-mmlab/mmdetection.git
cd mmdetection
pip install -v -e .
# "-v" 指詳細說明,或更多的輸出
# "-e" 表示在可編輯模式下安裝項目,因此對代碼所做的任何本地修改都會生效,從而無需重新安裝。
方案 b【推薦】:如果你將 mmdet 作為依賴或第三方 Python 包,使用 MIM 安裝:
mim install mmdet -i https://pypi.tuna.tsinghua.edu.cn/simple
5、驗證安裝
為了驗證 MMDetection 是否安裝正確,我們提供了一些示例代碼來執行模型推理。
步驟 1. 我們需要下載配置文件和模型權重文件。
mim download mmdet --config rtmdet_tiny_8xb32-300e_coco --dest .
下載將需要幾秒鐘或更長時間,這取決于你的網絡環境。完成后,你會在當前文件夾中發現兩個文件 rtmdet_tiny_8xb32-300e_coco.py
和 rtmdet_tiny_8xb32-300e_coco_20220902_112414-78e30dcc.pth
。
步驟 2. 推理驗證。
方案 a:如果你通過源碼安裝的 MMDetection,那么直接運行以下命令進行驗證:
python demo/image_demo.py demo/demo.jpg rtmdet_tiny_8xb32-300e_coco.py --weights rtmdet_tiny_8xb32-300e_coco_20220902_112414-78e30dcc.pth --device cpu
你會在當前文件夾中的 outputs/vis 文件夾中看到一個新的圖像 demo.jpg,圖像中包含有網絡預測的檢測框。
方案 b:如果你通過 MIM 安裝的 MMDetection,那么可以打開你的 Python 解析器,復制并粘貼以下代碼:
from mmdet.apis import init_detector, inference_detectorconfig_file = 'rtmdet_tiny_8xb32-300e_coco.py'
checkpoint_file = 'rtmdet_tiny_8xb32-300e_coco_20220902_112414-78e30dcc.pth'
model = init_detector(config_file, checkpoint_file, device='cpu') # or device='cuda:0'
inference_detector(model, 'demo/demo.jpg')
你將會看到一個包含 DetDataSample
的列表,預測結果在 pred_instance
里,包含有檢測框,類別和得分。
如果輸出以下內容,則表示安裝成功了:
雖然有個警告,但是不影響,因為沒傳save_dir參數,加上就好了
結束
到這里就算安裝完成了,下次有時間整理下我用MMDetection訓練自己的實例分割數據集,以及一些模型改進優化技巧