detectron2代码运行及数据集配置

1、Detectron2入门

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

1.1、预训练模型的推理

step1:从模型Zoo中选择一个模型及其配置文件 ,例如:

mask_rcnn_R_50_FPN_3x.yaml

step2:我们提供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

实例测试:

python demo.py --config-file ../configs/COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x.yaml --input input1.jpg input2.jpg --opts MODEL.WEIGHTS ../models/model_final_f10217.pkl

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

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

  • 要在您的网络摄像头上运行,请替换为。--inputfiles--webcam

  • 要播放视频,请替换为。--inputfiles--video-inputvideo.mp4

  • 要在cpu上运行,请在之后添加。MODEL.DEVICEcpu--opts

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

1.2、命令行中的训练和评估

在“ tools / {,plain_} train_net.py”中提供了一个脚本,该脚本用于训练detectron2中提供的所有配置。可能希望将其用作编写自己的训练脚本的参考。

在环境中设置数据集环境变量,DETECTRON2_DATASETS变量值设置为:F:\dataset\coco2017,数据集结构如下:

 

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

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

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

python 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

写成一行:

python 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

对于大多数模型,不支持CPU训练。

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

cd tools
python 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

1.3、在代码中使用Detectron2 API

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

1.对现有模型进行推断

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

有关在detectron2 上构建项目的更多方法,请参见detectron2 / projects

2、设置内置数据集

Detectron2内置了对一些数据集的支持。假定数据集存在于环境变量指定的目录中 DETECTRON2_DATASETS。在该目录下,detectron2希望在下面描述的结构中查找数据集。

您可以通过设置内置数据集的位置。如果未设置,则默认为相对于您当前的工作目录。export DETECTRON2_DATASETS=/path/to/datasets./datasets

该 model zoo 包含CONFIGS并使用这些数据集内置构建机制。

2.1、用于COCO实例/关键点检测的预期数据集结构

coco/
  annotations/
    instances_{train,val}2017.json
    person_keypoints_{train,val}2017.json
  {train,val}2017/
    # image files that are mentioned in the corresponding json

您也可以使用2014年版本的数据集。

某些内置测试(dev/run_*_tests.sh)使用了COCO数据集的小版本,您可以使用下载./prepare_for_tests.sh。

2.2、PanopticFPN的预期数据集结构

coco/
  annotations/
    panoptic_{train,val}2017.json
  panoptic_{train,val}2017/  # png annotations
  panoptic_stuff_{train,val}2017/  # generated by the script mentioned below

通过以下方式安装panopticapi:

pip install git+https://github.com/cocodataset/panopticapi.git

然后,运行,从全景标记中提取语义标记。python prepare_panoptic_fpn.py

2.3、LVIS实例细分的预期数据集结构

coco/ {train,val,test}2017/ lvis/ lvis_v0.5_{train,val}.json lvis_v0.5_image_info_test.json

通过以下方式安装lvis-api:

pip install git+https://github.com/lvis-dataset/lvis-api.git

运行以准备“ cocofied” LVIS注释,以评估在COCO数据集上训练的模型。python prepare_cocofied_lvis.py

2.4、城市景观的预期数据集结构

cityscapes/
  gtFine/
    train/
      aachen/
        color.png, instanceIds.png, labelIds.png, polygons.json,
        labelTrainIds.png
      ...
    val/
    test/
  leftImg8bit/
    train/
    val/
    test/

通过以下方式安装城市景观脚本:

pip install git+https://github.com/mcordts/cityscapesScripts.git

注意:labelTrainIds.png是使用城市景观脚本创建的:

CITYSCAPES_DATASET=$DETECTRON2_DATASETS/cityscapes python cityscapesscripts/preparation/createTrainIdLabelImgs.py

实例细分不需要它们。

2.5、Pascal VOC的预期数据集结构

VOC20{07,12}/
  Annotations/
  ImageSets/
    Main/
      trainval.txt
      test.txt
      # train.txt or val.txt, if you use these splits
  JPEGImages/

3、扩展Detectron2的默认值

研究是以新的方式做事。这给如何在代码中创建抽象带来了压力,这对于任何规模很大的研究工程项目都是一个挑战:

一方面,它需要具有非常薄的抽象,以允许以新方式进行所有操作。打破现有的抽象并将其替换为新的抽象应该相当容易。

另一方面,这样的项目也需要合理的高级抽象,以便用户可以轻松地以标准方式执行操作,而不必担心仅某些研究人员关心的细节。

在detectron2中,有两种类型的接口可以共同解决这种压力:

1、带有config(cfg)参数的函数和类(有时只有几个额外的参数)。

这些函数和类实现“标准默认”行为:它将从配置中读取所需内容并执行“标准”操作。用户只需要加载一个给定的配置并传递它,而不必担心使用了哪些参数以及它们的含义。

2、具有定义明确的自变量的函数和类。

这些都是整个系统的一个很小的组成部分。他们需要用户的专业知识来理解每个参数应该是什么,并且需要付出更多的努力才能将它们组合成一个更大的系统。但是它们可以以更灵活的方式缝合在一起。

当您需要实现detectron2所包含的“标准默认值”不支持的功能时,可以重复使用这些定义明确的组件。

3、(实验性的)一些类通过 @configurable 装饰器实现-可以使用config或显式参数来调用它们。它们的显式参数接口目前处于试验阶段,可能会发生变化。

如果仅需要标准行为,则“ 初学者的教程” 就足够了。如果需要将detectron2扩展到自己的需要,请参阅以下教程以了解更多详细信息:

  • Detectron2包含一些标准数据集。要使用自定义数据集,请参阅 使用自定义数据集

  • Detectron2包含创建用于从数据集中进行训练/测试的数据加载器的标准逻辑,但是您也可以编写自己的逻辑。请参阅使用自定义数据加载器

  • Detectron2实现许多标准的检测模型,并为您提供覆盖其行为的方法。请参见使用模型编写模型

  • Detectron2提供了默认的训练循环,适用于常见的训练任务。您可以使用挂钩自定义它,也可以编写自己的循环。见训练

detectron2配置安装,总目录

1、coco数据集下载格式解析

2、win10下detectron2环境配置

3、windows10离线安装pycocotools

4、detectron2代码运行及数据集配置

5、detectron2使用自定义数据集及数据加载

6、detectron2模型使用、读写、训练及测试

7、detectron2配置与部署

  • 6
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 11
    评论
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jingbo1801

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值