MMDetection是一款優秀的基於PyTorch的深度學習目標檢測工具箱,由香港中文大學(CUHK)多媒體實驗室(mmlab)開發。基本上支持所有當前SOTA二階段的目標檢測算法,比如faster rcnn,mask rcnn,r-fcn,Cascade-RCNN等。讀者可在 PyTorch 環境下測試不同的預訓練模型及訓練新的檢測分割模型。
根據 GitHub 項目所述,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"
注意:
我們提供了一個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,並且你想交替使用它們,則建議的方法是創建多個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