Detectron2 入门

本文档简要介绍 detectron2 中内置命令行工具的使用方法。

有关涉及使用 API 进行实际编码的教程,请参阅我们的 Colab 笔记本,其中涵盖了如何使用现有模型进行推理,以及如何在自定义数据集上训练内置模型。

使用预训练模型进行推理演示

  1. 模型库 中选择一个模型及其配置文件,例如 mask_rcnn_R_50_FPN_3x.yaml

  2. 我们提供了 demo.py,它可以演示内置配置。使用以下命令运行它:

cd demo/
python demo.py --config-file ../configs/COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x.yaml \
  --input input1.jpg input2.jpg \
  [--other-options]
  --opts MODEL.WEIGHTS detectron2://COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x/137849600/model_final_f10217.pkl

这些配置是为训练而设计的,因此我们需要将 MODEL.WEIGHTS 指定为模型库中的模型以进行评估。此命令将运行推理并在 OpenCV 窗口中显示可视化结果。

有关命令行参数的详细信息,请参见 demo.py -h 或查看其源代码以了解其行为。一些常见参数包括:

  • 在您的网络摄像头上运行,请将 --input files 替换为 --webcam

  • 在视频上运行,请将 --input files 替换为 --video-input video.mp4

  • 在 CPU 上运行,请在 --opts 之后添加 MODEL.DEVICE cpu

  • 要将输出保存到目录(对于图像)或文件(对于网络摄像头或视频),请使用 --output

命令行训练和评估

我们在“tools/plain_train_net.py”和“tools/train_net.py”中提供了两个脚本,它们旨在训练 detectron2 中提供的所有配置。您可能希望将其用作编写自己的训练脚本的参考。

与“train_net.py”相比,“plain_train_net.py”支持更少的默认功能。它还包含更少的抽象,因此更容易添加自定义逻辑。

要使用“train_net.py”训练模型,首先根据 datasets/README.md 设置相应的数据集,然后运行:

cd tools/
./train_net.py --num-gpus 8 \
  --config-file ../configs/COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_1x.yaml

这些配置是为 8 个 GPU 训练而设计的。要在 1 个 GPU 上训练,您可能需要 更改一些参数,例如:

./train_net.py \
  --config-file ../configs/COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_1x.yaml \
  --num-gpus 1 SOLVER.IMS_PER_BATCH 2 SOLVER.BASE_LR 0.0025

要评估模型的性能,请使用:

./train_net.py \
  --config-file ../configs/COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_1x.yaml \
  --eval-only MODEL.WEIGHTS /path/to/checkpoint_file

有关更多选项,请参见 ./train_net.py -h

在代码中使用 Detectron2 API

请参阅我们的 Colab 笔记本 以了解如何使用 detectron2 API 来:

  1. 使用现有模型进行推理

  2. 在自定义数据集上训练内置模型

请参阅 detectron2/projects,了解有关如何在 detectron2 上构建项目的更多方法。