引言
MMDetection是一款優秀的基於PyTorch的深度學習目標檢測工具箱,由香港中文大學(CUHK)多媒體實驗室(mmlab)開發。基本上支持所有當前SOTA二階段的目標檢測算法,比如faster rcnn,mask rcnn,r-fcn,Cascade-RCNN等。讀者可在 PyTorch 環境下測試不同的預訓練模型及訓練新的檢測分割模型。
根據 GitHub 項目所述,MMDetection的主要特徵可以總結為以下幾個方面:
- 模塊化設計:將檢測或者分割任務分解成幾個模塊,通過模塊的組合即可完成相應的任務。
- 支持多個框架,開箱即用:該工具包直接支持多種流行的檢測框架,如 Faster RCNN、Mask RCNN、RetinaNet 等。
- 高效:所有基礎邊界框和掩碼運算都在 GPU 上運行。不同模型的訓練速度大約比 FAIR 的 Detectron 快 5% ~ 20%。
- 技術發展水平: 達到了目前最先進的水平。
翻譯過程中難免有所疏漏,如發現錯誤,希望大家指出,謝謝支持。
目錄
- MMDetection安裝 了解如何在計算機上安裝MMDetection
- MMDetection入門 學習有關MMDetection用法的基本教程。
- 基準測試和model zoo 介紹各種模型的訓練環境和基準測試,比較不同模型訓練的各項數據。
- 技術細節 介紹訓練檢測器的主要單元:數據管道,模型和疊代管道。
- 更新日誌
安裝
安裝條件
- Linux(不正式支持Windows)
- Python 3.5+
- PyTorch 1.1或更高版本
- CUDA 9.0或更高
- NCCL 2
- GCC 4.9或更高
- mmcv(https://github.com/open-mmlab/mmcv)
我們已經測試了以下版本的作業系統和軟體:
- OS: Ubuntu 16.04/18.04 and CentOS 7.2
- CUDA: 9.0/9.2/10.0/10.1
- NCCL: 2.1.15/2.2.13/2.3.7/2.4.2
- GCC(G++): 4.9/5.3/5.4/7.3
安裝 mmdetection
a. 創建一個conda虛擬環境並激活它
conda create -n open-mmlab python=3.7 -y
conda activate open-mmlab
b. 按照官方說明安裝PyTorch和Torchvision(https://pytorch.org/) ,例如,
conda install pytorch torchvision -c pytorch
c. 克隆mmdetection存儲庫
git clone https://github.com/open-mmlab/mmdetection.git
cd mmdetection
d. 安裝構建要求,然後安裝mmdetection。(我們通過github repo安裝pycocotools而不是pypi,因為pypi版本較舊並且與最新的numpy不兼容。)
pip install -r requirements/build.txt
pip install "git+https://github.com/cocodataset/cocoapi.git#subdirectory=PythonAPI"
pip install -v -e . ## or "python setup.py develop"
注意:
- git commit的id將在步驟d中寫入版本號,例如0.6.0 + 2e7045c。該版本還將保存在經過訓練的模型中。建議你每次從github獲取一些更新時都運行步驟d。如果修改了C++/CUDA代碼,則此步驟為強制性的。
- 按照上述說明,mmdetection將安裝在dev模式下,對代碼進行的任何本地修改都將生效,而無需重新安裝它(除非你提交了一些提交並希望更新版本號)。
- 如果要使用 opencv-python-headless 來代替 opencv-python,可以在安裝MMCV之前先安裝它。
- 一些依賴關係是可選的。只需運行 pip install -v -e .,將只會安裝最低運行時間要求。要使用可選的依賴項如albumentations和imagecorruptions,並使用pip install -r requirements/optional.txt 手動安裝它們,或者在調用pip時指定所需的附加項(例如pip install -v -e .[optional])。對於額外欄位的有效鍵為:all,tests,build,和 optional。
另一個選擇: Docker Image
我們提供了一個Dockerfile(https://github.com/open-mmlab/mmdetection/blob/master/docker/Dockerfile)來構建映像。
## 使用PyTorch 1.1、CUDA 10.0和CUDNN 7.5構建圖像
docker build -t mmdetection docker/
準備數據集
建議將數據集根符號連結到$MMDETECTION/data。如果文件夾結構不同,則可能需要更改配置文件中的相應路徑。
mmdetection
├── mmdet
├── tools
├── configs
├── data
│ ├── coco
│ │ ├── annotations
│ │ ├── train2017
│ │ ├── val2017
│ │ ├── test2017
│ ├── cityscapes
│ │ ├── annotations
│ │ ├── train
│ │ ├── val
│ ├── VOCdevkit
│ │ ├── VOC2007
│ │ ├── VOC2012
必須使用cityscapesScripts工具箱(https://github.com/mcordts/cityscapesScripts)將城市景觀注釋轉換為coco格式。我們計劃提供一個易於使用的轉換腳本。目前,我們建議你遵循maskrcnn-benchmark工具箱(https://github.com/facebookresearch/maskrcnn-benchmark/tree/master/maskrcnn_benchmark/data) 中提供的說明 。使用此腳本時,所有圖像都必須移到同一文件夾中。在linux系統上,例如可以通過以下方式對火車圖像進行處理:
cd data/cityscapes/
mv train/*/*train/
從零開始的安裝腳本
這是一個完整的腳本,用於使用conda設置mmdetection並連結數據集路徑(假設你的COCO數據集路徑為$ COCO_ROOT)。
conda create -n open-mmlab python=3.7 -y
conda activate open-mmlab
conda install -c pytorch pytorch torchvision -y
git clone https://github.com/open-mmlab/mmdetection.git
cd mmdetection
pip install -r requirements/build.txt
pip install "git+https://github.com/cocodataset/cocoapi.git#subdirectory=PythonAPI"
pip install -v -e .
mkdir data
ln -s $COCO_ROOT data
使用多個MMDetection版本
如果你的機器上有多個mmdetection,並且你想交替使用它們,則建議的方法是創建多個conda環境並對不同版本使用不同的環境。
另一種方法是插入下面的代碼到主腳本(train.py,test.py或任何其他腳本運行)
import os.path as osp
import sys
sys.path.insert(0,osp.join(osp.dirname(osp.abspath(__file__)),'../'))
或者在相應文件夾的終端中運行以下命令以臨時使用當前文件夾。
export PYTHONPATH=`pwd`:$PYTHONPATH