mmdetection 是由商汤科技和香港中文大学基于 PyTorch 开源的一个深度学习目标检测工具。该工具包含多种检测算法,例如 RPN、Fast R-CNN、Faster R-CNN、Mask R-CNN、SSD 和 RetinaNet,以及 Cascade R-CNN。此外,它还提供了多种骨干网络,如 ResNet、ResNeXt、SENet、VGG 和 HRNet,以及其他特性如 DCN、Group Normalization、Soft-NMS 和 Generalized Attention。
mmdetection 曾经成为目标检测竞赛的重要工具。
你可以从 GitHub 上的 MODELZOO 文件中下载预训练模型。这些模型是基于 COCO2017train 数据集训练,并在 COCO2017_val 上进行评估的。训练过程中使用了 8 块 NVIDIA Tesla V100 GPU,每个批次大小为 16(每块显卡 2 张图片)。默认的下载地址可能较慢,建议使用阿里云镜像加速下载,将链接中的 https://s3.ap-northeast-2.amazonaws.com/open-mmlab 改为 https://open-mmlab.oss-cn-beijing.aliyuncs.com。
首先,安装 Anaconda:
bash
conda create -n open-mmlab python=3.7 -y
conda activate open-mmlab
接着,安装 PyTorch:
bash
conda install pytorch torchvision -c pytorch
如果你使用的是 CUDA 9.0,可以使用以下命令安装特定版本的 PyTorch:
bash
conda install pytorch==1.1.0 torchvision==0.3.0 cudatoolkit=9.0 -c pytorch
然后,下载并安装 mmdetection 项目:
bash
git clone https://github.com/open-mmlab/mmdetection.git
cd mmdetection
pip install mmcv
python setup.py develop
如果在安装 mmcv 时遇到问题,可能是由于 pip 源的问题,可以尝试更换 pip 源。
首先,根据提供的模型下载地址下载预训练模型。以下是一个示例代码,展示了如何使用预训练模型进行目标检测:
```python from mmdet.apis import initdetector, inferencedetector, show_result import mmcv
configfile = 'configs/fasterrcnnr50fpn1x.py' checkpointfile = 'checkpoints/fasterrcnnr50fpn1x_20181010-3d1b3351.pth'
model = initdetector(configfile, checkpoint_file, device='cuda:0')
img = 'test.jpg' # 或者 img = mmcv.imread(img),这只会加载一次 result = inference_detector(model, img)
showresult(img, result, model.CLASSES) showresult(img, result, model.CLASSES, out_file='result.jpg')
video = mmcv.VideoReader('video.mp4') for frame in video: result = inferencedetector(model, frame) showresult(frame, result, model.CLASSES, wait_time=1) ```
如果你希望在一个自定义的数据集上训练一个目标检测模型,首先需要标记数据。可以使用 labelme 或 labelImg 工具进行标注。
使用 mmdetection/mmdet/datasets/custom.py 类来加载数据。数据格式如下:
json
[
{
'filename': 'a.jpg',
'width': 1280,
'height': 720,
'ann': {
'bboxes': (n, 4),
'labels': (n, ),
'bboxes_ignore': (k, 4), # 可选字段
'labels_ignore': (k, 4) # 可选字段
}
},
...
]
根据选择的模型,在 mmdetection/configs/ 目录下找到对应的配置文件,根据需求修改参数和网络结构。特别注意 datasettype 参数,根据数据格式进行修改。例如,如果使用 custom.py 文件,则需要将 datasettype 设置为 'CustomDataset'。
其他重要参数包括:
单个 GPU 训练:
bash
python tools/train.py ${CONFIG_FILE}
多 GPU 训练:
bash
./tools/dist_train.sh ${CONFIG_FILE} ${GPU_NUM}
可选参数:
以上是改写后的内容,确保符合你的要求。